
【摘 要】“贪吃蛇”游戏是一个简单而大众的游戏,它因操作简单、娱乐性强而广受欢迎。本文基于Java技术和Eclipse开发环境,开发了一个操作简单、界面美观、功能较齐全的“贪吃蛇”游戏。整个游戏程序分为四个类模块,主要实现了蛇从默认方向开始移动,通过方向键来改变蛇的运行方向,在随机的地方产生食物,吃到食物就变成新的蛇体,碰到壁或自身则游戏结束的过程。通过本游戏的开发,达到学习Java技术和熟悉软件开发流程的目的。
【关键词】Java;Eclipse;“贪吃蛇”游戏
近年来,Java作为一种新的编程语言,以其简单性、可移植性和平台无关性等优点,得到了广泛地应用,特别是Java与万维网的完美结合,使其成为网络编程和嵌入式编程领域的首选编程语言。Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台,同时它也是是著名的跨平台的自由集成开发环境,它以其友好的开发界面、强大的组件支持等优点,得到广大程序员的接受和认可。
贪吃蛇是人们手机中是一个很常见的一个经典小游戏,人们对它并不陌生,在紧张的现实生活中给人们带来了不少的乐趣,编写这个贪吃蛇小游戏能让人们在业余时间里适当的放松,保持好的心态。
在这个程序中我采用了Java中的图形用户界面技术,同时引入了线程来编写。本次设计主要是对我之前所学Java知识的一个巩固,不仅提高了我综合运用以前所学知识的能力,同时也锻炼了我的实际动手能力。整个游戏代码简单易懂,用户在娱乐的同时也可以简单的看一下代码,有助于初涉Java者语言水平的提高。
贪吃蛇的核心算法是如何实现移动和吃掉食物,在当前运动方向上头指针所指的位置之前添加一个节点,然后删除尾节点,最后把链表中的所有节点依次画出来,这样就可以达到移动的效果。对是否吃到食物,需要对蛇和食物进行碰撞检测,检测未碰撞在一起则只需要执行移动操作,碰撞在一起时表示吃到食物,则只需把食物入队即可,即在蛇的节点链表上再添加一个节点,从而达到身体增长的效果。
本次设计的重点之处在于编程思想的形成,设计图像界面,产生随机食物及其位置。难点在于程序编写中,整个程序框架的架构。这就要求我们不仅要对这个游戏的玩法特别熟悉,而且还要熟练掌握Java语言。
实现贪吃蛇的四个类模块,分别为游戏界面、蛇、食物和方向。其具体设计如下:
1 产生游戏界面Yard.java
包括界面的位置、大小的设定,绘制游戏界面,启动键盘。
1)在 launch()中添加代码:
this.setBounds(200,200,COLS*BLOCK_SIZE,ROWS*BLOCK _SIZE);设定界面的位置、大小。
this.setVisible(true);
this.addKeyListener(new KeyMoniter());添加键盘,以便随时更改蛇头方向
new Thread(new PaintThread()).start();启动线程,不停的重画画面
2)为使得界面不断更新,需借助线程来完成,线程如下:
private class PaintThread implements Runnable{
private boolean flag=true;
public void run() {
while(flag){
repaint();
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
if(gameOver){
flag=false;
}
}
}
}
通过在循环体中设置每休眠200毫秒则重画一次界面,使得界面不断更新,当蛇移动时产生一个动画的效果。
3)绘制游戏界面
public void paint(Graphics g){
Color c=g.getColor();
g.setColor(Color.cyan);
g.fillRect(0, 0, ROWS*BLOCK_SIZE, COLS*BLOCK_SIZE);
g.setColor(Color.black);
for(int i=1;i } for(int i=1;i } //每次重画时,判断蛇是否吃到蛋 s.eat(e); //分别把蛇和食物画出来 s.draw(g); e.draw(g); //显示最新的得分情况 g.setColor(Color.red); g.setFont(new Font(”宋体”,Font.BOLD,20)); g.drawString(”score:”+score, 20, 60); //判断游戏是否结束,如果结束则给出文字提示
