Java-贪吃蛇报告

合集下载

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语言的理解和应用。

贪吃蛇软件实践报告(2篇)

贪吃蛇软件实践报告(2篇)

第1篇一、项目背景随着计算机技术的发展和普及,编程教育越来越受到重视。

为了提高学生的编程能力和逻辑思维,许多高校和培训机构都开设了编程实践课程。

贪吃蛇游戏作为经典的编程学习项目,因其简单易懂、趣味性强而广受欢迎。

本报告旨在记录一次基于Python语言的贪吃蛇游戏软件实践过程,分析项目实现中的关键技术,并总结实践经验。

二、项目目标1. 掌握Python编程基础,熟悉Python图形界面库Tkinter的使用。

2. 理解贪吃蛇游戏的基本原理,包括游戏逻辑、数据结构、事件处理等。

3. 培养编程实践能力,提高问题解决能力。

4. 实现一个功能完善、界面友好的贪吃蛇游戏软件。

三、项目实施1. 需求分析贪吃蛇游戏的核心功能包括:- 游戏界面:显示蛇的移动轨迹、食物、分数等信息。

- 蛇的移动:通过键盘或鼠标控制蛇的上下左右移动。

- 食物生成:在游戏区域内随机生成食物。

- 分数统计:记录玩家得分,并在游戏结束后显示最高分。

- 游戏结束:当蛇碰到墙壁或自身时,游戏结束。

2. 技术选型- 编程语言:Python- 图形界面库:Tkinter- 数据结构:列表(用于存储蛇的身体节点)3. 项目实现(1)初始化游戏界面使用Tkinter库创建游戏窗口,设置窗口大小和标题。

在窗口内创建一个画布(Canvas),用于绘制蛇、食物和分数等信息。

```pythonimport tkinter as tk创建游戏窗口root = ()root.title("贪吃蛇游戏")canvas = tk.Canvas(root, width=400, height=400)canvas.pack()```(2)绘制蛇和食物定义蛇和食物的形状、颜色等属性,使用画布的create_rectangle()方法绘制。

```pythondef draw_snake(snake):for x, y in snake:canvas.create_rectangle(x, y, x+10, y+10, fill="green")def draw_food(food):canvas.create_oval(food[0], food[1], food[2], food[3], fill="red")```(3)控制蛇的移动使用键盘事件绑定函数bind(),监听键盘按键事件,根据按键方向更新蛇的移动方向。

贪吃蛇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贪吃蛇报告

1、设计要求与任务1.1设计要求(1)学习android基础理论,熟悉Java和Android开发包,学习xml文件编写,熟悉Android手机系统设计中的有关资料,熟悉使用eclipse软件工具和ADT插件,了解MVC模式和设计模式。

(2)研究利用MVC模式进行贪吃蛇的设计,分析游戏的设计需求,根据设计需求选择应用程序的设计模式,学习Android UI设计,熟悉使用常用视图布局,熟悉使用事件监听模式。

(3)学习Android手机操作系统中2D画图方法,编写相应代码实现贪吃蛇游戏功能。

(4)对贪吃蛇游戏功能进行测试,并不断完善和改进。

1.2主要任务1、深入学习和理解Android系统原理,掌握Java编程方法;2、深入分析贪吃蛇运行流程,绘制程序流程图;3、了解Android服务的特点,学习开发Android服务程序;4、按照格式要求撰写设计报告。

2、设计正文2.1Android简介Android是Google于2007年11月05日宣布的基于Linux平台的开源移动操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成。

它采用软件堆层(Software Stack,又名软件叠层)的架构,主要分为三部分。

底层以Linux内核工作为基础,由C语言开发,只提供基本功能;中间层包括函数库Library和虚拟机Virtual Machine,由C++开发。

最上层是各种应用软件,包括通话程序,短信程序等,应用软件则由各公司自行开发,以Java作为编写程序的一部分。

不存在任何以往阻碍移动产业创新的专有权障碍,号称是首个为移动终端打造的真正开放和完整的移动软件。

Android系统具有如下4个特点:一、开放性Google与开放手机联盟合作开发了Android,这个联盟由包括中国移动、摩托罗拉、高通、宏达电和T-Mobile 在内的30多家技术和无线应用的领军企业组成。

二、应用程序无界限Android 上的应用程序可以通过标准API 访问核心移动设备功能。

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程序设计》课程设计报告题目:贪吃蛇游戏的设计与实现指导老师:泽刚专业:计算机科学与技术班级: 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++ 语言面向对象技术的核心。

贪吃蛇实验报告实验心得(3篇)

贪吃蛇实验报告实验心得(3篇)

第1篇一、实验背景随着科技的不断发展,计算机编程已成为现代教育的重要组成部分。

贪吃蛇游戏作为一款经典的编程学习项目,不仅能够帮助学生掌握编程基础,还能提高学生的逻辑思维能力和编程实践能力。

本次实验,我选择了使用C语言编写贪吃蛇游戏,通过实验过程,我收获颇丰。

二、实验目的1. 熟悉C语言编程环境,掌握基本的语法和编程技巧。

2. 学习并应用数组和结构体等数据结构,提高编程能力。

3. 理解并实现贪吃蛇游戏的算法,提高逻辑思维能力。

4. 掌握游戏开发的基本流程,提高编程实践能力。

三、实验过程1. 需求分析:在实验开始前,我首先对贪吃蛇游戏进行了需求分析,明确了游戏的基本规则和功能。

游戏规则包括:蛇的移动、食物的生成、蛇的吃食、蛇的生长、游戏结束等。

2. 设计思路:根据需求分析,我制定了以下设计思路:- 使用二维数组表示游戏界面,数组中的每个元素代表一个格子,蛇、食物、墙壁等都在数组中用特定的值表示。

- 使用结构体表示蛇的各个部分,包括蛇头的位置、方向、长度等。

- 通过键盘输入控制蛇的移动方向。

- 使用循环和条件语句实现蛇的移动、食物的生成、蛇的吃食、蛇的生长等功能。

- 判断游戏结束的条件,如蛇头撞墙、撞到自己等。

3. 编程实现:在确定了设计思路后,我开始编写代码。

首先,我定义了二维数组表示游戏界面,并初始化蛇和食物的位置。

然后,编写了蛇的移动、食物的生成、蛇的吃食、蛇的生长等功能。

最后,编写了游戏结束的判断条件。

4. 调试与优化:在编程过程中,我遇到了一些问题,如数组越界、蛇头移动方向错误等。

通过查阅资料和调试,我逐步解决了这些问题。

在实验过程中,我还对代码进行了优化,提高了程序的运行效率。

四、实验心得1. 编程基础的重要性:通过本次实验,我深刻体会到编程基础的重要性。

只有掌握了基本的语法和编程技巧,才能在编程过程中游刃有余。

2. 逻辑思维能力:在编写贪吃蛇游戏的过程中,我需要不断思考如何实现游戏的各个功能,这锻炼了我的逻辑思维能力。

(完整版)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期中课程设计报告题目:贪食蛇游戏程序姓名:学号:院系:专业:年级:贪吃蛇游戏程序设计一、基本内容描述运用java技术开发出贪吃蛇游戏,这个程序是用一个小矩形表示蛇的一节身体,身体每长一节,增加一个矩形块。

移动时必须从蛇头开始,也就是蛇尾不能改作蛇头。

当游戏者按了方向键后,蛇头朝着指定的方向移动,一步移动一节身体。

图形的实现是从蛇头的新位置开始画出蛇。

用户可以用上下左右键控制蛇头的方向,用空格键暂停或继续,非常简单!可以实现如下功能:1.贪吃蛇游戏是大家很常见的小游戏,在生活工作之余大家可以玩它,已达到放松各种压力的目的。

2.游戏可以进行升级,也就是增加吃食物的难度,以便使大家更有挑战性,不觉得太无趣。

3.游戏界面大小可以任意指定,数据从文件读入。

4.利用swing实现良好的GUI界面。

二、需求分析(一)系统功能要求:1.利用方向键来改变蛇的运行方向。

2.空格键暂停或继续游戏,并在随机的地方产生食物。

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

(二)系统设计思路:1.贪吃蛇是很经典的格子游戏。

所谓格子游戏就是在设计游戏时的主要思想是每个设对象都是由格子组成,游戏运行界面也是由格子组成。

格子思想决定了此类游戏在设计时的算法思想。

2.方向键控制一个方块的移动的方法,一个方块的移动是靠移动其坐标位置来实现的。

3.方向键控制是上下左右对一个方块的控制,用四个判断语句实现。

4.蛇的移动算法思想可以看成是第一个方块移动,第二个方块移到第一个方块的位置, 第三个方块移动到第二个方块的位置⋯⋯第N个方块移动到第N-1个方块的位置。

这样连续的移动就是蛇的移动了。

方向控制键控制了第一个方块的移动后,后面方块跟着移动 ,这样也实现了方向键控制对长蛇的移动。

5.食物的随机产生的方法食物的随机产生需要一个随机种子函数然后利用系统时间做为随机种子。

6.蛇的身体变长的方法当然要当蛇吃到食物时才能使身体变长。

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)。

《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.JPanel;import javax.swing.border.EmptyBorder; import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;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);}}2、功能2(模式选择窗口)(1)功能2的文字描述:“模式选择”窗口菜单包括了初级、中级、高级、返回按钮。

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

(2)功能2(模式选择窗口)实现的流程图实现的效果图如下:(3)功能2(模式选择窗口)代码: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.JPanel;import javax.swing.border.EmptyBorder; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent;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(贪吃蛇游戏窗口)文字描述:贪吃蛇游戏窗口界面包括蛇体与食物游戏区域,正上方有即时计分框(记录目前所得的分数),左上角有三个下拉菜单选项包括“菜单”下拉菜单,“帮助”菜单,“返回”菜单。

相关文档
最新文档