2014-03-30 41 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