欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    贪吃蛇的研究与设计Word版.docx

    • 资源ID:2663802       资源大小:643.37KB        全文页数:35页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    贪吃蛇的研究与设计Word版.docx

    1、贪吃蛇的研究与设计Word版广东技术师范学院天河学院JAVA程序设计课程设计报告 题 目:_贪吃蛇的研究与设计_学 号: 2012041543210_ 2012041543210_ 2012041543210_ 班 级: _本软件122班_ 小组成员:_林盛东 郭威 彭更明_ 指导教师: 郑英姿 所属系部: 计算机科学与技术系 2014年 4月 25 日贪吃蛇的研究与设计摘 要近年来,Java作为一种新的编程语言,以其简单性、可移植性和平台无关性等优点,得到了广泛地应用,特别是Java与万维网的完美结合,使其成为网络编程和嵌入式编程领域的首选编程语言。“贪吃蛇”游戏是一个经典的游戏,它因操作简

    2、单、娱乐性强而广受欢迎。本文基于Java技术和NetBeans开发环境,开发了一个操作简单、界面美观、功能较齐全的“贪吃蛇”游戏。整个游戏程序分为二个功能模块,八个类模块,实现了游戏的开始、暂停、结束。通过本游戏的开发,达到学习Java技术和熟悉软件开发流程的目的。本文在介绍Java相关技术和国内外发展现状的基础上,对“贪吃蛇”游戏的整个生命周期的各个开发阶段进行了详细地介绍。首先,分析了开发本游戏软件的可行性,重点分析本设计所采用的技术的可行性。其次,从游戏主界面等几方面,分析了本游戏的功能需求;从可使用性和安全性方面分析了属性需求。然后,进行了游戏的概要设计和详细设计,这也是本文的重点。概

    3、要设计给出二个功能模块的主框架以及八个类模块的函数调用关系;详细设计介绍了Java2标准运行环境的配置,重点给出各个类模块的程序列表,介绍了各个类包含的变量、使用的方法,展示了游戏的界面。为了保证程序代码的正确性和功能实现的可靠性,本文还介绍了游戏软件的程序调试过程和功能测试结果。关键词:Java;NetBeans;贪吃蛇;开发流程 1 引言1.1 课题介绍贪吃蛇是世界知名的益智类小游戏,选择这个题目一方面的原因是为了将我们自己的所学知识加以运用;另一方面,虽然很小就接触这个游戏,但是它的制作方法对我们而言还是很神秘的。我们希望通过自己的所学知识把它剖析开来,通过自己的动手实践,真正的了解它的

    4、本质和精髓。 希望通过这次实践,我们能从中提高自己的编程能力。并从中学会从零开始分析设计程序。 本游戏的开发语言为Java。开发工具选用NetBeans。 Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的动态语言。这里采用Java作为开发语言主要是基于Java的面向对象和可移植性。 NetBeans 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。 数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心

    5、选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。 类是 面向对象程序设计语言中的一个概念。 类(Class)实际上是对某种类型的对象定义变量和方法的原型。它表示对现实生活中一类具有共同特征的事物的抽象,是面向对象编程的基础。 类是对某个对象的定义。它包含有关对象动作方式的信息,包括它的名称、方法、属性和事件。实际上它本身并不是对象,因为它不存在于内存中。当引用类的代码运行时,类的一个新的实例,即对象,就在内存中创建了。虽然只有一个类,但能从这个类在内存中创建多个相同类型的对象。1.2 设计的背景和意义贪吃蛇游戏一款非常经典的手机游戏,因为它比较简单有趣

    6、,无论老少都比较适合。贪吃蛇的设计对每一个Java语言设计者进行语言提高和进阶都是一个很好的锻炼机会。 贪吃蛇游戏的设计比较复杂,它涉及面广、牵涉方面多,如果不好好考虑和设计,将难以成功开发出这个游戏。在这个游戏的设计中,牵涉到图形界面的显示与更新、数据的收集与更新,并且在这个游戏的开发中,还要应用类的继承机制以及一些设计模式。因此,如何设计和开发好这个贪吃蛇游戏,对于提高Java开发水平和系统的设计能力有极大的帮助。在设计开发过程中,需要处理好各个类之间的继承关系,还要处理各个类相应的封装,并且还要协调好各个模块之间的逻辑依赖关系和数据通信关系。正是因为如此,本次毕业设计的目的在于学习Jav

    7、a程序设计基本技术,学习用NetBeans开发Java程序的相关技术,熟悉游戏“贪吃蛇”的需求,熟悉项目开发的完整过程。学会怎样进行一个项目的需求分析、概要设计、详细设计等软件开发过程,熟练地掌握Java程序设计的基本技术和方法,熟练地掌握NetBeans环境的使用方法,培养起初步的项目分析能力和程序设计能力。2系统分析2.1可行性分析贪吃蛇游戏是一种简单的大众的游戏,自从计算机实现以来,深受广大电脑玩家的喜爱,做一个简单的贪吃蛇小游戏。 贪吃蛇的核心算法时如何实现移动和吃掉食物,没有碰到食物的时候,把当前运动方向上的下个节点入队,并以蛇节点的颜色绘制这个节点,然后把头指针所指的节点出队,并以

    8、游戏框架内部背景色重绘出队的节点,这样就可以达到移动的效果。而在吃到食物的时候,则只需把食物入队即可。实现贪吃蛇的基本的蛇身移动、吃到食物身体增长、和碰到墙壁或自身死亡,能够暂停和开始。本次设计我将主要运用java语言来完成。Java语言是一种跨平台,适合于分布式计算环境的面向对象编程语言,用Java写的应用程序不用修改就可在不同的软硬件平台上运行。 由于Java主要用于网络应用程序开发,因此对安全性有较高的要求。如果没有安全保证,用户从网络下载程序执行就非常危险。Java通过自己的安全机制防止了病毒程序的产生和下载程序对本地系统的威胁破坏。2.2系统需求分析2.2.1 功能需求本系统主要是完

    9、成贪吃蛇游戏的基本操作。用户可以自己练习和娱乐。本系统需要满足以下几点要求:(1) 利用方向键来改变蛇的运行方向。 (2) 空格键暂停或继续游戏,并在随机的地方产生食物。 (3) 吃到食物就变成新的蛇体,碰到墙或者自身则游戏结束,否则正常运行。2.2.2 性能需求本软件在设计方面本着方便、实用及娱乐性高的宗旨,在对界面进行设计的过程中,始终坚持清晰明了,在性能方面能够实现效率高,不易出错等优点。2.2.3界面需求游戏主界面模块:主要包括游戏图形区域界面、游戏开始按钮、暂停游戏按钮、关闭按钮。游戏的主界面力求美观,爽心悦目。游戏控制模块:主要完成控制游戏的开始、暂停、退出等功能,这部分做到易懂、

    10、易操作而且准确率高,不易出错。游戏的主界面是进入游戏后,能够给玩家第一感官的部分,主要包括游戏图形区域界面、游戏的速度选择更新界面、游戏分数的显示更新界面、新生方块的预览、游戏开始按钮、暂停游戏按钮、退出游戏按钮以及游戏排行榜按钮。从很大程度上决定了玩家对游戏的兴趣问题,因此,游戏的主界面力求美观,爽心悦目。游戏控制模块是游戏的中心环节,主要完成控制游戏的开始、暂停、退出等功能。为了能够给玩家一个很好的游戏环境,这部分做到易懂、易操作。2.3开发环境操作系统及版本:Windows7工具软件:jdk1.7,NetBeans编程语言:JAVA语言3系统概要设计3.1程序流程图 3.2类模块设计本系

    11、统共包括8个类文件。java源文件及其功能如表所示。表3.1 java源文件及其功能序号文件名主要功能1Main该文件为程序入口,含有main方法。2MainGui主界面类,该类用来创建游戏的用户界面,继承自JFrame类。对主窗口的属性的设置、 注册监听者等3SnakeKeyListener蛇的监听器,根据按键改变蛇的方向、速度等设置4Food该文件实现组成蛇身的单位-食物。5Box该文件实现蛇的活动场所6Snake该文件实现蛇类,包含有关蛇的方法属性7Clock该文件为工具类,实现时间,速度的控制8PropertyPanelsettingPanel的可视化设置.设置游戏运行状态,移动以及分

    12、数更新,实现上下左右移动的方法接口。3.3 系统数据结构设计3.3.1 蛇、食物的表示 我们可以把显示区域想象成一个大大的表格,里面的格子就是组成蛇的基本单位,一个格子可以代表一个食物,使用坐标来区分这些格子。 3.3.2 蛇的移动 蛇向前移动一步,可以看作是蛇头前面增加了一个节点,蛇的尾巴上少了一个节点(即去尾,加头) 3.3.3 存储蛇身的数据结构 由于要区分蛇头和蛇尾,因此这个数据结构必须是有序的。另一方面,我们需要经常的访问第一个和最后一个节点,所以LinkedList最合适。因为它有getFirst(),getLast(),和removeLast()方法。 3.3.4 蛇的移动方向

    13、这里讨论蛇的移动方向控制。蛇下一步移动到哪里,是由方向来控制的。 这里我们用int型常量来表示蛇的移动方向。因为我们是根据原蛇头的坐标和方向来确定新蛇头的坐标。在原坐标的基础上,根据蛇头的运动方向来确定新蛇头的坐标,比如向上移动就是y-1. 3.3.5 如何显示蛇身 显示蛇身,其实就是填充用颜色填充格子。 需要4个参数,像素坐标x,像素坐标y,格子宽度,格子高度。 像素坐标就是矩形左上角的坐标 3.3.6 蛇身的移动方向 (1)相反方向 和上一次移动的方向相反的方向称为相反方向,这种输入应该忽略。这样可以防止蛇从自己的身体中穿过。 (2)无效方向 在蛇的这一次移动之后和下一次移动之前这个时间间

    14、隔内输入了多个非相反方向,只有最后一个是有效方向,其他的都是无效方向。 蛇的最终运动方向以有效方向为准。 3.3.7 吃到食物判定 这里通过判定坐标是否重合来判断,只需要判断蛇头是否和食物重合就可以了,因为蛇的身体都是走蛇头走过的地方。4 系统详细设计与实现4.1 程序设计4.1.1 主类Main (1)主类为此程序的入口,定义了Main的对象frame,开始运行此程序。 (2)源代码见文件Main.Java4.1.2 类MainGui(1)成员变量见表4.1表4.1 主要成员变量成员变量描述变量类型名称设置面板private settingPanelsettingPanel按键监听priva

    15、te keyListenerkeyListener蛇场对象private BoxBox主窗口高度int windowHeightwindowHeight主窗口宽度int windowWidthwindowWidth (2)方法见表4.2表4.2 主要方法方法名功能addListener()注册监听getBox()更新蛇长getSettingPanel()更新方向 4.1.3 类Snake (1)成员变量见表4.3表4.3 主要成员变量成员变量描述变量类型名称上下左右(方向)IntUP、DOWN、LEFT、RIGHT蛇体LinkedListbody蛇场Boxbox前进方向intdirection

    16、是否活着booleanislive颜色ColorsnakeColor下一节点坐标PointnextSite (2)方法见表4.4表4.4 主要方法方法名功能init()初始化蛇,方向初始化为向右,增加初始的节点countNewSite()计算下一个位置drawMe()将蛇画出stareNewGame()死亡之后重新开始游戏 4.1.4 类Food (1)成员变量见表4.5表4.5 主要成员变量成员变量描述变量类型名称颜色foodColorColor 表4.6 主要方法方法名功能drawMe()将食物画出newMe()重新产生一个食物 4.1.5 类Box 蛇场类。继承自JPanel,Box,蛇

    17、的活动场所,也是食物出现的地方. 重写了该类的paint()方法,当重绘时时会调用蛇、食物、网格的绘制方法。由定时器Timer控制,每隔delay时间,执行: 1.重新计算一下位置2.绘制新图像3.更新属性面板的显示,即该游戏的主要原理。属性面板的时间由countTimer中获取,运行在另外一个线程中,减小计时的误差4.1.6 类SnakeKeyListener此类为蛇的监听类,实现蛇运动的监听,根据按键改变蛇的方向、速度等设置该类包含控制器和处理按键逻辑,控制器,控制Box, Snake, Food.负责游戏的逻辑.处理按键事件,可以处理Snake 触发的事件,该类覆盖keyPressed(

    18、)方法:处理按键事件, 根据按键不同, 发出不同的指令: UP: 改变蛇的移动方向为向上 DOWN: 改变蛇的移动方向为向下 LEFT: 改变蛇的移动方向为向左 RIGHT: 改变蛇的移动方向为向右 newGame()开始新游戏的方法源代码见文件SnakeKeyListener.java4.1.7 类Clock 主要功能是计时。 源代码见文件Globel.java4.1.8 类 PropertyPanelsettingPanel的可视化设置.设置游戏运行状态,移动以及分数更新,实现上下左右移动的方法接口。 源代码见文件PropertyPanel.java4.2 各功能界面截图4.2.1 贪吃蛇

    19、游戏的基本运行界面图4.1初始界面图4.2 控制面板4.2.2 程序开始运行界面(1)按enter键开始游戏,并有暂停和继续功能: 图4.4 开始游戏(地图1)(2)、在蛇运动过程中可以按F11、F12或Z、X进行减速或加速。(3)、当蛇运动过程中碰到壁时会死亡,选择是否继续。如图(3)游戏过程中,若蛇头碰到蛇尾 则游戏结束,选择是否继续5测试5.1 测试的意义系统测试是为了发现错误而执行程序的过程,成功的测试是发现了至今尚未发现的错误的测试。 测试的目的就是希望能以最少的人力和时间发现潜在的各种错误和缺陷。应根据开发各阶段的需求、设计等文档或程序的内部结构精心设计测试用例,并利用这些实例来运

    20、行程序,以便发现错误。系统测试是保证系统质量和可靠性的关键步骤,是对系统开发过程中的系统分析系统设计和实施的最后复查。根据测试的概念和目的,在进行信息系统测试时应遵循以基本原则。 (1)拟定测试计划。在制定测试计划时,要充分考虑整个项目的开发时间和开发进童以及一些人为因素和客观条件等,使得测试计划是可行的。测试计划的内容主要有测试的内容、进度安排、测试所需的环境和条件、测试培训安排等。(3)根据测试大纲设计和生成测试用例。在设计测试用例的时候,可综合利用前面介绍的测试用例和设计技术,产生测试设计说明文档,其内容主要有被测项目、输人数据、测试过程、预期输出结果等。 (4)实施测试。测试的实施阶段

    21、是由一系列的测试周期组成的。在每个测试周期中,测试人员和开发人员将依据预先编制好的测试大纲和准备好的测试用例,对被测软件或设备进行完整的测试。 (5)生成测试报告。测试完成后,要形成相应的测试报告,主要对测试进行概要说明,列出测试的结论,指出缺陷和错误,另外,给出一些建议,如可采用的修改方法,各项修改预计的工作量及修改的负责人员。 程序运行正常,没有发现什么错误。6结论通过这次课程设计,我对上学期所学的JAVA语言程序设计有一个更深刻的了解,将所学的知识应用于实践,由于所学知识有限,为了使游戏能够能够实现自己预先的构想,我们这组通过上网找代码和去图书馆借书找程序,比较画好的流程图及功能模块,不

    22、断阅读修改代码使程序达到预期所要实现的目标,完成课程设计后,可以感觉到自己对Java程序的又有了新的认识。在做Java设计之前也有做过其他的课程设计,大多规模很小。综合运用以前所学习的知识,设计一个JAVA小游戏即贪吃蛇,并能实现以下的功能:游戏背景及样式的控制、蛇与食物的颜色控制、游戏的速度控制、游戏暂停、游戏重新开始、游戏的结束。因为其各个模块间的联系十分紧密,代码重复执行率高,当经过无数次的调试、修改后,能最终看到成品,有无比自豪的心情。总之,通过本次的课程设计,使我平时学到的理论知识得到了很好地升华,理论与实际得到一次很好的结合,为我今后参加工作打下了坚实的基础,使我受益匪浅。参考文献

    23、1Narcisio Tumushabe , TAN Guan-zheng An overview of authentication security features in ASP. NET, School of Computer Science and Information Technology 2003(3)2Anders Hejlsberg Scott Wiltamuth Peter Golde. The C# Programming LanguageM. POSTS&TELECOM Press,2008.3 Karli Watson. Beginning Visual C# 200

    24、5 M. Wrox,20054马苏拉,许锦兴.校友通信录的UML建模和C#实现J.计算机与数字工程,2008年第12期5徐龙.基于ASP.NET技术的电子留言板设计与实现J.电脑知识与技术,2009年第25期6刘震.广播电视大学校友录系统的实现J.江西广播电视大学学报,2009年第1期7 马骏,郑逢斌,沈夏炯. C#网络应用高级编程. 人民邮电出版社,20098梅晓冬,颜烨青. Visual C#网络编程技术与实践.清华大学出版社,2008.9张军伟.基于三层框架的C# ASP.NE工程序设计J.电脑编程技巧与维护,2010年第9期10刘克成,张凌晓.C#程序设计.中国铁道出版社,2009.1

    25、1刘艾侠.基于A的web service调用J.科技信息,2010,第23期12任艳斐 基于VS.NET动态移动Web查询系统的设计,通信技术2008年4期 13王西锋,张晓孪.应用程序中数据库自动备份的实现J.现代电子技术2008年8期附录 主要代码清单一MainGuiimport java.awt.BorderLayout;import java.awt.Dimension;import java.awt.Toolkit;import javax.swing.JFrame;import mysnake.box.Box;import mysnake.contral.SnakeKeyListe

    26、ner;import mysnake.settingground.PropertyPanel;public class MainGui extends JFrame int windowHeight;/加数字是为了显示效果,下同 int windowWidth; private Box box = new Box(this); SnakeKeyListener keyListener = new SnakeKeyListener(this); private PropertyPanel settingPanel = new PropertyPanel(); public MainGui() s

    27、uper(贪吃蛇1.0); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); windowWidth = 880 + 17; windowHeight = 600 + 40; Toolkit kit = Toolkit.getDefaultToolkit(); /定义工具包 Dimension screenSize = kit.getScreenSize(); /获取屏幕的尺寸 int screenWidth = screenSize.width; /获取屏幕的宽 int screenHeight = screenSize.height; /获取屏

    28、幕的高 setLocation(screenWidth / 2 - windowWidth / 2, screenHeight / 2 - windowHeight / 2); /设置窗口居中显示 setSize(windowWidth, windowHeight); setLayout(new BorderLayout(); add(box, BorderLayout.CENTER); add(settingPanel, BorderLayout.SOUTH); addListener(); setVisible(true); getBox().requestFocus(); public

    29、Box getBox() return box; private void addListener() this.addKeyListener(keyListener); box.addKeyListener(keyListener); settingPanel.addKeyListener(keyListener); settingPanel.getRuleText().addKeyListener(keyListener); public PropertyPanel getSettingPanel() return settingPanel; 二Box.java import mysnak

    30、e.MainGui;import java.awt.Color;import java.awt.Graphics;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JPanel;import javax.swing.Timer;import mysnake.settingground.Clock;public class Box extends JPanel MainGui gui; private Snake snake; private Food food; private Timer timer; private int delay = 100; private Color backgroundColor = Color.DARK_GRAY; private Color webColor = Color.DARK_GRAY; private int webStyle = 1


    注意事项

    本文(贪吃蛇的研究与设计Word版.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开