2014-03-30 40 views
0

我被困在一项任务上,希望有人能帮助我指出正确的方向。我们应该创造这样一个游戏吃豆人和我被困在以下问题:如何在pacman游戏中编码收集点的玩家?

此举()方法也应该告诉球员,如果能够收集点。只有当玩家与点相同时,玩家才能收集点。 当玩家收集一个点时,玩家的“收集点数”应该增加1,点应该消失。当点消失时,其“存在”字段应设置为false。

我知道我应该为Dot类创建一个消失方法,并在方法内使用'if'语句将'exists'字段从true变为false,如果玩家处于与点。我们之前没有被要求为任何类创建Position方法,我们迄今为止都是; Dot类:Fields int x,int y和boolean exists = true。构造函数和toString。游戏类:Fields播放器,dot1,dot2,dot3。构造函数。移动方法和toString方法。播放器类:字段int x,int y,int collectedDots。构造函数。收集点方法只表明collectDots = 0。设置和获取方法和toString方法。所以,我不确定在Disappear方法中需要什么代码以及在没有Position类的情况下在move方法中写什么。请帮忙。

+0

那么,如果不是位置,那么点和球员的x和y字段是什么? – elias

+0

他们是,但我不知道如何写在if语句下。如果(player.getX()==? 对我没有意义,我应该为Dot类添加一个Get方法吗? – user3464437

+0

是的,我认为你应该达到玩家和点的坐标。是完全正确的,最美丽的解决方案包括建立一个位置类,它可以被点和球员使用 – elias

回答

0

您需要检查Move方法的每个电话是否有在位置上的点你会转会。所以,你要做的就是那种在移动方法,你计算并设定一个球员的新位置后:

for (Dot dot: dots) { 
    if (dot.X == player.X && dot.Y == player.Y) { 
     dot.Disappear; 
     player.collectedDots = player.collectedDots+1; 
    } 
} 

这基本上它,但你需要一种考虑到您的点和球员可能有宽度和高度(如果当点和玩家重叠但不在完全相同的位置时发生碰撞)。

+0

谢谢,这是我最初想要得到的,在分配之前我们还有一个教程日期,这将帮助我们完成它,但我只是想尽早完成它。谢谢你的提示! – user3464437