如果我在子类中运行AI,我会遇到问题。
这是我的主要循环,其中访问玩家和敌人的 Action ,逻辑和表演功能类。
//Logic
myPlayer.player_move();
myEnemy.enemy_logic();
//Rendering
myPlayer.player_show();
myEnemy.enemy_show();
因此,我访问了播放器类的可移动播放器的函数,然后访问了敌人类的逻辑(AI)函数。
void Enemy::enemy_move(){
eX -= 2;
}
void Enemy::enemy_logic(){
Player myPlayer;
if(myPlayer.x > SCREEN_WIDTH / 2){
enemy_move();
}
}
因此,如果“玩家”的x值大于屏幕的一半,我希望敌人开始向左移动
我可以编译程序,但是当我将播放器移过屏幕的中点时,敌人什么也没做。如果我将这个if语句放在main.cpp中,那么它将正常工作。有什么建议吗?
最佳答案
这是因为您正在重新初始化Player
类的实例。而是将其作为参数传递:
void Enemy::enemy_logic(Player myPlayer){
if(myPlayer.x > SCREEN_WIDTH / 2){
enemy_move();
}
}
这样,函数将使用您的实例,而不是其他作用域中的新实例。
关于c++ - C++ Game AI仅在主版本中有效,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17912344/