【问题标题】:Need help to do a array to Snake game in Greenfoot需要帮助在 Greenfoot 中进行 Snake 游戏的阵列
【发布时间】:2011-10-20 19:19:01
【问题描述】:

在学校有一项新任务从头开始编写 Snake 游戏,当 Snakehead 吃食物时需要使用数组添加新的 Snake 身体部位,并且一开始 Snake 需要有 1 个头部和 2 个身体部位..和我不知道该怎么做..有人可以帮助我正确的方向..如何开始?到目前为止,这是我的代码:

世界:

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;
}

}
}

【问题讨论】:

  • 我不确定您的问题是什么。数组是如何工作的?
  • nej frågan är hur jag ska gå till väga för att skapa en array som addar en ny kroppsdel​​ varje gång min snake äter mat..jag är helt ny until 编程 och har inte fått in det rätta tänket ännu

标签: arrays greenfoot


【解决方案1】:

我感觉你的问题比简单的数组处理更笼统。

看起来你正试图在你的蛇类中加入很多精灵交互逻辑。

可能更好的主意是将用户输入移到其他地方,并让游戏板将状态更改传达给各种精灵(蛇、食物、墙等),包括碰撞检测。如果游戏板检测到蛇和食物之间的碰撞,它会将食物精灵移动到下一个位置并在游戏中的蛇对象上调用 Eat()。如果它检测到蛇与自身发生碰撞,则游戏将结束。

让蛇在棋盘上绘制自己或至少存储它的显示信息以供棋盘处理并不是不合理的。蛇对象可以有一个数组(或者更好的是一个 ArrayList)来存储组成蛇的块的坐标。随着蛇的移动,您可以在数组上递增并更改点以考虑移动方向和移动距离。如果我正在实现它,我会使用一组枢轴点来告诉蛇在穿过棋盘时如何转动蛇的碎片。当枢轴点不再有效(蛇不再有任何穿过枢轴的部分)时,我会将其从数组中删除。

只是我的建议。我不以制作游戏为生,所以我相信还有更好的方法来做。

*如果您想进一步了解如何设置它,您可以在“四人组”的设计模式中找到类似 InDesign 的应用程序中使用前者的示例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-01
    • 2018-04-10
    • 2015-04-04
    • 1970-01-01
    • 1970-01-01
    • 2016-06-25
    • 2012-06-05
    相关资源
    最近更新 更多