Qt Framework を使用して 2D ゲームを作成しています。私は他のいくつかの言語の経験がありますが、C++ は私にとって一種の新しい言語です。
最初の質問はモンスターについてです。どのように初期化(および保存)すればよいですか? ゲームのレベルごとにモブの数が異なります。現時点では、次のように初期化します。
Monster *mobs;
mobs = new Monster[mobsQuantity];
しかし、これが最善の方法であるかどうかはわかりません。また、マップ上に配置されたすべての Mob は、毎秒 1 ポジションずつ移動する必要があります。モブを動かす関数です。
void MainWindow::moveMobs(){
int random[mobsQuantity]; // Different random position move for each monster.
for(int a = 0; a < mobsQuantity; a++){
random[a] = qrand() % 5; // Initialize the moves
}
for(int a = 0; a < mobsQuantity; a++){
int x = mobs[a].x();
int y = mobs[a].y(); // Take the position for each different mob
switch(random[a]){
case NORTH:
// Collision detection and movement
break;
case SOUTH:
// Collision detection and movement
break;
case WEST:
// Collision detection and movement
break;
case EAST:
// Collision detection and movement
break;
}
}
}
これを行うより良い方法はありますか?
私の 2 番目の問題は、Monster クラスを関数に渡すことです。Monster は QGraphicsItem から派生しています。各モブの正しい位置を設定し、それを QGraphicsScene に追加する関数をメイン ウィンドウに用意しました。私のコードは次のようになります。
void MainWindow::createMobs(){
for(int a = 0; a < mobsQuantity; a++){
mobs[a].setPos(/* X pos */ , /* Y pos */);
scene->addItem(mobs[a]);
}
}
エラーは、アイテムをシーンに追加したときに発生します。動的に割り当てられた配列の要素をポインターとして適切に渡すにはどうすればよいですか?
error: no matching function for call to 'QGraphicsScene::addItem(Monster&)'
次のように追加してみました。
scene->addItem(&mobs[a]);
しかし、私のプログラムはクラッシュします。
私を助けようとするすべての人に感謝します。