2011-10-20 92 views
0

上學時新任務從頭開始編寫的貪吃蛇遊戲,並需要使用數組中添加一個新的蛇身體部位時,蛇頭吃的食物,並在一開始的蛇需要有1個頭和2個身體部位..我不知道如何做到這一點..有人在那裏幫助我正確的方向..如何開始?這是我到目前爲止的代碼:需要幫助做一個數組的貪吃蛇遊戲在Greenfoot中

世界:

public class WorldofSnake extends World 
{ 

    /** 
    * Constructor for objects of class WorldofSnake. 
    * 
    */ 
    public WorldofSnake() 
    {  

     super(600, 400, 1); 

     addObject (new Snake(),70 , 50); 
     addObject (new Food(), Greenfoot.getRandomNumber(600), Greenfoot.getRandomNumber(400)); 
    } 
} 

類蛇:

import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) 

/** 
* Write a description of class Snake here. 
* 
* @author (your name) 
* @version (a version number or a date) 
*/ 
public class Snake extends Actor 
{ 

private int foodEaten; 



public Snake() 
{ 
    foodEaten = 0; 
} 


public void act() 
{ 
     checkKeypress(); 
     lookForFood(); 
    } 

    public void checkKeypress() 
    { if(Greenfoot.isKeyDown("left")){ 
     setLocation(getX() - 2,(getY())); 
    } 
     if(Greenfoot.isKeyDown("right")){ 
     setLocation(getX() + 2,(getY())); 
    } 
     if(Greenfoot.isKeyDown("up")){ 
     setLocation(getX() ,(getY() - 2)); 
    } 
     if(Greenfoot.isKeyDown("down")){ 
     setLocation(getX() ,(getY() + 2)); 
} 

} 
public void lookForFood() 
{ 
    Actor a = getOneIntersectingObject(Food.class); 
    if (a !=null) 
{ 
    getWorld().removeObject(a); 
    getWorld().addObject (new Food(), Greenfoot.getRandomNumber(600), Greenfoot.getRandomNumber(400)); 
    foodEaten = foodEaten + 1; 
} 

} 
} 
+0

我不確定你的問題在這裏。數組如何工作? –

+0

NEJfråganAR許JAG斯卡GA直到瓦加FÖRATT skapa烯陣列索姆亞達烯NY kroppsdel​​ varje綱分鐘蛇亞特mat..jag AR helt NY直到programmering OCH HAR INTE FATT在DETrättatänketännu –

回答

1

我越來越覺得你的問題是不是簡單的數組處理比較一般。

它看起來像你試圖把很多精靈交互邏輯的在你的蛇類。

可能是一個更好的辦法是將移動到其他位置的用戶輸入,並具有遊戲板通信狀態改變到不同的精靈(蛇,食品,壁等),其包括碰撞檢測。如果遊戲板檢測到蛇與食物之間發生碰撞,它會將食物精靈移動到下一個位置,並在遊戲中調用蛇的對象()。如果它檢測到蛇與自身之間發生碰撞,則遊戲結束。

它不會是不合理的讓蛇畫本身的板*或至少保存它的顯示信息,董事會辦理。蛇對象可以有一個數組(或者更好的是一個ArrayList),它存儲組成蛇的塊的座標。隨着蛇的移動,您可以在陣列上遞增並更改點以考慮移動的方向和移動的距離。如果我正在實施它,我會使用一系列樞軸點來告訴蛇在穿過板時如何轉動蛇的碎片。當樞軸點不再有效時(蛇不再有任何穿越樞軸的部分),我會將它從陣列中移除。

只是我的建議。我不以遊戲爲生,所以我相信還有更好的方法來做到這一點。

*您可以發現前者的例子在InDesign中使用類似的四人幫的設計模式的應用程序,如果你想了解如何設置了進一步的參考。