如何从另一个类动态获取整数?
How to get an integer dynamically from another class?
我正在用Qt做吃豆人游戏。我得到了两个类,Ghost和Pacman,它们都继承自抽象类MovableItem(这是强制性的,因为我们需要应用多态性)。
在幽灵的移动算法中,我需要吃豆人的位置,吃豆人是吃豆人中pacX
和pacY
的数据成员,试图通过比较它们的位置来让幽灵追逐吃豆人。
我尝试在Ghost中创建一个 pacman 对象,也尝试使用 get 函数来获取pacX
和pacY
。但是我在《幽灵》中得到的吃豆人的位置始终是它的起始位置。有什么方法可以在游戏运行时获得Ghost中两个数据成员的新值?
很抱歉没有具体说明。当游戏开始时,调用函数starttt
,并创建所有幽灵和吃豆人:
void MainWindow::starttt()
{
timer = new QTimer(this);
ghostTimer = new QTimer(this);
map = new PacmanMap;
pacman = new Pacman;
ghost1 = new Ghost;
ghost2 = new Ghost;
ghost3 = new Ghost;
ghost4 = new Ghost;
scene->addItem(map);
scene->addItem(pacman);
scene->addItem(ghost1);
scene->addItem(ghost2);
scene->addItem(ghost3);
scene->addItem(ghost4);
吃豆人的方向由WASD键设置并传递给吃豆人:
void MainWindow::keyPressEvent(QKeyEvent *event)
{
switch (event->key())
{
case Qt::Key_W:
if(!pacman->getMoving())
pacman->setDirection(1);
else
pacman->setNextDirection(1);
break;
在Pacman 中,pacman的起始位置在构造函数中声明,并以这种方式更改:
void Pacman::move(int)
{
QPoint p;
switch(direction)
{
case 1:
p.setX(pacX);
p.setY(pacY-5);
setDirection(direction);
if(mapmap->canMove(p))
{
pacY-=5;
moving = true;
}
else {
moving = false;
}
break;
...
...
setPacX(pacX);
setPacY(pacY);
}
}
在Ghost中,我在构造函数中创建了一个新的吃豆人,我希望幽灵通过获取其当前位置来追逐吃豆人:
void Ghost::ghostMove2()
{
if(!moving)
{
if(direction==1||direction==2)
{
if(ghostX > pacman->pacX)
direction = 3;
else if(ghostX < pacman->pacX)
direction = 4;
else if(ghostX == pacman->pacX)
{
if(ghostY > pacman->pacY)
direction = 1;
else if(ghostY < pacman->pacY)
direction = 2;
}
}
else if(direction==3 || direction==4)
{
...
...
如果你每次尝试获得这个位置时都要创建一个新的吃豆人,它将始终在起始位置。此外,如果你的Ghost
类存储的吃豆人与你正在移动并在屏幕上显示的吃豆人不同,它将(也)始终处于起始位置。
创建Ghost
时,请确保它指向正确的Pacman 对象:
int main() {
Pacman pacman = ...;
Ghost ghost = ...;
ghost.setPacman(&pacman);
}
相关文章:
- 快速扫描标准以获取整数不起作用
- 只要用户输入,如何从用户那里获取整数?
- 如何从另一个类动态获取整数?
- 控制台在获取整数后暂停
- 在某些范围更新后获取整数数组的最终状态的有效算法是什么?
- 如何从从 MPU 陀螺仪发送的字节数组中获取整数
- 如何在C 中获取整数数组的元素
- 如何打破循环以在C 中获取整数数组
- 火炬C++:使用 *.data() 获取整数张量的值<int>
- 从.txt文件中获取整数
- 从C 中的系统函数中获取整数(大于255)
- 从集合中随机给定整数 0、1 和 2 时获取整数 0、1 和 2 的快速方法
- 使用boost::random库获取整数随机值而不是实数
- 从文件 C++ 获取整数
- C++从迭代器中获取整数形式的索引值
- 如何使用zmq/zeromq从传递给python的字符串表示(字节数组)中获取整数/浮点数
- 从xml中获取整数和浮点值
- 获取整数bitset中前导1位置的最快方法
- c++中无法从stringstream中获取整数
- 如何在visual studio 2013中使用c++从文本文件中获取整数