gpt4 book ai didi

c++ - Qt 中的 2D 游戏 : Initializing monsters and passing dynamically allocated array as a pointer parameter

转载 作者:太空宇宙 更新时间:2023-11-04 11:51:57 25 4
gpt4 key购买 nike

<分区>

我正在使用 Qt Framework 创建一个 2D 游戏。虽然我确实有一些其他语言的经验,但 C++ 对我来说是一种新语言。

我的第一个问题是关于怪物的。我应该如何初始化(并存储它们)?我游戏的每个级别都有不同数量的怪物。此时我以这种方式初始化它们:

    Monster *mobs;
mobs = new Monster[mobsQuantity];

但我不确定这是最好的方法。此外,每一秒, map 上的每个生物都必须移动 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;
}
}
}

有没有更好的方法来做到这一点?

我的第二个问题是将 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]);

但是我的程序崩溃了。

感谢所有愿意帮助我的人。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com