ImageVerifierCode 换一换
格式:DOC , 页数:28 ,大小:2.87MB ,
资源ID:2493077      下载积分:3 金币
验证码下载
登录下载
邮箱/手机:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/2493077.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  
声明  |  会员权益     获赠5币     写作写作

1、填表:    下载求助     索取发票    退款申请
2、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
3、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
4、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
5、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
6、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
7、本文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。

注意事项

本文(java实现贪吃蛇.doc)为本站上传会员【精****】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4008-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

java实现贪吃蛇.doc

1、 新 乡 学 院 毕 业 论 文论文题目贪吃蛇游戏院(系)名称计算机与信息工程学院专业名称信息与管理班 级信息管理一班学生姓名学 号指导教师姓名2013年5月完成目录内容摘要1关 键 词1Abstract1Key words11.引言2 1.1课题背景与意义2 1.2java游戏的现状与概述22.系统开发环境3 2.1开发工具3 2.2应用环境3 23java介绍3 23.1java语言的特点4 23.2java的主要特征43.系统需求分析5 3.1需求分析5 3.2可行性分析54.概要设计7 4.1设计思路7 4.2设计方法75游戏中所需的实体类分析与实现 75.1游戏显示面板(SnakeP

2、anel)类75.2蛇(Snake)类85.3食物类(Egg)类8 5.4游戏窗口(SnakeFrame)类 86.游戏详细设计87. 重难点分析1171监听事件的实现11 72蛇身移动的线程实现1273项目的主程序入口设计13 74蛇的数据结构设计与移动显示14 75修正蛇的移动与显示问题1776 编写与测试表示食物的类并实现吃食物18 参考文献21致 谢22内容摘要:本文用J2SE实现大家耳熟能详的一个贪吃蛇游戏来综合运用所学知识,本游戏运用软件工程思想(螺旋模型),打好游戏主体框架,JAVA的面向对象思想,封装类,接口等概念,来完成本游戏,达到综合运用知识的目的。关 键 词:中央控制器;

3、游戏面板;食物;蛇Abstract: In this paper, J2SE implementation of a Snake game familiar to the integrated use of what they have learned, this game is the use of software engineering thinking (spiral model), the main framework of the fight game, JAVA object-oriented thinking, wrapper classes, interface concep

4、ts to complete this game, hitting the integrated use of knowledge and purpose. The game development platform: WINXP;. JAVA Development Environment: JDK1.5 + Eclipse;. Development Languages: J2SE去掉Keywords:Controller;GamePanel;Food;Snake;251引言1.1课题背景与意义 贪吃蛇,手机上一个必不可少的游戏。但是你知道贪吃蛇这个游戏的由来吗?据说,蛇引诱夏娃吃了苹果之

5、后,就被贬为毒虫,阴险的象征。而蛇吃东西是整只动物吞进去的,大概在文艺复兴的时候就有人发明的一种游戏,是现在贪吃蛇的前身。后来慢慢的发展就变成了今天的贪吃蛇了。 贪吃蛇是大众化的一个程序,人们手机中是一个很常见的一个游戏,人们对它并不陌生,在紧张 的现在生活中给人们带来了不少的乐趣,我写的这个贪吃蛇游戏能满足人们业余时间的适当放松,再紧张的生活节奏中适当的放松一下,保持好的心态。 在这个程序中我用了Java语言来编写,运用了Java中的一些常用的功能,Java语言是在国内外广泛使用的一种语言。Java语言功能丰富、表达能力强、使用灵活方便、应用面广、目标程序效率高、可移植性好,纯粹的面向对象的

6、编程,特别适合用于编写应用软件。1.2JAVA游戏的现状与概述在现今电子信息高速发展的时代,电子游戏已经深入人们的日常生活,成为老少皆宜的娱乐方式。但是游戏设计结合了日新月异的技术,在一个产品中整合了复杂的设计、艺术、声音和软件,所以并不是人人皆知。直到今天,在中国从事游戏设计的人仍然很少,但是游戏行业的发展之快,远超如家电、汽车等传统行业,也正因为如此,游戏人才的教育、培养远落后于产业的发展。Java作为一种分布式和可移植的计算机语言,在软件开发上有着特别的优点。它开发方便、快捷,安全性高,在当今计算机飞速发展的时代,Java技术的平台无关性、可重用性、模块化等特点大大减少了重复劳动。本论文

7、介绍的是使用Java开发的贪吃蛇游戏,本游戏的主要背景是毕业课程设计,不注重直接的经济效益和其后的发展方向,只在注重自身水平和能力的提高。选择JAVA作为编程语言。需要对其变量定义、变量初始化、界面初始化、游戏初始化、然后进入游戏、处理游戏过程中的各种操作熟悉。此次设计在Microsoft Windows XP系统下,以Java为开发语言,在Eclipse平台上进行游戏的开发。2.系统开发环境 2.1 开发工具第1章的2级标题你采用了顶格,那这里和以后的标题页要采用顶格排版。后面类似问题自己查找修改。 Sun Microsystems公司在推出Java语言的同时,推出了一套开发工具JDK。Su

8、n提供的基于字符模式的Java开发工具包JDK: Java开发工具(JDK)是许多Java专家最初使用的开发环境。Java是平台无关的语言是指用Java写的应用程序不用修改就可在不同的软硬件平台上运行。 Java源程序编写借助于记事本,Editpuls,UltraEdit等第三方编辑工具。 所有的Java文件编辑、编译、调试、解释运行都是通过使用字符命令来执行操作。JDK由一个标准类库和一组建立,测试及建立文档的Java实用程序组成。其核心Java API是一些预定义的类库,开发人员需要用这些类来访问Java语言的功能。JDK 是整个Java的核心,包括了Java运行环境(Java Runti

9、meEnvirnment),一堆Java工具和Java基础的类库(rt.jar)。不论什么Java应用服务器实质都是内置了某个版本的JDK。因此掌握JDK是学好Java的第一步。 JDK里面是java类库和java的语言规范,它提供的是无论你用何种开发软件写java程序都必须用到的类库和java语言规范.没有jdk,你的java程序根本就不能用。 最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK,例如IBM公司开发的JDK,BEA公司的Jrocket,还有GNU组织开发的JDK等等。其中IBM的JDK包含的JVM(Java Virtual Mach

10、ine)运行效率要比SunJDK包含的JVM高出许多。而专门运行在x86平台的Jrocket在服务端运行效率也要比SunJDK好很多。但不管怎么说,我们还是需要先把Sun JDK掌握好。首行缩进2字符。建议打开工具选项里的查看隐藏字符。后面这种问题更严重。2.2 应用环境本游戏开发平台:WINXP;JAVA开发环境: JDK1.5 +Eclipse;开发语言:J2SE23java介绍231JAVA语言的特点 Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的动态语言。 问题同上,后面类似的自己修改。232JAVA的主要特性 JavaJ语言

11、是简单的。Java语言的语法与C语言和C+语言很接近,使得大多数程序员很容易学习和使用Java。JavaJ语言是一个面向对象的。Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。Java语言是分布式的语言是分布式的。Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、 ServerSocket等。Java语言是健壮的。Java的强类型机

12、制、异常处理、废料的自动收集等是Java程序健壮性的重要保证。Java语言是安全的。Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。除了Java语言具有的许多安全特性以外,Java对通过网络下载的类具有一个安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类SecurityManager)让Java应用设置安全哨兵。Java语言是体系结构中立的。Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节。Java语言是可移植的。这种可移植性来源于体系结构中立性,另外,Jav

13、a还严格规定了各个基本数据类型的长度。Java系统本身也具有很强的可移植性,Java编译器是用Java实现的,Java的运行环境是用ANSI C实现的。Java语言是解释型的。如前所述,Java程序在Java平台上被编译为字节码格式, 然后可以在实现这个Java平台的任何系统中运行。在运行时,Java平台中的Java解释器对这些字节码进行解释执行,执行过程中需要的类在联接阶段被载入到运行环境中。Java是高性能的。与那些解释型的高级脚本语言相比,Java的确是高性能的。事实上,Java的运行速度随着JIT(Just-In-Time)编译器技术的发展越来越接近于C+。 Java语言是多线程的。在

14、Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建。Java语言是动态的。Java语言的设计目标之一是适应于动态变化的环境。Java程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类。3系统需求分析3.1需求分析 本系统主要是完成贪吃蛇游戏的基本操作。用户可以自己练习和娱乐。本系统需要满足以下几点要求: (1) 利用方向键来改变蛇的运行方向。 (2) 空格键暂停或继续游戏,并在随机的地方产生食物。 (3) 吃到食物就变成新的蛇体,碰到壁或自身则游戏结束,否则正常运行。3.2可行性分析 贪吃蛇游戏是一种简单的大众的游戏,自从计算机实现以来,深受广

15、大电脑玩家的喜爱,做一个贪吃蛇游戏。 贪吃蛇的核心算法时如何实现移动和吃掉食物,没有碰到食物的时候,把当前运动方向上的下个节点入队,并以蛇节点的颜色绘制这个节点,然后把头指针所指的节点出队,并以游戏框架内部背景色重绘出队的节点,这样就可以达到移动的效果。而在吃到食物的时候,则只需把食物入队即可。实现贪吃蛇的基本的蛇身移动、吃到食物身体增长、和碰到墙壁或自身死亡,能够暂停和开始。 本次设计我将主要运用java语言来完成。Java语言是一种跨平台,适合于分布式计算环境的面向对象编程语言,用Java写的应用程序不用修改就可在不同的软硬件平台上运行。 由于Java主要用于网络应用程序开发,因此对安全性

16、有较高的要求。如果没有安全保证,用户从网络下载程序执行就非常危险。Java通过自己的安全机制防止了病毒程序的产生和下载程序对本地系统的威胁破坏。4概要设计4.1设计思路 本次设计的重点之处在于编程思想的形成,设计图像界面,产生随机食物及其位置。 这个程序的关键是表示蛇的图形以及蛇的移动。用一个小矩形表示蛇的一节身体,身体每长一节,增加一个矩形块。移动时必须从蛇头开始,所以蛇不能向相反方向移动,也就是蛇尾不能改作蛇头。如果不按任何键,蛇自行在当前方向上前移,当游戏者按了有效的方向键后,蛇头朝着指定的方向移动,一步移动一节身体,所以当按了有效的方向键后,先确定蛇头的位置,然后蛇身体随着蛇头移动,图

17、形的实现是从蛇头的新位置开始画出蛇 。4.2设计方法 (1) 总体设计流程图,如下图所示:游戏开始 选择难度判断蛇的起行方向蛇头移动是下面的箭头方向是什么意思呢?下面几个也是如此。有“是”,“否”在哪里呢?是否吃掉食物 是蛇身长度+1判断当前蛇身的节点是否咬到做自己 否是是否碰到墙壁 是 否蛇身再次前移 否游戏结束5. 游戏中所需的实体类分析与实现 涉及到几个对象(类) 每个类有什么方法5.1 游戏显示面板(SnakePanel)类该类有一下几个方法void paint(); /用来显示游戏面板Void KeyPassed();/键盘控制Void startRun();/ 线程实现移动5.2

18、蛇(Snake)类,该类有一个方法:void move(); /移动5.3 食物类(Egg)类5.4 游戏窗口(SnakeFrame)类,该类有以下方法这几个小节只有一句话,不至于单独成节啊。:Void main();主方法,运行程序showMe();显示游戏开始的界面6.详细设计本有序遵循MVC(Model-View-Controller)所以首先建立以上几个实体类并定义相应的包名rac下:Egg、Snake、SnakeFrame、SnakePanel四个类,按照以上说明的各个类具有的方法,写上如下代码:Egg类package rac;import javax.swing.JPanel;pu

19、blic class Egg int x;int y;int length;JPanel panel;Snake类package rac;import java.util.Arrays;import javax.swing.JPanel;public class Snake public final static int UP = 0;public final static int DOWN = 1;public final static int LEFT = 2;public final static int RIGHT = 3;int x;int y;int length;int dire

20、ction;int speed;JPanel panel;boolean started;boolean dead;public Snake() /移动控制public void move() switch (direction) case UP:if (y0 = 0 & started) for (int i = x.length - 1; i 0; i-) xi = xi - 1;yi = yi - 1;/蛇吃蛇情况if (i 4 & xi = x0 & yi = y0) dead = true;y0 -= speed;if (y0 0; i-) xi = xi - 1;yi = yi -

21、 1;y0 = 0;dead = true;break;SnakeFrame类package rac;import javax.swing.JFrame;public class SnakeFrame extends JFrameprivate SnakePanel panel;public SnakeFrame()panel = new SnakePanel();this.addKeyListener(panel);this.add(panel); panel.startRun();public void showMe()this.setSize(1000, 640);this.setTit

22、le(贪吃蛇);this.setVisible(true);this.setDefaultCloseOperation(SnakeFrame.EXIT_ON_CLOSE);public static void main(String args) new SnakeFrame().showMe();SnakePanel类package rac;import javax.swing.JFrame;public class SnakeFrame extends JFrameprivate SnakePanel panel;public SnakeFrame()panel = new SnakePan

23、el();this.addKeyListener(panel);this.add(panel); panel.startRun();public void showMe()this.setSize(1000, 640);this.setTitle(贪吃蛇);this.setVisible(true);this.setDefaultCloseOperation(SnakeFrame.EXIT_ON_CLOSE);public static void main(String args) new SnakeFrame().showMe();7.重难点分析 71监听事件的实现由于蛇不能直接操作显示面板

24、(GamePanel)所以这里定义一个监听器里面定义一个方法:void snakeMove(Snake); 每当蛇移动一步就触发监听器,调用snakeMoved()由Controller去实现,然后由控制器去触发显示面板的事件源,让显示面板完成相应操作。逻辑图如下:注意排版,又不是写代码,不至于层层缩进,标题顶格,正文首行缩进2字符。图2 事件监听建立联系在Snake 中增加蛇的方向常量:public final static int UP = 0;public final static int DOWN = 1;public final static int LEFT = 2;public

25、final static int RIGHT = 3;实现move()方法public void move() switch (direction) case UP:if (y0 = 0 & started) for (int i = x.length - 1; i 0; i-) xi = xi - 1;yi = yi - 1;/蛇吃蛇情况if (i 4 & xi = x0 & yi = y0) dead = true;y0 -= speed;if (y0 0; i-) xi = xi - 1;yi = yi - 1;y0 = 0;dead = true;break;72蛇身移动的线程实现线程

26、实现移动public void startRun() new Thread() public void run() while (true) snake.move();try Thread.sleep(level); catch (InterruptedException e) e.printStackTrace();repaint();.start();73项目的主程序入口设计package rac;import javax.swing.JFrame;public class SnakeFrame extends JFrameprivate SnakePanel panel;public S

27、nakeFrame()panel = new SnakePanel();this.addKeyListener(panel);this.add(panel); panel.startRun();public void showMe()this.setSize(1000, 640);this.setTitle(贪吃蛇);this.setVisible(true);this.setDefaultCloseOperation(SnakeFrame.EXIT_ON_CLOSE);public static void main(String args) new SnakeFrame().showMe()

28、;运行这个带有main()的类,当蛇移动一次,就触发监听器,有控制器(controller)给SnakeFrame发送指令,让它重画,SnakePanel中的public void keyPressed(KeyEvent e) switch (e.getKeyCode() case KeyEvent.VK_UP:if (snake.direction != 1) snake.started = true;snake.direction = 0;snake.move();repaint();Break;这个方法依次画出几个实体,所以打印出上述信息。到了这一步我们的基本框架打好了,下面开始第5步7

29、4蛇的数据结构设计与移动显示 分析:要区分蛇头和蛇尾巴,这就要求这个数据结构是有序的,还要经常访问第一个和最后一个节点,所以LinkedList最合适,因为它有getFirst(),getLast()方法和removeLast()方法蛇下一步移动到哪是由方向控制的,前面已经定义过,蛇透坐标如下图:图3 蛇头方向计算新蛇头坐标SnakePanle中的吞食物,蛇身增加的实现;/ 吞蛋的实现while (Math.sqrt(Math.pow(egg.x - snake.x0, 2)+ Math.pow(egg.y - snake.y0, 2) = 0 & started) for (int i =

30、x.length - 1; i 0; i-) xi = xi - 1;yi = yi - 1;/蛇吃蛇情况if (i 4 & xi = x0 & yi = y0) dead = true;y0 -= speed;if (y0 0; i-) xi = xi - 1;yi = yi - 1;y0 = 0;dead = true;此时就修正了上面的问题,可以运行Game类来测试下76 编写与测试表示食物的类并实现吃食物 / 避免出现蛋出在蛇身上的情况while (true) boolean isSnake = false;int tx = rom.nextInt(49) * 20;int ty =

31、rom.nextInt(30) * 20;for (int i = 0; i snake.x.length; i+) if (tx = snake.xi & ty = snake.yi) isSnake = true;break;if (isSnake) continue;egg.x = tx;egg.y = ty;break;g.drawImage(eggs, egg.x, egg.y, egg.length, egg.length,this);score += 10;g.setColor(Color.black);g.setFont(font_s);g.drawString(分数: + s

32、core, 10, 20);if (snake.direction = 0) g.drawImage(head_up, snake.x0, snake.y0,snake.length, snake.length, this);if (snake.direction = 1) g.drawImage(head_down, snake.x0, snake.y0,snake.length, snake.length, this);if (snake.direction = 2) g.drawImage(head_left, snake.x0, snake.y0,snake.length, snake.length, this);if (snake.direction =

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服