我想知道在小游戏中实现计算机和人类之间移动的交替切换的更好方法。 计算机首先播放,而不是人类播放,只需点击一些按钮,再次点击计算机,人类等等。
frame.computerPlaysRandom();
while(!frame.end)
{
//if(frame.alreadyExecuted)
// {
frame.computerPlaysRandom();
// }
// frame.computerPlaysRandom();
}
我想把布尔变量haveExecuted放在最后 humanPlays方法,但它不起作用。
public void computerPlaysRandom()
{
......
if(activeColour == RED)
{
.....
}
activeColour = YELLOW;
}
我不喜欢这种方式首先它看起来不自然,就像人类和电脑在同一时间播放一样。另一个是它不断循环。
我尽力解释,请告诉我更好的方法。
答案 0 :(得分:4)
作为@ Andrew Thompson comments,"游戏模型应该跟踪它的游戏。"我们会检查一个简单的MVC示例游戏here。在这个更复杂的回合制game中,当按下一个键时,玩家会移动以逃避前进的敌人。看到here的密钥处理程序使用给定的Key
调用游戏模型的move()
方法:
game.move(k.getMove());
游戏模型的move()
方法会更新玩家的位置并相应地移动敌人。然后,模型在调用moveBots()
时触发更新事件。然后,每个监听视图呈现其新游戏状态的部分。例如,RCView
绘制新的玩家/敌人位置,其他视图更新分数和状态显示。
如果您的模型的游戏逻辑过于复杂,可能会使event dispatch thread变慢。如果是,请在SwingWorker
的背景中运行模型。