Java贪吃蛇报告

合集下载

贪吃蛇java实验报告doc

贪吃蛇java实验报告doc

贪吃蛇java实验报告篇一:JAVA贪吃蛇课程设计报告《Java应用开发》课程设计报告题目:指导老师:姓名:专业:班级:日期:JAVA小游戏 - 贪吃蛇目录一、系统总体设计 ................................. 1 (一)设计目标及完成功能 ........................ 1 (二)系统结构设计 .............................. 1 二、详细设计 ..................................... 2(一) 界面设计 ................................... 2 (二) 系统设计 ................................... 4 (三) 关键技术及算法 ............................. 6 四、测试 ......................................... 7五、安装使用说明 ................................. 7总结(体会) ..................................... 8参考文献 .. (8)一、系统总体设计(一)设计目标及完成功能本软件是针对贪吃蛇小游戏的JAVA程序,利用上、下、左、右方向键来改变蛇的运动方向,长按某个方向键后,蛇的运动速度会加快,在随机的地方产生食物,吃到食物就变成新的蛇体,碰到壁或自身则游戏结束,否则正常进行游戏,在到达固定的分数后,游戏速度会加快。

1.窗口功能说明:设计了三个窗口,分别是游戏主窗口,成绩窗口,游戏帮助和关于作者窗口。

2.菜单栏分别为:游戏菜单和帮助菜单其中,游戏菜单包括开始游戏和退出游戏两项;帮助菜单包括游戏帮助和关于作者两项。

(二)系统结构设计图1-1 系统结构图二、详细设计(一) 界面设计贪吃蛇游戏的基本运行界面(1)生成初始界面:图2-1 初始界面(2)游戏菜单栏:图2-2 游戏菜单(2)积分排行菜单栏:图2-3 积分排行菜单(3)进行游戏界面:点击“游戏”,进入游戏菜单,选择“开始游戏”,或者使用快捷键“Ctrl+O”来开始游戏。

java贪吃蛇课程设计报告总结

java贪吃蛇课程设计报告总结

课程设计报告:Java贪吃蛇游戏1. 背景贪吃蛇是一款经典的街机游戏,通过控制蛇的移动,吃掉食物,使蛇变得越来越长,直到触碰到边界或自己的身体为止。

该游戏在20世纪80年代流行起来,并成为了一种代表性的休闲娱乐方式。

贪吃蛇游戏可以提高玩家的反应能力、体力协调和空间感知能力。

本次课程设计旨在通过使用Java编程语言,设计实现一个简化版的贪吃蛇游戏,以加深学生对面向对象程序设计的理解和应用,并培养学生的逻辑思维能力和团队协作精神。

2. 分析2.1 游戏规则分析在贪吃蛇游戏中,玩家通过控制蛇的移动方向,使蛇吃到食物从而变长,直到游戏结束。

具体规则如下:•初始状态下,蛇由一个长度为3的身体组成,呈水平放置。

•蛇的移动方式为每个时间单位(通常为固定时间间隔)前进一格,移动方向由玩家通过键盘输入控制。

•蛇在吃到食物后,身体变长一节,并在地图上随机生成新的食物。

•蛇头碰到地图边界或自身身体的任意部分,游戏结束。

2.2 功能模块分析基于对游戏规则的分析,可以将贪吃蛇游戏的功能模块划分如下:•游戏初始化模块:初始化地图、蛇的初始位置和长度、生成初始食物等。

•用户输入模块:读取用户的键盘输入,控制蛇的移动方向。

•游戏逻辑模块:根据用户输入和游戏规则,更新蛇的位置、判断是否吃到食物或撞到障碍物等。

•地图绘制模块:将地图、蛇、食物等元素绘制到屏幕上。

•游戏循环模块:根据固定时间间隔循环执行游戏逻辑、用户输入和地图绘制等操作。

•游戏结束模块:在游戏结束时输出游戏得分等信息。

2.3 设计思路基于上述功能模块的分析,我设计了如下的实现思路:1.使用Java面向对象编程的思想,抽象出地图、蛇、食物等对象,并为其封装相应的属性和方法。

2.在游戏初始化模块中,创建地图对象、蛇对象,初始化位置和长度,并生成初始食物。

3.在用户输入模块中,利用Java的键盘事件监听机制,获取用户的方向输入,并通过调用蛇对象的移动方法实现控制蛇的移动方向。

JAVA开放性实验报告贪吃蛇

JAVA开放性实验报告贪吃蛇

JAVA开放性实验报告贪吃蛇实验目的:本实验旨在利用Java语言实现一个经典的贪吃蛇游戏,通过实践提升对面向对象程序设计的理解和应用能力,加深对Java语言的熟练程度,并提高解决问题的能力和编程实践经验。

实验内容:1.设计游戏界面:通过Java中的Swing库实现游戏窗口的设计,包括游戏区域、游戏开始按钮、得分显示等。

2.实现游戏逻辑:设计贪吃蛇的移动规则,食物的生成和吃掉判定,碰撞检测等游戏逻辑。

同时实现游戏的主循环,控制游戏的进行。

3.实现键盘控制:通过监听键盘事件,实现玩家控制贪吃蛇的移动方向。

4.设计游戏机制:设置游戏的难度等级,增加贪吃蛇的移动速度、食物生成间隔等参数,使游戏更具挑战性。

5.设计游戏结束逻辑:当贪吃蛇头碰到墙壁或自身时,游戏结束并显示得分。

玩家可以选择重新开始游戏或退出。

实验步骤:1.设计游戏界面:创建一个JFrame窗口,在窗口中添加游戏画布,开始按钮和得分显示等组件。

2.实现游戏逻辑:设计Snake类和Food类,表示贪吃蛇和食物。

通过ArrayList存储贪吃蛇的身体节点,并实现移动、吃食物等方法。

3.实现键盘控制:通过实现KeyListener接口来监听键盘事件,根据按键控制贪吃蛇的移动方向。

4.设计游戏机制:设置贪吃蛇的移动速度、食物生成间隔等参数,根据难度级别逐步增加,使游戏更具挑战性。

5.设计游戏结束逻辑:当贪吃蛇头碰到墙壁或自身时,游戏结束并显示得分。

提供重新开始游戏和退出游戏的选项。

实验结果:经过实验设计和编码实现,成功完成了Java贪吃蛇游戏的开发。

游戏界面美观,操作流畅,游戏逻辑完整,玩家能够通过控制贪吃蛇吃到食物并获得得分。

随着游戏的进行,贪吃蛇会不断变长,玩家需要避开障碍,控制蛇头移动,体验游戏的乐趣和挑战。

实验总结:通过本次实验,我深入学习了Java语言的面向对象编程思想和应用,掌握了Swing库的使用方法,加深了对Java语言的理解和应用。

贪吃蛇java实验报告doc

贪吃蛇java实验报告doc

贪吃蛇java实验报告doc贪吃蛇java实验报告篇一:JAVA贪吃蛇课程设计报告《Java应用开发》课程设计报告题目:指导老师:姓名:专业:班级:日期:JAVA小游戏 - 贪吃蛇目录一、系统总体设计 ................................. 1 (一)设计目标及完成功能 ........................ 1 (二)系统结构设计 .............................. 1 二、详细设计 ..................................... 2(一) 界面设计 ................................... 2 (二) 系统设计 ................................... 4 (三) 关键技术及算法 ............................. 6 四、测试 ......................................... 7五、安装使用说明 (7)总结(体会) ..................................... 8参考文献 .. (8)一、系统总体设计(一)设计目标及完成功能本软件是针对贪吃蛇小游戏的JAVA程序,利用上、下、左、右方向键来改变蛇的运动方向,长按某个方向键后,蛇的运动速度会加快,在随机的地方产生食物,吃到食物就变成新的蛇体,碰到壁或自身则游戏结束,否则正常进行游戏,在到达固定的分数后,游戏速度会加快。

1.窗口功能说明:设计了三个窗口,分别是游戏主窗口,成绩窗口,游戏帮助和关于作者窗口。

2.菜单栏分别为:游戏菜单和帮助菜单其中,游戏菜单包括开始游戏和退出游戏两项;帮助菜单包括游戏帮助和关于作者两项。

(二)系统结构设计图1-1 系统结构图二、详细设计(一) 界面设计贪吃蛇游戏的基本运行界面(1)生成初始界面:图2-1 初始界面(2)游戏菜单栏:图2-2 游戏菜单(2)积分排行菜单栏:图2-3 积分排行菜单(3)进行游戏界面:点击“游戏”,进入游戏菜单,选择“开始游戏”,或者。

JAVA开放性实验报告贪吃蛇

JAVA开放性实验报告贪吃蛇

JAVA开放性实验报告贪吃蛇一、实验目的本次实验的目的是让学生通过开放性实验,深入了解Java语言的基本语法、类的继承、枚举类型、异常处理、线程和GUI编程等知识,通过制作贪吃蛇游戏,加深对这些知识的理解及应用。

二、实验内容1.贪吃蛇游戏的设计和实现:–游戏界面设计,包括菜单栏和游戏主界面;–游戏规则设计,包括游戏的开始、运行、暂停、继续、结束等功能;–贪吃蛇的表示和移动,包括蛇的形态、运动轨迹、吃食物等;–碰撞控制,包括蛇的碰到墙壁、碰到自己、吃到食物等情况;–游戏提示,包括蛇的得分、时间等信息。

2.程序异常处理和线程控制:–游戏在执行过程中可能会出现一些错误,异常处理应该在适当的地方实现;–游戏需要使用到多线程,如贪吃蛇的运行、时间的计算等功能。

3.涉及到的Java语言特性:–类和继承;–枚举类型和常量;–异常处理;–线程;–GUI编程。

三、实验步骤1.设计游戏界面,包括开始、结束等按钮,加上GRID布局管理器,使得每个元素大小一致。

2.设计游戏规则,编写菜单栏、开始、暂停、重新开始、退出等按钮的响应事件,实现游戏控制。

3.对蛇和食物等相关元素进行定义,并加上基本的属性,如位置、方向、大小等。

4.碰撞控制设计,当蛇与墙壁、自身、食物等元素发生碰撞,相应的事件应当被触发。

5.游戏的得分和用时等信息通过字体和字体大小不同来体现,异步线程计算时间。

6.对程序可能出现的异常情况进行捕获和处理,如空指针异常等,并在程序中加入必要的注释。

7.运行程序,测试游戏是否正常、连贯、流畅。

四、实验结果经过一番努力,最后完成了一个样式和功能都十分完善的贪吃蛇游戏。

运行程序,界面美观,游戏流畅,用户可以通过点击菜单栏上的不同按钮来控制游戏的开始、暂停、重新开始或退出等操作,并可以记录得分和用时等信息。

五、实验本次实验通过实现贪吃蛇游戏,深入了解了Java语言的基本语法、类的继承、枚举类型、异常处理、线程和GUI编程等知识。

小游戏贪吃蛇课程设计报告

小游戏贪吃蛇课程设计报告
使用随机数生成器生 成蛇和食物的位置
Java小游戏贪吃蛇课程设计报告
使用键盘事件 监听器实现蛇 的移动和转向
Java小游戏贪吃蛇课程设计报告
通过碰撞检测类实现碰 撞和游戏结束条件
Java小游戏贪吃蛇课程设计报告
使用Java Timer类实现分数和时间的更新
在实现过程中,我们遇到了以下问题和解决方案
在本次课程设计中,我们选择了一个经典的小游戏——贪吃蛇。贪吃蛇是一款简单而有趣 的游戏,玩家需要控制一条蛇在屏幕上移动,吃掉食物并避免撞到墙壁或自己的尾巴 在开始设计之前,我们首先对游戏进行了需求分析。我们需要实现以下功能
Java小游戏贪吃蛇课程设计报告
创建游戏窗口和背景
Java小游戏贪吃蛇课程设计报告
Java小游戏贪吃蛇 课程设计报告
-
1 创建游戏窗口和背景 2 生成蛇和食物 3 实现蛇的移动和转向 4 检测碰撞和游戏结束条件 5 分数和时间的显示 6 使用随机数生成器生成蛇和食物的位置 7 使用键盘事件监听器实现蛇的移动和转向 8 通过碰撞检测类实现碰撞和游戏结束条件
Java小游戏贪吃蛇课程设计报告
分数和时间显示不准确:解决方案:使用Java Timer类定期更新分数和时间,确保它 们与游戏进度同步
Java小游戏贪吃蛇课程设计报告
r
xxxxx
最终,我们成功实现了贪吃蛇游戏的基 本功能,包括创建游戏窗口、生成蛇和 食物、实现蛇的移动和转向、检测碰撞 和游戏结束条件以及分数和时间的显示
同时,我们还优化了游戏的性能和 用户体验,使其更加流畅和有趣
生成蛇和食物
Java小游戏贪吃蛇课程设计报告
Java小游戏贪吃蛇课程设计报告
检测碰撞和游 戏结束条件
Java小游戏贪吃蛇课程设计报告

Java程序设计报告《贪吃蛇》

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 int 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(){//***************创建新对象**************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);//******************设置分数菜单***************fenShuMenu、add(fenShuItem);//*****************设置游戏菜单****************youXiMenu、add(kaiShiYouXi);youXiMenu、add(exitItem);//******************设置主菜单******************** menuBar、add(youXiMenu);menuBar、add(nanDuMenu);menuBar、add(fenShuMenu);menuBar、add(guanYuMenu);//*********************监听注册*****************zuoZheItem、addActionListener(this);kaiShiYouXi、addActionListener(this);exitItem、addActionListener(this);addKeyListener(this);fenShuItem、addActionListener(this);//*********************加快捷键********************KeyStroke keyOpen = KeyStroke、getKeyStroke('O',InputEvent、CTRL_DOWN_MASK);kaiShiYouXi、setAccelerator(keyOpen);KeyStroke keyExit = KeyStroke、getKeyStroke('X',InputEvent、CTRL_DOWN_MASK);exitItem、setAccelerator(keyExit);//*****************设置框架**********************setJMenuBar(menuBar);setTitle("贪吃蛇");setResizable(false);setBounds(300,200,400,400);validate();setDefaultCloseOperation(EXIT_ON_CLOSE);}public static void main(String args[]){new TanChiShe();}//******************菜单监听****************************** public void actionPerformed(ActionEvent e){if(e、getSource()==kaiShiYouXi){length = 6;life = 0;foods = 0;if(she==null){she=new Thread(this);she、start();}else if(she!=null){she=null;she= new Thread(this);she、start();}}if(e、getSource()==exitItem){System、exit(0);}if(e、getSource()==zuoZheItem){JOptionPane、showMessageDialog(this, "梁潇"+"\n\n"); }if(e、getSource()==fenShuItem){JOptionPane、showMessageDialog(this,"最高记录为"+fenshu+"");}}//**************检查一下******************************* public void check(){isDead();if(she!=null){if(growth==0){reform();}else{upgrowth();}if(x==objectX&&y==objectY)object=0;growth=1;toolkit、beep();}//****************产生食物坐标**********************if(object==0){object=1;objectX=(int)Math、floor(Math、random()*39)*10;objectY=(int)Math、floor(Math、random()*29)*10+50; }this、repaint();}}void isDead(){if(z==4){x=x+10;}else if(z==3){x=x-10;}else if(z==2){y=y+10;}else if(z==1){y=y-10;}if(x<0||x>390||y<50||y>390){she=null;}for(i=1;i<length;i++)if(m[i]==x&&n[i]==y){she=null;}}}public void upgrowth() {if(length<50){length++;}growth--;time=time-10;reform();life+=100;if(fenshu<life){fenshu = life;}foods++;}public void reform(){for(i=length-1;i>0;i--) {m[i]=m[i-1];n[i]=n[i-1];}if(z==4){m[0]=m[0]+10;}if(z==3){m[0]=m[0]-10;}if(z==2){n[0]=n[0]+10;}if(z==1)n[0]=n[0]-10;}}public void keyPressed(KeyEvent e){if(she!=null){if(e、getKeyCode()==KeyEvent、VK_UP){if(z!=2){z=1;check();}}else if(e、getKeyCode()==KeyEvent、VK_DOWN){if(z!=1){z=2;check();}}else if(e、getKeyCode()==KeyEvent、VK_LEFT){if(z!=4){z=3;check();}}else if(e、getKeyCode()==KeyEvent、VK_RIGHT){if(z!=3){z=4;check();}}}public void keyReleased(KeyEvent e){// TODO自动生成方法存根}public void keyTyped(KeyEvent e){// TODO自动生成方法存根}public void paint(Graphics g){//*******************画图********************** g、setColor(Color、DARK_GRAY);g、fillRect(0,50,400,400);g、setColor(Color、pink);for(i=0;i<=length-1;i++){g、fillRect(m[i],n[i],10,10);}g、setColor(Color、green);g、fillRect(objectX,objectY,10,10);g、setColor(Color、white);g、drawString("当前分数"+this、life,6,60);g、drawString("当前已吃食物数"+this、foods,6,72); }}(四)测试(五)使用说明在游戏过程中,用户通过点击小键盘区的方向键来控制蛇的运行方向;当蛇没有吃到食物且碰到墙壁或自己的身体时游戏结束。

双手贪吃蛇+Java程序设计+课程设计报告

双手贪吃蛇+Java程序设计+课程设计报告

课题名称:双手贪吃蛇摘要:“贪吃蛇”游戏是一个经典的游戏,它因操作简单、娱乐性强而广受欢迎,而“双手贪吃蛇”是基于经典的创新。

此程序基于Java技术,利用eclipse软件设计,开发了一个操作简单、界面简洁、功能较齐全的“双手贪吃蛇”游戏。

整个游戏程序由游戏界面设置(即绘图)、两条贪吃蛇运动和食物放置设置、提示框设置三大模块来设计,实现了游戏的开始和结束。

通过本游戏的开发,达到学习Java技术和熟悉软件开发流程的目的。

关键词:贪吃蛇;双手贪吃蛇;Java小游戏1 课题背景及意义“双手贪吃蛇”是经典游戏的一个小小创新,它的设计比较复杂,涉及面广、牵涉方面多,对于初学者来说是有一定难度的挑战。

在这个游戏设计中,涉及到图形界面的实现与更新、键盘监听、数组的使用与记录、多线程的应用,还应用到类的继承机制。

在设计开发过程中,需要处理好各个类之间的继承关系,协调好各个模块之间的逻辑依赖关系。

本次课程设计的目的在于学习Java程序设计基本技术,熟悉“双手贪吃蛇”的需求,熟悉项目开发的完整过程。

学会怎样进行一个项目的需求分析、概要设计、详细设计等开发过程,培养起初步的项目分析能力和程序设计能力。

2 需求分析(1)游戏主界面:游戏主界面框架包括游戏图形面板、游戏帮助信息区域。

(2)两条贪吃蛇运动:游戏开始时两条蛇有个初始速度,键盘的W、S、A、D控制黑蛇的运动方向,键盘的上下左右控制红蛇的运动方向。

(3)食物放置:游戏开始时,食物在游戏面板中随机出现,蛇吃到食物后,食物再次随机出现。

(4)蛇身增加:任意一条蛇吃到食物后,增加一个单位的蛇身。

(5)分数增加:分数初始值为0,任意一条蛇吃到一个食物,分数加10。

(6)游戏结束:任意一条蛇碰到游戏面板边界后,游戏结束。

(7)输入框、提示框显示:游戏结束后,弹出输入框输入玩家名称,确定后弹出游戏排行榜,再次确定后弹出玩家分数。

3 系统设计与实现(一)游戏主界面建立一个类Yard继承JFrame,建立三个ImageIcon(icon/icon1/icon2)分别放置黑蛇、红蛇和食物的图标,建立string2放置帮助信息文字。

Java程序设计报告《贪吃蛇》

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 int 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(){//***************创建新对象**************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);//******************设置分数菜单***************fenShuMenu.add(fenShuItem);//*****************设置游戏菜单****************youXiMenu.add(kaiShiYouXi);youXiMenu.add(exitItem);//******************设置主菜单********************menuBar.add(youXiMenu);menuBar.add(nanDuMenu);menuBar.add(fenShuMenu);menuBar.add(guanYuMenu);//*********************监听注册*****************zuoZheItem.addActionListener(this);kaiShiYouXi.addActionListener(this);exitItem.addActionListener(this);addKeyListener(this);fenShuItem.addActionListener(this);//*********************加快捷键********************KeyStroke keyOpen = KeyStroke.getKeyStroke('O',InputEvent.CTRL_DOWN_MASK);kaiShiYouXi.setAccelerator(keyOpen);KeyStroke keyExit = KeyStroke.getKeyStroke('X',InputEvent.CTRL_DOWN_MASK); exitItem.setAccelerator(keyExit);//*****************设置框架**********************setJMenuBar(menuBar);setTitle("贪吃蛇");setResizable(false);setBounds(300,200,400,400);validate();setDefaultCloseOperation(EXIT_ON_CLOSE);}public static void main(String args[]){new TanChiShe();}//******************菜单监听******************************public void actionPerformed(ActionEvent e){if(e.getSource()==kaiShiYouXi){length = 6;life = 0;foods = 0;if(she==null){she=new Thread(this);she.start();}else if(she!=null){she=null;she= new Thread(this);she.start();}}if(e.getSource()==exitItem){System.exit(0);}if(e.getSource()==zuoZheItem){JOptionPane.showMessageDialog(this, "梁潇"+"\n\n");}if(e.getSource()==fenShuItem){JOptionPane.showMessageDialog(this,"最高记录为"+fenshu+""); }}//**************检查一下******************************* public void check(){isDead();if(she!=null){if(growth==0){reform();}else{upgrowth();}if(x==objectX&&y==objectY){object=0;growth=1;toolkit.beep();}//****************产生食物坐标**********************if(object==0){object=1;objectX=(int)Math.floor(Math.random()*39)*10;objectY=(int)Math.floor(Math.random()*29)*10+50;}this.repaint();}}void isDead(){if(z==4){x=x+10;}else if(z==3){x=x-10;}else if(z==2){y=y+10;}else if(z==1){y=y-10;}if(x<0||x>390||y<50||y>390) {she=null;}for(i=1;i<length;i++){if(m[i]==x&&n[i]==y){she=null;}}}public void upgrowth(){if(length<50){length++;}growth--;time=time-10;reform();life+=100;if(fenshu<life){fenshu = life;}foods++;}public void reform(){for(i=length-1;i>0;i--){m[i]=m[i-1];n[i]=n[i-1];if(z==4){m[0]=m[0]+10;}if(z==3){m[0]=m[0]-10;}if(z==2){n[0]=n[0]+10;}if(z==1){n[0]=n[0]-10;}}public void keyPressed(KeyEvent e){if(she!=null){if(e.getKeyCode()==KeyEvent.VK_UP){if(z!=2){z=1;check();}}else if(e.getKeyCode()==KeyEvent.VK_DOWN) {if(z!=1){z=2;check();}}else if(e.getKeyCode()==KeyEvent.VK_LEFT){if(z!=4){z=3;check();}else if(e.getKeyCode()==KeyEvent.VK_RIGHT){if(z!=3){z=4;check();}}}}public void keyReleased(KeyEvent e){// TODO自动生成方法存根}public void keyTyped(KeyEvent e){// TODO自动生成方法存根}public void paint(Graphics g){//*******************画图********************** g.setColor(Color.DARK_GRAY);g.fillRect(0,50,400,400);g.setColor(Color.pink);for(i=0;i<=length-1;i++){g.fillRect(m[i],n[i],10,10);}g.setColor(Color.green);g.fillRect(objectX,objectY,10,10);g.setColor(Color.white);g.drawString("当前分数"+this.life,6,60);g.drawString("当前已吃食物数"+this.foods,6,72);}}(四)测试(五)使用说明在游戏过程中,用户通过点击小键盘区的方向键来控制蛇的运行方向;当蛇没有吃到食物且碰到墙壁或自己的身体时游戏结束。

JAVA开放性实验报告贪吃蛇

JAVA开放性实验报告贪吃蛇

JAVA开放性实验报告贪吃蛇实验目的:1. 通过编写贪吃蛇游戏,巩固掌握Java语言的基本语法和面向对象编程的思想;2. 学习使用Java图形界面工具包Swing来实现游戏窗口的设计和操作;3.提高自己的程序设计能力和解决问题的能力。

实验要求:1.游戏实现一个基本功能完善、操作简单、界面友好的贪吃蛇游戏;2.游戏需包含以下功能:a.实现贪吃蛇的身体随着吃到食物而不断增长的功能;b.实现贪吃蛇碰到边界或自己的身体时游戏结束的功能;c.实现游戏开始、暂停、重新开始的功能;d.实现游戏得分的显示和计算功能;3.游戏中需要有适当的音效和界面美化,以增加游戏的趣味性和可玩性。

实验内容:1. 游戏的界面设计:使用Swing工具包来实现游戏窗口的设计,包括标题、地图等;2. 游戏的逻辑处理:利用Java语言的控制流语句和面向对象的思想来实现游戏的逻辑处理,包括贪吃蛇的移动、吃食物、碰撞判断等;3. 游戏的音效和界面美化:利用Java提供的音频播放和图像处理相关的库来实现游戏的音效和界面美化,为游戏增添趣味和吸引力;4. 其他功能的实现:游戏的开始、暂停、重新开始等功能的实现属于界面交互部分,可使用Swing提供的组件和事件监听器来完成。

实验步骤:1. 创建一个新的Java项目,并命名为“GreedySnake”;2. 创建一个继承JFrame类的主窗口,并设置窗口的基本属性(标题、大小、关闭方式等);4.在游戏面板中添加贪吃蛇和食物的相关属性和方法,并完成相应的逻辑处理(移动、吃食物、碰撞判断等);5.在游戏面板中添加键盘监听器,实现键盘的事件响应,控制贪吃蛇的移动方向;6.在游戏面板中添加计时器,定时触发贪吃蛇的移动和界面的刷新;7.在主窗口中添加开始、暂停、重新开始等按钮,并添加相应的事件监听器,实现相应的功能;8. 使用Java提供的音频播放和图像处理相关的库,实现游戏的音效和界面美化;9.运行程序,测试游戏的各项功能是否正常运行;10.优化和完善程序,使之更稳定、高效、美观。

Java实习报告--贪食蛇

Java实习报告--贪食蛇

目录1 选题背景: (2)2 方案论证: (2)2.1 设计思路: (2)2.2 java的介绍 (2)2.3 流程图 (2)3 过程(设计或实验)论述: (4)3.1 界面程序 (4)3.2 蛇的程序 (4)3.3 食物程序 (9)3.4 游戏主控制程序 (11)4 结果分析: (16)4.1 功能及截图介绍 (16)4.1.1 界面: (16)4.1.2 撞到界面边界游戏结束: (17)4.2 遇到的困难 (17)5 结论或总结: (17)1 选题背景:这是一款比较需要耐心的游戏,用游戏把子上下左右控制蛇的方向,寻找吃的东西,每吃一口就能得到一定的积分,而且蛇的身子会越吃越长,身子越长玩的难度就越大,并且速度会随着身体的变长而变快,并且不能碰墙,更不能咬自己的尾巴。

会有瞬时计分器。

2 方案论证:2.1 设计思路:贪吃蛇游戏中包括了食物、蛇、界面、操作等对象。

首先我们需要对界面设计,然后对于食物进行编辑,是界面内随意产生的一个食物,并且一旦蛇头与食物重合,则蛇身加1,速度变快。

当速度达到一定程度后不再变化。

并且成绩也增加。

2.2 java的介绍Java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用Java。

另一方面,Java丢弃了C++ 中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。

特别地,Java语言不使用指针,并提供了自动的废料收集,使得程序员不必为内存管理而担忧。

Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。

Java语言全面支持动态绑定,而C++ 语言只对虚函数使用动态绑定。

总之,Java语言是一个纯的面向对象程序设计语言。

Java 编程语言的风格十分接近C、C++语言。

Java是一个纯的面向对象的程序设计语言,它继承了C++ 语言面向对象技术的核心。

(完整版)Java 贪吃蛇报告

(完整版)Java 贪吃蛇报告

《Java高级编程》课程报告第xx小组:贪吃蛇游戏项目小组成员及分工一、实验环境操作系统:Windows 7编程环境:Eclipse、JDK二、实验内容与完成情况(主要介绍项目总体功能分析与说明。

)贪吃蛇小游戏的JAVA程序是利用上↑、下↓、左←、右→方向键来改变蛇的运动方向,按空键暂停游戏,按enter键重新开始。

长按某个方向键后,蛇的运动速度会加快,在随机的地方产生食物,吃到食物就变成新的蛇体,碰到壁或自身则游戏结束,否则正常进行游戏。

以不同的速度和不同方向吃到食物所获得的分数也不相同。

窗口功能说明:设计了三个窗口,分别是游戏主窗口,主菜单窗口,模式选择窗口. 菜单栏分别为:游戏菜单(重新开始)和帮助菜单以及返回(返回主菜单)。

其中,按返回菜单按钮后会显示主菜单,其包括游戏开始、设置、退出游戏三项按钮选择;如果按“设置”按钮会进入“模式选择"窗口。

而模式选择窗口菜单包括了初级、中级、高级、返回按钮.1、功能1(主菜单窗口)(1)主菜单窗口主要是提供“游戏开始"、“设置”和“退出”按钮。

“游戏开始”按钮按下后会进入“游戏主窗口”开始游戏; “设置"按钮是调用“模式选择”窗口对游戏贪吃蛇的速度进行设置; “退出”按钮按下则会直接退出游戏.(2)功能1实现的流程图实现的效果图如下:(3)功能1(主菜单窗口)代码: package Swing;import java.awt.Color;import java。

awt.EventQueue;import java.awt。

event。

ActionEvent;import java。

awt。

event.ActionListener;import javax.swing。

ImageIcon;import javax。

swing。

JButton;import javax。

swing。

JFrame;import javax。

swing。

贪吃蛇JAVA设计报告材料

贪吃蛇JAVA设计报告材料

目录第一章绪论 (1)1.1开发的背景 (1)1.2开发的目的 (2)1.3开发的意义 (2)1.4开发工具简介 (2)第二章需求分析 (3)2.1需求分析 (3)2.2可行性分析 (3)第三章系统概要设计 (3)3.1设计目标 (3)3.2系统功能模块 (4)第四章详细设计与实现 (5)4.1程序设计 (5)4.2各功能界面截图 (7)4.3详细代码 (9)第五章测试 (16)5.1测试的意义 (16)5.2测试过程 (16)5.3测试结果 (17)第六章心得体会 (17)第一章绪论1.1 开发的背景随着科技的发展,现在手机的功能已不仅仅是简单的打接电话、收发短信了。

更多的手机用户希望在工作、学习之余通过方便灵巧可随身携带的仪器休闲娱乐。

因此,为了迎合众多用户的需求并适应现在手机的规模,我们开发出一套适合各阶层人士的具有很强的娱乐性和交互性的贪吃蛇小游戏。

贪吃蛇,之所以取这样的名字,去用意还是很明显的.贪吃蛇其实并不贪,它是人不断向前追求的象征.就像现代的人只有不断努力向前才能得到自己想要的。

而食物也是随机出现的,就像现在社会存在的机会,而我们只有找好自己的目标才能成功。

虽然现在市面上存在着各种各样的游戏版本,可是贪吃蛇其市场还是相当大的。

因为它的特殊在于它能吸引人更深入,爱不释手.随着游戏速度不断加快,其刺激性也更强。

可以说该游戏的优势在于它的简单易行,不论是手机,还是小游戏机,都能很快顺利的运行。

对于在外忙碌的人,不可能花费大量时间在娱乐上,大型游戏是行不通的。

这样的小游戏刚好迎合了他们的需求。

1.2 开发的目的在如今社会,人们的工作学习压力逐渐增大,生活节奏逐渐加快,大多数人没有足够的时间去休闲娱乐,放松自己。

这款小型的手机游戏,可以让我们随时随地都能享受游戏,。

让我们从繁重的日常生活中解脱出来。

游戏的主界面应该力求美观,爽心悦目,以提高玩家对游戏的兴趣。

游戏的控制模块应该做到易懂、易操作,以给玩家一个很好的游戏环境。

Java 贪吃蛇 课程设计报告

Java 贪吃蛇 课程设计报告
2.按下1键进入单人模式
单人模式界面的构图与双人模式与电脑对战的构图一样,分为3大块,左边的是关卡列表,右边上面的是地图预览,右边下面的是地图信息。在关卡列表中可以按上下方向键进行关卡选择,然后按下enter键进入游戏或者点击界面的按钮“开始游戏”进入游戏界面。
3.进入游戏界面
此界面中,分为两块,最上面一层黄色的是分数面板,下面一层是地图面板。如图所示,此时操纵的蛇就快吃到食物。
2.行走时不会撞墙,不撞移动障碍物,不咬自己
3.当新出食物更近选择这个,放弃原本想去吃的
4.没食物的时候攻击玩家
5.避免自己被对方攻击
九、比赛结果的面板
1.根据模式,再比较分得出结果
2.用户输入姓名,输出到排行榜文件,保存姓名、分数、时间
十、障碍物
1.普通障碍物墙
2.移动障碍物
3.移动障碍物可以一直往复一个方向来回,像角色扮演游戏中怪物往返一个范围巡逻
3.有毒食物
4.不出现障碍物中
5.被吃了可以再生成
六、关卡
1.关卡从地图文件读取
2.达到一定分数过关
3.过关时线程从左到右刷新
七、分数面板
1.当玩家操纵的蛇吃到了食物,进行加分
2.加分是先以粒子效果从中心往周围散发许多黑色小点,像是原来分数的数字炸裂开来一样。增加美感
八、电脑蛇AI
1.电脑自动行走,寻找最近食物并吃食
我将BFS算法带入游戏中,使用在电脑蛇自动行动寻找食物,原理就是根据蛇位置不断搜索地图中存在食物的坐标,然后保存在List中再读取路线从而达到寻路AI功能。
2.3Eclipse
Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

JAVA开放性实验报告贪吃蛇

JAVA开放性实验报告贪吃蛇

JA V A程序设计开放性实验报告专业:计算机科学与技术班级:2012级2班学号:姓名:实验2贪吃蛇游戏设计(4学时)1.实验内容(1)创建软件主窗体和相关控制菜单;在窗体中以图形模拟蛇的形状,使用键盘控制图形在窗体中任意移动,模拟贪吃蛇的行为.(2)在窗体中可以设置障碍或奖励物品,以达到游戏的娱乐性。

2.预习内容Java GUI编程;鼠标和键盘的事件处理;Java多媒体编程。

3.实验类型综合性4.实验目的(1)了解JavaGUI编程特别是窗体,菜单;熟悉Java的事件委托处理机制,能完成鼠标和键盘的事件处理;(2)熟悉Java中的多媒体技术如:音频文件的播放控制,游戏中各种事件的音效添加。

熟悉Java中的绘图操作,可以使用绘图函数进行图形的绘制和重绘等基本操作;(3)熟悉模块的划分及游戏控制类的编写,了解相关的游戏设计和实现模式;(4)设计可视化界面,添加其他必要组件,对窗体进行相应的键盘事件处理,使蛇能移动,依据实验内容结合自己的设计想法,实现模拟贪吃蛇的游戏效果。

5.实验要求依据实验内容,编写相关类,实现所需软件功能。

6.实验过程(分析设计、源文件、执行结果)代码如下:1、Node类public class Node {private int x;private int y;public Node(){}public Node(int x,int y){this.x=x;this.y=y; }public int getX(){return x;}public void setX(int x){ this.x=x;}public int getY(){return y;}public void setY(int y){this.y=y;}public String toString(){//方便类型转换//括号里不是String类型通过toString来转换,不然会输出一个地址return"("+x+","+y+")";}@Override//伪代码可以理解为注释,重写:下面的方法名是否在父类中存在,如果没有//的话会报错。

贪吃蛇游戏设计实训报告

贪吃蛇游戏设计实训报告

一、摘要随着计算机技术的飞速发展,图形界面编程在计算机科学中占据着越来越重要的地位。

贪吃蛇游戏作为一款经典的益智游戏,不仅能够锻炼玩家的反应能力,还能培养编程思维。

本次实训以贪吃蛇游戏为背景,采用Java编程语言和Swing图形用户界面库进行设计,实现了游戏的基本功能,并对游戏性能进行了优化。

二、引言贪吃蛇游戏是一款简单易玩、老少皆宜的益智游戏。

玩家通过控制蛇的移动,吃掉食物使蛇身变长,同时躲避墙壁和自身,最终达到游戏目标。

本次实训旨在通过贪吃蛇游戏的设计与实现,提高学生的编程能力、图形界面设计能力和团队协作能力。

三、游戏设计1. 游戏界面设计游戏界面采用Swing图形用户界面库进行设计,主要包括以下部分:(1)游戏区域:用于显示蛇、食物和墙壁,采用JPanel组件实现。

(2)游戏菜单:包括开始游戏、重新开始、退出游戏等选项,采用JButton组件实现。

(3)游戏得分:显示当前得分,采用JLabel组件实现。

2. 游戏逻辑设计游戏逻辑主要包括以下部分:(1)蛇的移动:根据玩家输入的方向键控制蛇头的移动,实现蛇的实时更新。

(2)食物的生成:随机生成食物,当蛇头吃到食物时,蛇身变长,同时增加得分。

(3)墙壁和自身碰撞检测:当蛇头触碰到墙壁或自身时,游戏结束。

(4)游戏得分:根据蛇头吃到的食物数量计算得分。

四、关键技术实现1. 蛇的移动蛇的移动通过监听键盘事件实现。

在键盘事件监听器中,根据按键的方向更新蛇头的坐标,然后重新绘制蛇身。

2. 食物的生成食物的生成采用随机算法实现。

首先生成一个随机坐标,然后判断该坐标是否在游戏区域内,如果不在则重新生成。

3. 碰撞检测碰撞检测包括墙壁碰撞和自身碰撞。

在蛇头移动时,判断蛇头的坐标是否超出游戏区域边界,或者与自身坐标相同,若满足任一条件,则游戏结束。

4. 游戏得分游戏得分通过计算蛇头吃到的食物数量实现。

每吃到一个食物,得分加1。

五、性能优化1. 游戏速度优化:通过调整蛇的移动速度和食物生成的速度,使游戏节奏更加紧凑。

贪吃蛇Java课程设计报告

贪吃蛇Java课程设计报告

贪吃蛇Java课程设计报告课程设计报告题目:xxxxxxxxx指导老师:xxxxx专业:xxxxxxxx班级:xxxx姓名:xxxx课程设计目的贪吃蛇游戏一款非常经典的手机游戏,因为它比较简单有趣,无论老少都比较适合。

目的是更好地了解和掌握java语言,并熟练的运用java语言来实现项目。

培养自主学习的能力。

本软件在设计方面本着方便、实用及娱乐性高的宗旨,在外界进行设计的过程中,始终坚持清晰明了,在性能方面能够实现效率高,不易出错等优点。

课程设计要求贪吃蛇游戏设计与实现,主要分为以下二个模块:游戏主界面模块、游戏控制模块。

三、课程设计报告内容(一)系统设计1、程序概述本程序是一个利用Java应用软件制作的贪吃蛇小游戏。

在游戏过程中,用户通过点击小键盘区的方向键来控制蛇的运行方向;当蛇没有吃到食物且碰到墙壁或自己的身体时游戏结束。

本程序的另一个功能是在程序运行窗口的左上角显示,用户在游戏过程中所得的分数,不过缺点就是在退处程序后,下次打开程序时无法保存。

2、游戏的主界面设计游戏的主界面是进入游戏后,能够给玩家第一感官的部分,主要包括游戏图形区域界面、游戏的速度选择更新界面、游戏分数的显示更新界面、游戏开始按钮、暂停游戏按钮、退出游戏按钮以及游戏排行榜按钮。

3、游戏控制模块设计这个模块是游戏的中心环节,主要完成控制游戏的开始、暂停、退出等功能。

为了能够给玩家一个很好的游戏环境,这部分应该做到易懂、易操作。

主界面设计游戏界面主框架主要包括游戏图形区域界面、游戏的开始按钮、暂停按钮、游戏的退出按钮、困难程度、积分排行、关于作者。

代码设计importjava。

awt。

Color;importjava。

awt。

Container;importjava。

awt。

Graphics;importjava。

awt。

Toolkit;importjava。

awt。

event。

ActionEvent;importjava。

JAVA贪吃蛇小游戏的程序代码及报告

JAVA贪吃蛇小游戏的程序代码及报告

2013-2014学年第二学期《面向对象程序设计》课程设计报告题目:贪吃蛇游戏与程序设计专业:网络工程班级:12级一班**:***指导教师:***成绩:计算机与信息工程系2014年 6月 10日目录1. 设计内容及要求 (2)1.1设计内容 (2)1.2设计任务及具体要求 (2)2. 概要设计 (3)3. 设计过程 (3)3.1开发环境和软件 (3)3.2总体程序流程图 (3)3.2.1主类贪吃蛇 (4)3.2.2类SnakeFrame (5)3.2.3类贪吃蛇 (5)3.2.4类Paint (6)4.运行结果如所示 (6)游戏结束 (7)5.参考文献 (8)源程序 (8)1.设计内容及要求1.1设计内容本软件是针对贪吃蛇小游戏的JAVA程序,利用方向键来改变蛇的运行方向,空格键暂停或继续游戏,并在随机的地方产生食物,吃到食物就变成新的蛇体,碰到壁或自身则游戏结束,否则正常运行。

1.2设计任务及具体要求本游戏用户可以自己练习和娱乐。

本游戏需要满足以下几点要求:(1)利用方向键来改变蛇的运行方向。

(2)空格键暂停游戏,并在随机的地方产生食物。

(3)吃到食物就变成新的蛇体,碰到壁或自身则游戏结束,否则正常运行。

(4)用户可以根据需要暂停,以及根据水平选择不同的游戏难度。

要求:明确课程设计的目的,能根据课程设计的要求,查阅相关文献,为完成设计准备必要的知识;提高学生用java语言进行程序设计的能力,初步了解软件开发的一般方法和步骤;提高撰写技术文档的能力。

2. 概要设计游戏大体框架如图3. 设计过程3.1开发环境和软件(1)操作系统:Windows 7(2)Java开发工具:Eclipse3.2总体程序流程图新建游戏的启动窗口public class SnakeGame {public static void main(String[] args) {SnakeFrame frame = new SnakeFrame(); frame.setTitle("贪吃蛇");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true);}}3.2.1主类贪吃蛇(1)主类为此程序的入口,定义了贪吃蛇的对象Frame,开始运行程序(2)源程序见详细代码成员变量描述变量类型名称是否运动Boolean isrun蛇体ArrayList<NODE> body食物Node food方向int drection分数int score速度int Speed状态Int StatusRunning运动中Public static finalintLeft左Public static finalint右Public static finalRightint上Public static finalUPint(1)成员变量见表2(2)方法见表3(1)成员变量见表4int速度Public static finalint SLOW,MID,FAST(2)方法见表五表格 4 主要方法方法名功能Iseating() 吃食物Isbang() 是否碰撞到墙壁,或自己Changedirecte() 判断是否吃到食物,判断是否改变方向Makefood() 在随机的地方产生食物Move() 蛇如何移动3.2.4类Paint此类为画蛇的面板类,是粉色蛇身算法的类。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

J a v a贪吃蛇报告 Revised final draft November 26, 2020《Java高级编程》课程报告第xx小组:贪吃蛇游戏项目小组成员及分工一、实验环境操作系统:Windows 7编程环境:Eclipse、JDK二、实验内容与完成情况(主要介绍项目总体功能分析与说明。

)贪吃蛇小游戏的JAVA程序是利用上↑、下↓、左←、右→方向键来改变蛇的运动方向,按空键暂停游戏,按enter键重新开始。

长按某个方向键后,蛇的运动速度会加快,在随机的地方产生食物,吃到食物就变成新的蛇体,碰到壁或自身则游戏结束,否则正常进行游戏。

以不同的速度和不同方向吃到食物所获得的分数也不相同。

窗口功能说明:设计了三个窗口,分别是游戏主窗口,主菜单窗口,模式选择窗口。

菜单栏分别为:游戏菜单(重新开始)和帮助菜单以及返回(返回主菜单)。

其中,按返回菜单按钮后会显示主菜单,其包括游戏开始、设置、退出游戏三项按钮选择;如果按“设置”按钮会进入“模式选择”窗口。

而模式选择窗口菜单包括了初级、中级、高级、返回按钮。

1、功能1(主菜单窗口)(1)主菜单窗口主要是提供“游戏开始”、“设置”和“退出”按钮。

“游戏开始”按钮按下后会进入“游戏主窗口”开始游戏;“设置”按钮是调用“模式选择”窗口对游戏贪吃蛇的速度进行设置;“退出”按钮按下则会直接退出游戏。

(2)功能1实现的流程图实现的效果图如下:(3)功能1(主菜单窗口)代码:package Swing;import ;import ;import ;import ;import ;import ;import ;import ;import ;import ;import ;public class setMenu extends JFrame {private int speed1 = 200;public static int speed = 200;// static int speed = 20;private JPanel contentPane;/*** Launch the application.*/public static void main(String[] args) {EventQueue.invokeLater(new Runnable() {public void run() {try {setMenu frame = new setMenu(speed);frame.SsetMenu(frame);frame.setVisible(true);} catch (Exception e) {e.printStackTrace();}}});}/*** Create the frame.*/public setMenu(int speed2){speed1=speed2;(speed2);}public void SsetMenu(final setMenu frame) {setTitle("主菜单");setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setBounds(100, 100, 250, 350);contentPane = new JPanel();contentPane.setBackground(new Color(102, 204, 102));contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));setContentPane(contentPane);contentPane.setLayout(null);//按钮:游戏开始JButton NewGameButton = new JButton("");NewGameButton.setIcon(new ImageIcon("img/gamebegin.png"));NewGameButton.setBounds(53, 52, 123, 40);NewGameButton.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {Game gs = new Game(speed1);frame.dispose();}});contentPane.add(NewGameButton);//按钮:游戏设置JButton setButton = new JButton("");setButton.addMouseListener(new MouseAdapter() {@Overridepublic void mouseClicked(MouseEvent e) {model frame1 = new model();frame1.Mmodel(frame1);frame1.setVisible(true);frame.dispose();}});//按钮图片设置setButton.setIcon(new ImageIcon("img/set.png"));setButton.setBounds(53, 128, 123, 45);contentPane.add(setButton);//按钮:游戏推出JButton exitButton= new JButton("");exitButton.setIcon(new ImageIcon("img/exit.png"));exitButton.setBounds(53, 206, 123, 40);exitButton.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {System.exit(0);}});contentPane.add(exitButton);}}2、功能2(模式选择窗口)(1)功能2的文字描述:“模式选择”窗口菜单包括了初级、中级、高级、返回按钮。

其中当选择按下初级、中级、高级按钮后,会弹出一个“游戏难度“窗口,并提示设置成功:**,并按下”确定“按钮后窗口关闭同时模式选择成功,按下”返回“按钮返回主菜单窗口。

(2)功能2(模式选择窗口)实现的流程图实现的效果图如下:(3)功能2(模式选择窗口)代码:package Swing;import ;import ;import ;import ;import ;import ;import ;import ;import ;import ;import ;public class setMenu extends JFrame {private int speed1 = 200;public static int speed = 200;// static int speed = 20;private JPanel contentPane;/*** Launch the application.*/public static void main(String[] args) {EventQueue.invokeLater(new Runnable() {public void run() {try {setMenu frame = new setMenu(speed);frame.SsetMenu(frame);frame.setVisible(true);} catch (Exception e) {e.printStackTrace();}}});}/*** Create the frame.*/public setMenu(int speed2){speed1=speed2;System.out.println(speed2);}public void SsetMenu(final setMenu frame) {setTitle("主菜单");setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setBounds(100, 100, 250, 350);contentPane = new JPanel();contentPane.setBackground(new Color(102, 204, 102));contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));setContentPane(contentPane);contentPane.setLayout(null);//按钮:游戏开始JButton NewGameButton = new JButton("");NewGameButton.setIcon(new ImageIcon("img/gamebegin.png"));NewGameButton.setBounds(53, 52, 123, 40);NewGameButton.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {Game gs = new Game(speed1);frame.dispose();}});contentPane.add(NewGameButton);//按钮:游戏设置JButton setButton = new JButton("");setButton.addMouseListener(new MouseAdapter() {@Overridepublic void mouseClicked(MouseEvent e) {model frame1 = new model();frame1.Mmodel(frame1);frame1.setVisible(true);frame.dispose();}});//按钮图片设置setButton.setIcon(new ImageIcon("img/set.png"));setButton.setBounds(53, 128, 123, 45);contentPane.add(setButton);//按钮:游戏推出JButton exitButton= new JButton("");exitButton.setIcon(new ImageIcon("img/exit.png"));exitButton.setBounds(53, 206, 123, 40);exitButton.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {System.exit(0);}});contentPane.add(exitButton);}}3、功能3(贪吃蛇游戏窗口)(1)能3(贪吃蛇游戏窗口)文字描述:贪吃蛇游戏窗口界面包括蛇体与食物游戏区域,正上方有即时计分框(记录目前所得的分数),左上角有三个下拉菜单选项包括“菜单”下拉菜单,“帮助”菜单,“返回”菜单。

相关文档
最新文档