如何使用C 中的类将随机值从一个函数传递到另一个函数

How do I pass a random value from one function to another function using classes in C++?

本文关键字:函数 一个 另一个 何使用 随机      更新时间:2023-10-16

我有一个代码示例,用于我使用的某些框架。为了易于阅读,我将代码块与不同文件分开。

tile.h

class Tile
{
public:
    Tile(int row, int column);
    ~Tile();
    void Draw();
    void Update(double delta);
    void SetValue(int value);
    int GetValue();
private:
    //Member variables
    Label* m_ValueLabel;
    int m_Value = 0;
    int m_Row;
    int m_Column;
    float duration = 0.0f;
    float xScale = 0;
    float yScale = 0;
};

tile.cpp

void Tile::SetValue(int value)
{
    //Set the Tile's value
    m_Value = value;
    //if (m_Value != EMPTY_TILE)
    {
        //Update the Tile's Label
        m_ValueLabel->SetText(to_string(m_Value));
    }
    /*else
    {
        m_ValueLabel->SetText("");
    }*/
}

game.h

class Game
{
public:
    Game();  //Constructor
    ~Game(); //Destructor
    void Update(double delta);
    void Draw();
    void HandleLeftMouseClick(float mouseX, float mouseY);
    void HandleRightMouseClick(float mouseX, float mouseY);
    void HandleKeyPress(Keyboard::Key key);
    bool isBoardFull();
    int GetEmptyTileIndex();
    void SpawnTile();
    void RandomizeSeed();
    int RandomRange(int min, int max);
private:
    //Member variables should go here
    Tile* m_Tiles[NUM_TILES];
    bool isTileFull[16] = {};
    int TileValueArray[5] = { 2,2,2,4,4 };
};

game.cpp

void Game::SpawnTile()
{
    RandomizeSeed();
    int meaningfulVariableName = GetEmptyTileIndex();
    if (meaningfulVariableName != -1)
    {
            int RandomNumber = RandomRange(0,4);
            int TileValue = TileValueArray[RandomNumber];
    }
    else if (meaningfulVariableName == -1)
    {
        //Does nothing
    }
}

我需要做的是使之做的,以便可以在game.cpp中创建的质量值传递到tile.cpp中的setValue函数,因为setValue中m_value创建的值所需的值。

中的m_value。

可能会忽略存在的大多数代码,并且任何评论的内容都不应影响我目前需要代码来运行的方式。这些文件之外的框架没有错,因为我以前已经使用过几次。

我知道有更简单的方法可以做到这一点,但这就是我需要做的方式。如果有人能帮助我,我真的很感激,因为我在网上发现的任何东西都没有帮助。如果您认为可能需要更多的代码来澄清某些内容,请随时提出。另外,如果它可以帮助我使用它来创建2048克隆。

您有一个函数Game::GetEmptyTileIndex,该功能将返回索引。您可以通过更改Game::SpawnTile功能这样的索引来设置Game::m_Tiles

// Game.cpp
void Game::SpawnTile()
{
    RandomizeSeed();
    // Returns a tile index.
    int meaningfulVariableName = GetEmptyTileIndex();
    if (meaningfulVariableName != -1)
    {
            int RandomNumber = RandomRange(0,4);
            int TileValue = TileValueArray[RandomNumber];
            // Set the value for the tile at the required index.
            m_Tiles[meaningfulVariableName]->SetValue(TileValue);
    }
    else if (meaningfulVariableName == -1)
    {
        //Does nothing
    }
}

相关文章: