2011-10-20 78 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中使用类似的四人帮的设计模式的应用程序,如果你想了解如何设置了进一步的参考。