import java.awt.*; import java.io.*; import java.util.*;
import javax.swing.JFrame;
public class GameFrame extends JFrame {
public GamePanel panel = new GamePanel(this); public Snake xiaoqing = new Snake(this); public Control ct = new Control(this); public Food food = new Food(this);
public LinkedList
public void intiRocks(){ }
public void inti() { }
private Snake snake;
Properties dbconfig = new Properties(); static FileInputStream file;
public String msg() throws IOException{ }
private class SnakeDriver implements Runnable { @Override
public void run() { }
public static void main(String[] args) { GameFrame gf = new GameFrame(); } }
4
3.2.2贪吃蛇蛇身及运动设置
贪吃蛇的蛇身设置是整个游戏设计的关键。它的基本思路是:移动
的时候去掉蛇尾,将其添加在蛇头(去尾加头),吃到食物时将之前去掉的尾部在重新加上,完成蛇头吃食物的处理操作,显示蛇头。具体效果如图2-2所示。
而蛇运动的四个方向,则通过按键来控制。蛇吃到一个食物,就加分。每次食物出现的位置不能在蛇身上也不能在屏幕外面,如果蛇在运动的过程中撞到自己或者撞墙,则游戏结束,具体效果如图2-3所示。
图2-2游戏运行中的效果
5
图2-3就是蛇撞到墙之后,提示游戏结束。
附加代码: 蛇的移动
public void move() { //蛇的移动方法
if(gf.panel.isPause()) return; //判断游戏是否暂停 if(!life) return; //判断游戏是否GAME OVER tail = bady.getLast(); //记录下它尾节点 bady.removeLast(); //删除它的尾节点
int x = bady.getFirst().x; //获取它头结点的X int y = bady.getFirst().y; //获取它头节点的Y if(key + KeyBuffer != 0){ }
switch(key){ //就算其头结点坐标 }
//防止蛇跑出屏幕
2
if(x < 0) {
x = Constant.COMPANY_WIDTH - 1 ; }
if(x > Constant.COMPANY_WIDTH - 1) { x = 0; }
if(y < 0) {
y = Constant.COMPANY_HEIGHT - 1 ; }
if(y > Constant.COMPANY_HEIGHT - 1) { y = 0; }
bady.addFirst(new Point(x,y)); //在其头部加上新的X,Y坐标 }
蛇吃食物,撞墙,撞身体
public boolean eatFood(Food food) { }
public boolean eatRock(Rocks rock){ }
public boolean eatBody(){ }
3.2.3游戏控制设置
游戏控制设置就是控制游戏的暂停与开始及重新游戏。W、S、A、D或
上、下、左、右键控制蛇的上、下、左、右移动,设置enter按键来暂停或开始进行中的游戏,设置F1来重新开始游戏。
3