贪吃蛇游戏(附java代码)_第1页
贪吃蛇游戏(附java代码)_第2页
贪吃蛇游戏(附java代码)_第3页
贪吃蛇游戏(附java代码)_第4页
贪吃蛇游戏(附java代码)_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

学期论文(java程序设计实践2021-2021第二学期)题目:贪吃蛇游戏作者:所在学院:信息科学与工程学院专业年级:指导教师:职称:2021年6月10日摘要近年来,Java作为一种新的编程语言,以其简单性和平台无关性等优点,得到了广泛地应用,特别是Java与万维网的完美结合,使其成为网络编程和嵌入式编程领域的首选编程语言。它以其友好的开发界面、强大的组件支持等优点,得到广大程序员的接受和认可。“贪吃蛇”游戏是一个经典的游戏,它因操作简单、娱乐性强而广受欢迎。本文基于Java技术和JBuilder开发环境,开发了一个操作简单、界面美观、功能较齐全的“贪吃蛇”游戏。整个游戏程序分为二个功能模块,实现了游戏的开始、结束。通过本游戏的开发,达到学习Java技术和熟悉软件开发流程的目的。关键词:贪吃蛇,java,游戏

目录摘要 21.概述 41.1贪吃蛇游戏目的 41.2适应实际,实践编程的能力 41.3基本任务 41.4要求 42.开发环境 52.1开发语言及实现平台或实验环境 52.2开发工具 53.设计思路 63.1游戏主界面模块 63.2游戏控制模块 63.3性能 64.分析 74.1项目概述 74.2本项目主要功能有 74.3可行性分析 74.4其它需求 85.统计流程图 85.1游戏流程图: 8 85.2游戏面板 96.系统测试 115.1测试的意义 116.2测试过程测试过程 116.3测试结果 116.4游戏最终代码 127.心得体会 16

1.概述1.1贪吃蛇游戏目的1)复习、巩固Java语言的基础知识,进一步加深对Java语言的理解和掌握2)掌握java程序设计的思想、流程,企业要求代码规范性及在项目中的应用3)加强理论知识和实际应用的结合应用,锻炼学生的分析解决实际问题的能力。提高学生设计的能力1.2适应实际,实践编程的能力1)培养学生在项目开发中团队合作精神,表达沟通、创新意识能力2)提高学生的科技论文写作能力1.3基本任务1)能在游戏面板中出现蛇和食物2)能通过键盘的上下左右键来控制蛇的移动3)蛇能够吃掉游戏面板中的食物,同时再随机出现另外一个食物4)蛇在碰到游戏面板的边缘时,游戏结束5)蛇在碰到自身时,游戏结束1.4要求1)对系统进行功能模块分析、控制模块分析正确,符合课题要求,实现相应功能;可以加以其他功能或修饰,使程序更加完善、合理2)系统设计要实用,编程简练、规范,可用,功能全面3)说明书、流程图要清楚,有解决问题办法总结4)要求上机调试通过5)设计上交内容:设计报告,源程序文件,可执行文件

2.开发环境2.1开发语言及实现平台或实验环境Windows10或8,JDK1.6与Jcreator4.02.2开发工具SunMicrosystems公司在推出Java语言的同时,推出了一套开发工具JDK。Sun提供的基于字符模式的Java开发工具包JDK:Java开发工具(JDK)是许多Java专家最初使用的开发环境。Java是平台无关的语言是指用Java写的应用程序不用修改就可在不同的软硬件平台上运行。所有的Java文件编辑、编译、调试、解释运行都是通过使用字符命令来执行操作。JDK由一个标准类库和一组建立,测试及建立文档的Java实用程序组成。其核心JavaAPI是一些预定义的类库,开发人员需要用这些类来访问Java语言的功能。JDK是整个Java的核心,包括了Java运行环境(JavaRuntimeEnvirnment),一堆Java工具和Java基础的类库(rt.jar)。不论什么Java应用服务器实质都是内置了某个版本的JDK。因此掌握JDK是学好Java的第一步。JDK里面是java类库和java的语言规范,它提供的是无论你用何种开发软件写java程序都必须用到的类库和java语言规范.没有jdk,你的java程序根本就不能用。而专门运行在x86平台的Jrocket在服务端运行效率也要比SunJDK好很多。但不管怎么说,我们还是需要先把SunJDK掌握好。

3.设计思路贪吃蛇游戏设计与实现,主要分为以下二个模块:游戏主界面模块和游戏控制模块。在此只实现游戏的游戏主界面模块、游戏控制模块。并且只是实现移动速度、重新开始等功能。3.1游戏主界面模块游戏的主界面是进入游戏后,能够给玩家第一感官的部分,主要包括游戏图形区域界面、游戏速度控制、重新开始游戏、速度等级以及当前分数。从很大程度上决定了玩家对游戏的兴趣问题,因此,游戏的主界面应该力求美观,爽心悦目。3.2游戏控制模块这个模块是游戏的中心环节,主要完成控制游戏的速度、重新开始等功能。为了能够给玩家一个很好的游戏环境,这部分应该做到易懂、易操作。设计所开发的是基于Java的一个贪吃蛇游戏软件,主要实现游戏的速度控制。分为:游戏主界面模块、游戏控制模块以二个模块。3.3性能本软件在设计方面本着方便、实用及娱乐性高的宗旨,在对界面进行设计的过程中,始终坚持清晰明了,在性能方面能够实现效率高,不易出错等优点。

4.分析4.1项目概述本项目是开发贪吃蛇游戏,它是一个老少皆宜雅俗共赏的益智类游戏,通过按键控制蛇的移动来吃食物,适于用户在空暇时刻放松身心休闲娱乐。4.2本项目主要功能有游戏:主要实现游戏的开始、继续、结束等功能,游戏开始,在游戏面板中出现蛇和食物,通过键盘的上下左右键来控制蛇的移动,并且蛇能够吃掉游戏面板中的食物,同时再随机出现另外一个食物,蛇每吃掉一个食物后,长度增1,而蛇在碰到游戏面板的边缘时,游戏结束,蛇在碰到自身时,游戏结束;但是如果蛇吃了穿身,穿墙宝贝的食物,蛇就具有了特殊功能,可以实现穿身,穿墙,游戏中可以随时暂停、继续、结束游戏,蛇的开始、暂停、继续、结束都是通过按钮来控制。4.3可行性分析贪吃蛇游戏是一种简单的大众的游戏,自从计算机实现以来,深受广大电脑玩家的喜爱,做一个简单的贪吃蛇小游戏。贪吃蛇的核心算法时如何实现移动和吃掉食物,没有碰到食物的时候,把当前运动方向上的下个节点入队,并以蛇节点的颜色绘制这个节点,然后把头指针所指的节点出队,并以游戏框架内部背景色重绘出队的节点,这样就可以达到移动的效果。而在吃到食物的时候,则只需把食物入队即可。实现贪吃蛇的基本的蛇身移动、吃到食物身体增长、和碰到墙壁或自身死亡,能够暂停和开始。本次设计我将主要运用java语言来完成。Java语言是一种跨平台,适合于分布式计算环境的面向对象编程语言,用Java写的应用程序不用修改就可在不同的软硬件平台上运行。由于Java主要用于网络应用程序开发,因此对安全性有较高的要求。如果没有安全保证,用户从网络下载程序执行就非常危险。Java通过自己的安全机制防止了病毒程序的产生和下载程序对本地系统的威胁破坏。4.4其它需求游戏界面应该力求友好、美观、操作简单5.统计流程图5.1游戏流程图:进入游戏界面进入游戏界面点击字母“点击字母“Z”,游戏开始蛇开始随机出现键盘操作:“左移”“右移”键盘操作:“左移”“右移”“向上”“向下”没有吃到食物且蛇碰到没有吃到食物且蛇碰到边界或者自身单击“单击“Z”游戏继续游戏结束游戏结束5.2游戏面板点击“Z”游戏开始如图:按“”控制蛇的方向如下图:

蛇碰到边界游戏结束,出现“Gameover”,如图:

6.系统测试5.1测试的意义系统测试是为了发现错误而执行程序的过程,成功的测试是发现了至今尚未发现的错误的测试。测试的目的就是希望能以最少的人力和时间发现潜在的各种错误和缺陷。应根据开发各阶段的需求、设计等文档或程序的内部结构精心设计测试用例,并利用这些实例来运行程序,以便发现错误。系统测试是保证系统质量和可靠性的关键步骤,是对系统开发过程中的系统分析系统设计和实施的最后复查。6.2测试过程测试过程(1)拟定测试计划。在制定测试计划时,要充分考虑整个项目的开发时间和开发进童以及一些人为因素和客观条件等,使得测试计划是可行的。测试计划的内容主要有测试的内容、进度安排、测试所需的环境和条件、测试培训安排等。(2)编制测试大纲。测试大纲是测试的依据。它明确详尽地规定了在测试中针对系统的每一项功能或特性所必须完成的基本测试项目和测试完成的标准。(3)根据测试大纲设计和生成测试用例。在设计测试用例的时候,可综合利用前面介绍的测试用例和设计技术,产生测试设计说明文档。(4)实施测试。测试的实施阶段是由一系列的测试周期组成的。在每个测试周期中,测试人员和开发人员将依据预先编制好的测试大纲和准备好的测试用例,对被测软件或设备进行完整的测试。(5)生成测试报告。测试完成后,要形成相应的测试报告,主要对测试进行概要说明,列出测试的结论,指出缺陷和错误,另外,给出一些建议,如可采用的修改方法,各项修改预计的工作量及修改的负责人员。6.3测试结果程序运行正常,没有发现什么错误。6.4游戏最终代码packageGame;importjava.awt.Color;importjava.awt.Font;importjava.awt.Graphics;importjava.awt.event.KeyEvent;importjava.awt.event.KeyListener;importjava.util.Random;importjavax.swing.JFrame;importjavax.swing.JPanel;importjavax.swing.*;publicclasssheextendsJFrame{ MyPaintmp=null; publicstaticvoidmain(String[]args){ sheshe=newshe(); } publicshe(){ mp=newMyPaint(); Threadt1=newThread(mp);//启动mp线程 t1.start(); this.add(mp);//加载面板 this.addKeyListener(mp);//加载按键监听 this.setSize(300,320);//窗口大小 this.setLocationRelativeTo(null);//居中 this.setTitle("贪吃蛇V1.0"); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//点击关闭时,关闭程序 this.setVisible(true);//可见 }}classMyPaintextendsJPanelimplementsKeyListener,Runnable{ yidongyd=newyidong(); publicvoidpaint(Graphicsg){ super.paint(g); g.setColor(Color.ORANGE); g.fillRect(0,0,300,260); g.setColor(Color.black); g.fillOval(yd.swx,yd.swy,20,20); g.setColor(Color.red); g.fillOval(yd.x[0],yd.y[0],20,20);//蛇头显示 g.setColor(Color.blue); for(inti=1;i<yd.sum-1;i++){//蛇身体显示 g.fillOval(yd.x[i],yd.y[i],20,20); } g.drawString("当前分数:"+yd.fenshu,190,275); g.drawString("速度等级:"+yd.lv,10,275); g.setColor(Color.white); if(yd.kaishi==0){//当游戏结束时显示 g.setFont(newFont("黑体",1,20)); g.drawString("Gameover",90,100); g.setFont(newFont("幼体",1,15)); g.drawString("按Z键继续游戏!",80,120); } } publicvoidkeyPressed(KeyEvente){ if(yd.kaishi==1){//当游戏进行时可控制 if(e.getKeyCode()==KeyEvent.VK_UP){ if(yd.fx!=2){yd.fx=8;} }elseif(e.getKeyCode()==KeyEvent.VK_DOWN){ if(yd.fx!=8){yd.fx=2;} }elseif(e.getKeyCode()==KeyEvent.VK_LEFT){ if(yd.fx!=6){yd.fx=4;} }elseif(e.getKeyCode()==KeyEvent.VK_RIGHT){ if(yd.fx!=4){yd.fx=6;} } }else{//当游戏结束时按Z恢复游戏 if(e.getKeyCode()==KeyEvent.VK_Z){ yd.sum=4; yd.x[0]=100;yd.y[0]=100;yd.x[1]=80;yd.y[1]=100;yd.x[2]=60;yd.y[2]=100; yd.yanchi=200;yd.kaishi=1;yd.fx=6;yd.nfx=6;yd.sp=20; } } } publicvoidkeyReleased(KeyEventarg0){} publicvoidkeyTyped(KeyEventarg0){} publicvoidrun(){//刷新面板线程 Threadt2=newThread(yd); t2.start(); while(true){ try{Thread.sleep(10);} catch(InterruptedExceptione){e.printStackTrace();} this.repaint(); }}} classyidongimplementsRunnable{//蛇移动线程intmaxsum=128,sum=4,x[]=newint[maxsum],y[]=newint[maxsum],kaishi=1;//sum:代表蛇的总共长度是sum-1intfx=1,nfx,sp=20,i=0,yanchi=200,fenshu;//方向fx:4=←6=→8=↑2=↓其余:无移动intswx=0,swy=0,shiwu=0;Stringlv="1";Randomsj=newRandom(); @Override publicvoidrun(){ x[0]=100;y[0]=100;//初始化蛇坐标 while(true){ try{Thread.sleep(yanchi);} catch(InterruptedExceptione){e.printStackTrace();} if(shiwu==0){//随机产生食物 swx=(sj.nextInt(10)+1)*20; swy=(sj.nextInt(10)+1)*20; shiwu=1; } if(kaishi==1){fenshu=sum*100-400;}//分数计算 for(inti=sum-1;i>0;i--){//身体坐标刷新 x[i]=x[i-1]; y[i]=y[i-1]; } if(fx==6&&nfx!=4){//方向判断 x[0]+=sp;//移动 nfx=6; }elseif(fx==4&&nfx!=6){x[0]-=sp;nfx=4;} elseif(fx==2&&nfx!=8){y[0]+=sp;nfx=2;} elseif(fx==8&&nfx!=2){y[0]-=sp;nfx=8;} else{if(nfx==6){x[0]+=sp;} if(nfx==4){x[0]-=sp;} if(nfx==2){y[0]+=sp;} if(nfx==8){y[0]-=sp;}} if(x[0]>270){x[0]-=sp;} if(x[0]<0){x[0]+=sp;} if(y[0]>255){y[0]-=sp;} if(y[0]<0){y[0]+=sp;} if(x[0]>swx-5&&x[0]<swx+5&&y[0]>swy-5&&y[0]<swy+5){ sum++;//增加长度 shiwu=0; if(sum==10){yanchi=180;lv="2";}//加速 if(sum==20){yanchi=160;lv="3";} if(sum==30){yanchi=150;lv="4";} if(sum==40){yanchi=140;lv="5";} if(sum==50){yanchi=130;lv="max";} } for(inti=sum-1;i>0;i--){//判断蛇是否吃到自己 if(x[0]>x[i]-5&&x[0]<x[i]+5&&y[0]>y[i]-5&&y[0]<y[i]+5){ sp=0; yanchi=500; kaishi=0; } } } } }

7.心得体会通过这次课程设计,我对这学期所学的JAVA语言程序设计有一个更深刻的了解,将所学的知识应用于实践,由于所学知识有限,为了使游戏能够实现自己预先的构想,我通过上网和去图书馆找程序,比较好的流程图及功能模块,不断阅读修改代码使程序达到预期所要实现的目标,完成课程设计后,可以感觉到自己对Java程序的又有了新的认识。在做Java设计之前也有做过其他的课程设计,大多规模很小。因为其各个模块间的联系十分紧密,代码重复执行率高,当经过无数次的调试、修改后,能最终看到成品,有无比自豪的心情。大学期间做过图书馆管理程序等简单的数据库管理系统的课程设计,思想大致相似,变化范围有限,没有太多自己可发挥的余地。综合运用以前所学习的知识,设计一个JAVA游戏,并能实现以下的功能:游戏暂停、游戏重新开始、游戏的结束。总之,通过本次的课程设计,使我平时学到的理论知识得到了很好地升华,理论与实际得到一次很好的结合,为我今后参加工作打下了坚实的基础,使我受益匪浅。参考文献[1]冯燕奎,赵德奎.JSP实用案例教程[M]清华大学出版社,2021,5:70-100[2]王宜贵软件工程[M]北京:机械工业出版社,2021:20-79[3]蔡剑,景楠.JavaWeb应用开发:J2EE和Tomcat[M].北京:清华大学出版社,2021.[4]JonTitus.ECNTechnicalEditor:”TheEclipseofstand[J].JournalofZhongkaiAgrotechnicalCollege”,Vol.19,No.2,2021.新疆大学课程论文(设计)、学年论文评分表题目

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论