【发布时间】:2019-07-09 23:33:17
【问题描述】:
我使用 allegro4 和 C++ 为一种类型的敌人创建了一个类;在这个类中,我有一个使移动精灵的函数,如下所示:
sprite_one(x, y);
sprite_two(x2, y2);
class enemy{
public:
void mov(){
x++;
----
y--;
}
}
};
enemy test_one;
test_one.mov(); // this works because its coordinates are x and y
enemy test_two;
test_two.mov(); // this doesn't work, its coordinates are x2 and y2
问题是当我创建对象时,第一个可以根据函数移动(更新变量x和y),其他的不能,因为它们调用位置变量的方式不同。我该如何解决这个问题?
【问题讨论】:
-
首先,
x和y是什么?它们看起来像全局变量,但面向对象的设计原则说它们应该是class enemy的成员变量,这意味着每个enemy都可以有自己的坐标。第二......这个----在mov函数中间做了什么?这应该在注释中,不要干扰下一行代码。 -
函数中间只有变量的增减。我创建了 int x 和 int y 作为全局变量,对于 x2 和 y2 也是一样的。我应该在函数中声明它们吗?
-
我觉得你需要搜索一个关于C++类成员的在线教程。
标签: c++ function class allegro allegro4