java贪吃蛇实验
篇一:Java期中课程
报告-贪食蛇
Java期中课程设计报告
题目:
贪食蛇游戏程序
姓 名:
学 号:
院 系:
专 业:
年 级:
贪吃蛇游戏程序设计
一、基本内容描述
运用java技术开发出贪吃蛇游戏,这个程序是用一个小矩形表示蛇的一节身体,身体每长一节,增加一个矩形块。移动时必须从蛇头开始,也就是蛇尾不能改作蛇头。当游戏者按了方向键后,蛇头朝着指定的方向移动,一步移动一节身体。图形的实现是从蛇头的新位置开始画出蛇。用户可以用上下左右键控制蛇头的方向,用空格键暂停或继续,非常简单~
可以实现如下功能:
1. 贪吃蛇游戏是大家很常见的小游戏,在生活工作之余大家可
以玩它,已达到放松各种压力的目的。
2. 游戏可以进行升级,也就是增加吃食物的难度,以便使大家更有挑战性,不觉得太无趣。
3. 游戏界面大小可以任意指定,数据从文件读入。
4. 利用swing实现良好的GUI界面。
二、需求
(一)系统功能要求:
1. 利用方向键来改变蛇的运行方向。
2. 空格键暂停或继续游戏,并在随机的地方产生食物。
3. 吃到食物就变成新的蛇体,碰到壁或自身则游戏结束,否则正常运行。
(二)系统设计思路:
1. 贪吃蛇是很经典的格子游戏。所谓格子游戏就是在设计游戏时的主要思想是每个设对象都是由格子组成,游戏运行界面也是由格子组成。格子思想决定了此类游戏在设计时的算法思想。
2. 方向键控制一个方块的移动的方法,一个方块的移动是靠移动其坐标位置来实现的。
3. 方向键控制是上下左右对一个方块的控制,用四个判断语句实现。
4. 蛇的移动算法思想可以看成是第一个方块移动,第二个方块移到第一个方块的位置, 第三个方块移动到第二个方块的位置??第N个方块移动到第N-1个方块的位置。这样连续的移动就是蛇
的移动了。方向控制键控制了第一个方块的移动后,后面方块跟着移动 ,这样也实现了方向键控制对长蛇的移动。
5. 食物的随机产生的方法食物的随机产生需要一个随机种子函数然后利用系统时间做为随机种子。
6. 蛇的身体变长的方法当然要当蛇吃
到食物时才能使身体变长。因此有两个需要解决的问题:问题一:如何知道是否吃到食物,问题二:吃到食物后身体变长,解决问题一的方法是需要一个判断语句,当蛇头即构成蛇的第一个方块跟食物所在方块的坐标一样时判断吃到食物。解决问题二则要相对复杂一些,需要多个判断语句构成。
7. 游戏结束的方法,当蛇碰到边框时或者吃到自己时游戏结束。根据这个思想可以用判断语句实现 。然后是游戏结束后的处理,比如显示继续玩游戏还是退出游戏,并显示所吃到的食物的个数和时间等。
三、系统设计
1. 总体设计和个模块设计
import javax.swing.*;
import java.util.ArrayList;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.*;
public class Snake extends JFrame
{
final static int Width = 340;
final static int Height = 450;
final static int nodeWidth = 10;
final static int nodeHeight = 10;
//蛇身的坐标
static int x;
static int y;
//食物的坐标
static int fx;
static int fy;
static ArrayListNodesnakebody;//设置蛇身
static int key ;
static int l;
static int t;
static int speed;
static Timer timer;
static JLabel b=new JLabel(""+l); //计分数的
static JFrame sframe;//框架
//设置蛇的坐标
public static class Node
{
int x;
int y;
int s;
Node(int x, int y)
{
this.x = x;
this.y = y;
}
}
//游戏面板
public static class Gamepanel extends JPanel
{
public Gamepanel()
{
JPanel o=new JPanel();
JLabel a=new JLabel("SCORE");
o.add(a);
o.add(b);
o.setLayout(new FlowLayout(FlowLayout.LEFT,30,0));
add(o,BorderLayout.NORTH);
timer=new Timer(speed,new TimerListener()); timer.start();
}
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
//将游戏背景填充成白色
g.setColor(Color.WHITE);
g.fillRect(0,25,340,450);
switch(key)
{
case 0: eatfood(x,y+10);y=y+10;break;case 1: eatfood(x,y-10);y=y-10;break;case 2: eatfood(x-10,y);x=x-10;break;case 3: eatfood(x+10,y);x=x+10;break;default: ;
}
snakebody.remove(snakebody.size()-1);
//模拟移动,头部加一个尾部减一个
//如果吃上食物,则重新产生食物
if(x==fx&&y==fy)
{
eatfood(fx,fy);
l++;
changefood();
}
//刷新时间
speed=80-(l/10)*10;
//使速度改变
timer.setDelay(speed);
//将蛇头和蛇身还有食物填充在白色的背景下
篇二:Java程序设计报告《贪吃蛇》
《Java程序设计》
课程设计报告
题目:贪吃蛇游戏的设计与实现
指导老师: 沈泽刚
专 业: 计算机科学与技术
班 级:10-3
姓 名: 梁潇
一、 课程设计目的
贪吃蛇游戏一款非常经典的手机游戏,因为它比较简单有趣,无
论老少都比较适合。目的是更好地了解和掌握java语言,并熟练的运用java语言来实现项目。培养自主学习的能力。
本软件在设计方面本着方便、实用及娱乐性高的宗旨,在外界
进行设计的过程中,始终坚持清晰明了,在性能方面能够实现效率高,不易出错等优点。
二、 课程设计要求
贪吃蛇游戏设计与实现,主要分为以下二个模块:游戏主界面模块、游戏控制模块。
三、 课程设计报告内容
(一) 系统设计
1、程序概述
本程序是一个利用Java应用软件制作的贪吃蛇小游戏。 在游戏过程中,用户通过点击小键盘区的方向键来控制蛇的运行方向;当蛇没有吃到食物且碰到墙壁或自己的身体时游戏结束。 本程序的另一个功能是在程序运行窗口的左上角显示,用户在游戏过程中所得的分数,不过缺点就是在退处程序后,下次打开程序时无法保存。
2、游戏的主界面设计
游戏的主界面是进入游戏后,能够给玩家第一感官的部分,主
要包括游戏图形区域界面、游戏的速度选择更新界面、游戏分数的显示更新界面、游戏开始按钮、暂停游戏按钮、退出游戏按钮以及游戏排行榜按钮。
3、游戏控制模块设计
这个模块是游戏的中心环节,主要完成控制游戏的开始、暂停、退出等功能。为了能够给玩家一个很好的游戏环境,这部分应该
做到易懂、易操作。
(二) 主界面设计
游戏界面主框架主要包括游戏图形区域界面、游戏的开始
按钮、暂停按钮、游戏的退出按钮、困难程度、积分排行、关
于作者。
(三) 代码设计
import java.awt.Color;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.*;
public class TanChiShe extends JFrame implements
ActionListener, KeyListener,Runnable
{
private JMenuBar menuBar;
private JMenu
youXiMenu,nanDuMenu,fenShuMenu,guanYuMenu; private
JMenuItem kaiShiYouXi,exitItem,zuoZheItem,fenShuItem;
private JCheckBoxMenuItem cJianDan,cPuTong,cKunNan;
private int length = 6;
private Toolkit toolkit;
private
i,x,y,z,objectX,objectY,object=0,growth=0,time;
private int difficult=2;
private int m[]=new int[50];
private int n[]=new int[50];
private Thread she = null;
private int life=0;
private int foods = 0;
private int fenshu=0;
public void run() //运行
{
time=500;
for(i=0;i=length-1;i++)
{
m[i]=90-i*10;n[i]=60;
}
x=m[0];
y=n[0];
z=4;
while(she!=null)
{
check();
try
{
she.sleep(time);
}
catch(Exception ee)
{
System.out.println(z+"");
}
}
}
public TanChiShe()
{ int
//***************创建新对象**************
setVisible(true);
menuBar = new JMenuBar(); Container con=getContentPane();
toolkit=getToolkit();
//**************游戏菜单对象***************** youXiMenu
= new JMenu("游戏");
kaiShiYouXi = new JMenuItem("开始游戏");
exitItem = new JMenuItem("退出游戏");
//***************困难程度对象**************** nanDuMenu = new JMenu("困难程度");
cJianDan = new JCheckBoxMenuItem("简单"); cPuTong = new JCheckBoxMenuItem("普通");
cKunNan = new JCheckBoxMenuItem("困难");
//*****************分数菜单对象**************** fenShuMenu = new JMenu("积分排行");
fenShuItem = new JMenuItem("最高记录");
//****************关于对象
*********************guanYuMenu = new JMenu("关于
");
zuoZheItem = new JMenuItem("关于作者");
//***************设置关于菜单******************* guanYuMenu.add(zuoZheItem);
//****************设置困难程度菜单
**************nanDuMenu.add(cJianDan);
nanDuMenu.add(cPuTong);
nanDuMenu.add(cKunNan);
篇三:疯狂贪吃蛇java实现课程设计报告
安阳工学院
计算机科学与信息
学院
JAVA程序设计课程综合项目报告
项目题目:
专业班级:
学生姓名:
学生学号: 疯狂贪吃蛇 11计科信息 潘 强 201103020005
指导教师姓名: 许研
2013年12月
目录
一、系统目标 ............................................. 3
二、系统设计思路 ......................................... 3
三、系统详细设计 ......................................... 4
四、系统实现 ............................................. 8
五、系统设计
........................................ 14
六、参考文献 ............................................ 15
疯狂贪吃蛇
一、系统目标
运用java技术开发出贪吃蛇游戏,这个程序是用一个小矩形表
示蛇的一节身体,身体每长一节,增加一个矩形块。移动时必须
从蛇头开始,也就是蛇尾不能改作蛇头。当游戏者按了方向键后,
蛇头朝着指定的方向移动,一步移动一节身体。图形的实现是从
蛇头的新位置开始画出蛇。用户可以用上下左右键控制蛇头的方
向。非常简单~
可以实现如下功能:
1. 贪吃蛇游戏是大家很常见的小游戏,在生活工作之余大家可以玩它,已达到放松各种压力的目的。
2. 游戏可以进行升级,也就是增加吃食物的难度,以便使大家更有挑战性,不觉得太无趣。
3. 游戏界面大小可以任意指定,数据从文件读入。
4. 利用swing实现良好的GUI界面。
二、系统设计思路
1. 贪吃蛇是很经典的格子游戏。所谓格子游戏就是在设计游戏时的主要思想是每个设对象都是由格子组成,游戏运行界面也是由格子组成。格子思想决定了此类游戏在设计时的算法思想。
2. 方向键控制一个方块的移动的方法,一个方块的移动是靠移动其坐标位置来实现的。
3. 方向键控制是上下左右对一个方块的控制,用四个判断语句实现。
4. 蛇的移动算法思想可以看成是第一个方块移动,第二个方块移到第一个方块的位置, 第三个方块移动到第二个方块的位置??第N个方块移动到第N-1个方块的位置。这样连续的移动就是蛇的移动了。方向控制键控制了第一个方块的移动后,后面方块跟着移动 ,这样也实现了方向键控制对长蛇的移动。
5. 食物的随机产生的方法食物的随机产生需要一个随机种子函
数然后利用系统时间做为随机种子。
6. 蛇的身体变长的方法当然要当蛇吃到食物时才能使身体变长。因此有两个需要解决的问题:问题一:如何知道是否吃到食物,问题二:吃到食物后身体变长,解决问题一的方法是需要一个判断语句,当蛇头即构成蛇的第一个方块跟食物所在方块的坐标一样时判断吃到食物。解决问题二则要相对复杂一些,需要多个判断语句构成。
7. 游戏结束的方法,当蛇碰到边框时或者吃到自己时游戏结束。根据这个思想可以用判断语句实现 。然后是游戏结束后的处理,比如显示继续玩游戏还是退出游戏,并显示所吃到的食物的个数和时间等。
三、系统详细设计
【类的设计】
1.创建的类的描述。
1. Login类,登陆界面要求输入登陆者输入用户名和密码,分别设Go和Cancel
2.SnakeFrame类,创建游戏窗口主界面。采用图形界面设计,有窗体,菜单栏和游戏操作界面。
3.SnakeModel类,此类为蛇的初始化状态及模型,所有的游戏的开始都通过此类初始化及对蛇的操作。
4.
5. LocationRO类,随机生成的食物位置。用来随机生成食物。
引导蛇的移动方向。
6. Location类,对蛇的位置的描述类。
2.类之间的调用关系。
1. 登陆界面 2. 游戏主界面