私は、使用しているフレームワークのサンプルコードを用意しています。読みやすくするために、私は別のファイルからコードブロックを分離しています。C++のクラスを使用して、ある関数から別の関数にランダムな値を渡すにはどうすればよいですか?
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で作成されたTileValueが、SetValueのm_Valueに作成された値が必要であるため、Tile.cppのSetValue関数に渡すことができるようにすることです。
現在のコードの大部分は無視されている可能性があります。コメントアウトされたコードは、現時点でどのようにコードを機能させる必要がありますか。これらのファイル以外のフレームワークには何も問題はありません。前に何回か使用したからです。
私はこれを行う簡単な方法があることを知っていますが、これはどのように私はそれを行う必要があります。オンラインで見つかったものが役に立たなかったので、誰かが私にこれを手伝ってもらえると本当に感謝しています。あなたが何かを明確にするためにもっとコードを必要とするかもしれないと思うなら、躊躇しないでください。また、私が2048クローンを作成するために使用している場合に役立ちます。
はあなた 'SpawnTile'機能を使用すると、' newTile->のSetValue(XX)を行うことができます上の 'Tile'オブジェクトを返しません'?その名前が言うことはしません。 – usr2564301
「HandleLeftClick」と他のハンドルは、与えられた入力をうまく処理したかどうかを知るために、 'bool'またはsmple列挙型を返さなければなりません。 'RandomizeSeed'は' Game'クラスの外側から見えるようには聞こえないので、私的な部分(または少なくとも保護されている部分)への移動が推奨されます。これは、内部ヘラー関数のように見える 'RandomRange()'にも当てはまります。前述のように、 'SpawnTile'は作成された' Tile'オブジェクトを返すか、 'Tile'へのポインタを返します。この場合、' void'は直感的です。 –
さて、どのタイル**の値を設定しますか? – immibis