




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 android实训项目院系:计算机与信息工程系 班级:10软件技术 姓名: 学号:“贪吃蛇”游戏是一个经典的游戏,它因操作简单、娱乐性强而广受欢迎。本文基于java技术,开发了一个操作简单、界面美观、功能较齐全的“贪吃蛇”游戏。整个游戏程序分为二个功能模块,六个类模块,实现了游戏的开始、暂停、结束。通过本游戏的开发,达到学习java技术和熟悉软件开发流程的目的。本文在介绍java相关技术和国内外发展现状的基础上,对“贪吃蛇”游戏的整个生命周期的各个开发阶段进行了详细地介绍。首先,分析了开发本游戏软件的可行性,重点分析本设计所采用的技术的可行性。其次,从游戏主界面等几方面,分析了本游戏的功能需
2、求;从可使用性和安全性方面分析了属性需求。然后,进行了游戏的概要设计和详细设计,这也是本文的重点。概要设计给出二个功能模块的主框架以及六个类模块的函数调用关系;详细设计介绍了java2标准运行环境的配置,重点给出各个类模块的程序流程图以及uml图,列表介绍了各个类包含的变量、使用的方法,展示了游戏的界面。为了保证程序代码的正确性和功能实现的可靠性,本文还介绍了游戏软件的程序调试过程和功能测试结果。一、研究目的程序关键在于表示蛇的图形及蛇的移动。用一个小矩形快表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头用俩节表示。移动时必须从蛇头开始,所以蛇不能向相反的方向移动,如果不按任意键,蛇自行在
3、当前方向上前移,但按下有效方向键后,蛇头朝着该方向移动,一步移动一节身体,所以按下有效方向键后,先确定蛇头的位置,而后蛇的身体随蛇头移动,图形的实现是从蛇头新位置开始画出蛇,这时,由于未清屏的原因,原来的蛇的位置和新蛇的位置差一个单位,所以看起来蛇多一节身体,所以将蛇的最后一节用背景色覆盖。食物的出现与消失也是画矩形块和覆盖矩形块。为了便于理解,定义两个结构体:食物与蛇 目的 本程序实现主要技巧在于java语言的应用。目的在于提高编程的水平。二、系统需求分析1. 需求分析本系统主要是完成贪吃蛇游戏的基本操作。用户可以自己练习和娱乐。本系统需要满足以下几点要求:(1) 利用方向键来改变蛇的运行方
4、向。(2) 空格键暂停或继续游戏,并在随机的地方产生食物。(3) 吃到食物就变成新的蛇体,碰到壁或自身则游戏结束,否则正常运行。 2.可行性分析贪吃蛇游戏是一种简单的大众的游戏,自从计算机实现以来,深受广大电脑玩家的喜爱,做一个简单的贪吃蛇小游戏。贪吃蛇的核心算法时如何实现移动和吃掉食物,没有碰到食物的时候,把当前运动方向上的下个节点入队,并以蛇节点的颜色绘制这个节点,然后把头指针所指的节点出队,并以游戏框架内部背景色重绘出队的节点,这样就可以达到移动的效果。而在吃到食物的时候,则只需把食物入队即可。实现贪吃蛇的基本的蛇身移动、吃到食物身体增长、和碰到墙壁或自身死亡,能够暂停和开始。本次设计我
5、将主要运用java语言来完成。java语言是一种跨平台,适合于分布式计算环境的面向对象编程语言,用java写的应用程序不用修改就可在不同的软硬件平台上运行。三、设计方案本次设计的重点之处在于编程思想的形成,设计图像界面,产生随机食物及其位置。同时通过软件工具的处理,将其转换为exe文件,使得该程序的运行可以随处运行,而不需要安装java虚拟机。难点程序编写中,整个程序框架的架构。这就要求我们不仅要对这个游戏的玩法特别熟悉,而且还要熟练掌握java语言。这个程序的关键是表示蛇的图形以及蛇的移动。用一个小矩形表示蛇的一节身体,身体每长一节,增加一个矩形块。移动时必须从蛇头开始,所以蛇不能向相反方向
6、移动,也就是蛇尾不能改作蛇头。如果不按任何键,蛇自行在当前方向上前移,当游戏者按了有效的方向键后,蛇头朝着指定的方向移动,一步移动一节身体,所以当按了有效的方向键后,先确定蛇头的位置,然后蛇身体随着蛇头移动,图形的实现是从蛇头的新位置开始画出蛇。四、贪吃蛇游戏的基本运行界面五、代码package entity;import java.awt.color;import java.awt.graphics;import java.util.linkedlist;import control.controller;import service.serviceimp;import view.pane;
7、public class snake private linkedlist body = new linkedlist(); private int dir; private bean bean; private controller controller; public static final int up = -1; public static final int down = 1; public static final int left = -10; public static final int right = 10; public snake() init(); public v
8、oid setbean(bean bean) this.bean = bean; public void setcontroller(controller controller) this.controller = controller; public void setdir(int dir) this.dir = dir; public int getdir() return this.dir; public void init() body.clear(); body.add(new unit(10,10); body.add(new unit(9,10); body.add(new un
9、it(8,10); body.add(new unit(7,10); this.dir = snake.right; public void paintme(graphics g) g.setcolor(color.green); for(unit unit:body) unit.paint(g); public boolean contains(int x,int y) return body.contains(new unit(x,y); public void move() unit head = body.getfirst(); int x = head.getx()/unit.len
10、gth+dir/10; int y = head.gety()/unit.length+dir%10; if(this.contains(x, y) controller.gameover(); return;/remember this! /穿越四周 if(x=pane.length/unit.length) x = 0; else if(x=pane.width/unit.length) y = 0; else if(y0) y = pane.width/unit.length; /如果吃到豆子,就重新生成 if(bean.contains(x,y) system.out.println(
11、well done!); controller.setscore(controller.getscore()+1); bean.init(); body.addfirst(new unit(x,y); return; body.addfirst(new unit(x,y); body.removelast(); package entity;import java.awt.color;import java.awt.graphics;import java.util.random;import view.pane;public class bean private unit bean = ne
12、w unit(); private snake snake; public void setsnake(snake snake) this.snake = snake; public bean() public void init() random r = new random(); while(true) int x = r.nextint(pane.length/unit.length); int y = r.nextint(pane.width/unit.length); if(snake.contains(x, y) continue; this.bean = new unit(x,y
13、); break; public void paintme(graphics g) g.setcolor(color.red); bean.paint(g); public boolean contains(int x,int y) return bean.equals(new unit(x,y); package entity;import java.awt.graphics;/* * 单元格(构成蛇和豆子的基本单位) */public class unit public static final int length = 15; private int x; private int y;
14、public unit() public unit(int x,int y) this.x = x*unit.length; this.y = y*unit.length; public void paint(graphics g) g.fill3drect(x, y, unit.length, unit.length, true); override public boolean equals(object obj) if(obj = this) return true; if(obj instanceof unit) unit u = (unit)obj; return this.x=u.
15、x & this.y=u.y; return false; override public int hashcode() return this.x+this.y; public int getx() return x; public int gety() return y; package control;/* * 控制器 */import java.awt.jobattributes;import java.awt.event.keyadapter;import java.awt.event.keyevent;import javax.swing.joptionpane;import se
16、rvice.service;import view.snakeframe;public class controller extends keyadapter private snakeframe snakeframe; private service service; private int score; public void setsnakeframe(snakeframe snakeframe) this.snakeframe = snakeframe; public void setservice(service sevice) this.service = sevice; publ
17、ic void setscore(int score) this.score = score; public int getscore() return this.score; public void changedir(int keycode) service.changedirection(keycode); public void start() snakeframe.updatebtn(false,true,true,true); service.startgame(); public void pause() service.pausegame(); public void restart() int value = joptionpane.showconfirmdialog(snakeframe, 确定要重新开始吗?); if(value = joptionpane.yes_option) service.restartgame(); public void exit() int value = joptionpane.showconfi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 期中测试08 -2020-2021学年七年级地理下学期期末专项复习(中图版)(解析版)
- 2025商业用地转让合同模板
- Unit 6 Useful numbers单元整体教学设计表格式-2024-2025学年人教PEP版(2024)英语三年级上册
- 一年级道德与法治下册 第二单元 我的手儿巧 第5课《做个小玩意儿》教学设计1 教科版
- 金融欺诈行为识别方案
- 多语言支持模块开发指南
- 2025年劳动合同的违约金标准是多少才合适
- 2025国家教育资助贷款合同
- 《整数乘法运算律推广到小数》(教学设计)-2024-2025学年五年级上册数学人教版
- 2025年上海货运从业资证孝试模似题库
- 加油站变更管理制度
- 75%食用酒精安全技术说明书(MSDS)
- -小学英语人称代词与物主代词讲解课件(共58张课件).课件
- 医学课件疼痛的护理
- 船舶采购建造 投标方案(技术方案)
- 走近湖湘红色人物智慧树知到答案2024年湖南工商大学
- 2024年初级养老护理员职业鉴定考试题库(含答案)
- 模块21.CR400AF型动车组转向架 《高速铁路动车组机械设备维护与检修》教学课件
- GGD交流低压配电柜运行、维护说明书、安装、操作手册
- 多发性骨髓瘤肾损伤诊治指南(2024版)
- 2024年中考数学反比例函数-选择题(压轴)(试题)
评论
0/150
提交评论