java小游戏设计_第1页
java小游戏设计_第2页
java小游戏设计_第3页
java小游戏设计_第4页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

1、java小游戏设计 华北科技学院计算机学院综合性实验 实 验 报 告 课程名称 ja a a 程序设计 实验学期 20 至 20 学年 第 学期 学生所在院部 计算机学院 年级 专业班级 学生姓名 学号 任课教师 实验成绩 计算机学院制 av 程序设计课程综合性实验报告 开课实验室:基础四 016 年 年 11 月 8 日 日 实验题目 于 基于 j va 得拼图游戏 一、实验目得 程序使用eclpe集成开发环境完成,熟悉并掌握在elips开发环境下编写jva程序。 二、设备与环境 硬件:多媒体计算机 软件:widos 系列操作系统、jdk 开发包、elipse 开发环境 三、实验内容及要求

2、1、实验要求 使用 jav swi编程实现拼图游戏。游戏功能就是将一幅图片分割成 5 5 得规则小图片,游戏开始时将 5 个小图片随机摆放,玩家能够参考原图拼接出正确得图片。 游戏规则:在 个小图片中有一个为空白图片,玩家可以单击与空白小图片相邻得任一 个小图片(上、下、左、右均可),即可将单击得小图片与空白小图片交换位置。通过有限次得移动,即可将随机分布得小图片恢复成原图得样式。 2、实验内容 (1 1 ) 各 类及 主 要 成员 函 数 得功 能: 2 (2 ) 具 体代 码 及 实现 如 下: 程 序 入口 主 方法: : /第一部分 public class geedsnake /建立

3、主类reesnake b c s tic o d main(ting arg) snakemodl model = new akemode(20,0);/初始化蛇出现得位置 snkcntr ontrol = new saecotrol(el); eviw view = ew snakeiw(model,cntrol); /添加一个观察者,让vie成为ml得观察者 ol、addoevr(view); (ne tread(mdel)、start(); 实现对蛇身得控制要求: /第二部分 /游戏得odel类,负责所有游戏相关数据及运行 clas snecontro imple en s kelist

4、er/sncontrol实现接口istene,键盘监听 sakemod oel; publ c snkecontrl(sakemodl del) his、odel moel; pu c o d eypressd(keyvent ) int keycoe = 、getkeyod(); i (model、unnin) / 运行状态下,处理得按键 swit h (kecoe) ca e keyeven、v _up: model、changedietion(nemode、u ); br ak; case keyeve、vk_dow : model、chanedrectin(snakemoel、 wn)

5、; break; case kyeen、 k_ ef : odl、hgedirection(snkemod、l f ); java 源代码及其功能 序号 类名 主要功能 1 greedsnake 该类为程序入口,含有 main 方法。 2 snakecontrol 实现控制运行等总体要求,实现方向键控制蛇得方向,空格键控制游戏暂停或继续,还有分数等。 3 snakemodel 该类实现蛇得结构与具体运动,如判断食物就是否与怎样被吃掉及判断后得动作。 4 node 该类实现组成蛇身得单位-食物。 5 snakeview 该类实现画板功能,用黑色画蛇身,红色画食物。 bre k; c se eve

6、、 k right: model、changedrection(skemodel、ri t); reak; e keyen、vk_ad : a e keyevnt、vk_p ge p:/向上翻加速 model、sedup(); rea ; ca e keyevnt、vk_su act: c se keevent、vk_page_ o :减速 model、speedown(); bre k; cas eyvent、v _space: c e eevent、 k_ : odel、changeaeste();/暂停进入睡眠状态 break; de ault: / 任何情况下处理得按键,按键导致重新启

7、动游戏 if (kyode = keyevet、 k_ | keco = kyevnt、vk s | ked = kyevent、vk_enter) odl、eset(); pu li voi keyeleaed(keyevet e) p blic o d yyped(keyevet e) 实现蛇得结构与具体运动: /第三部分 sppresswarnings(uncheke) class snakedel exte ds oberae im le ent rnable /nkemdel继承observale类并且实现接口rnnable ainfra matrix; / 指示位置上有没蛇体或食物

8、 linkelistnoe nodearray n lkdistoe(); / 蛇体 de food; in ax; nt max; int drecin ; / 蛇运行得方向 a fra uning = f lse; / 运行状态 int timiterval = 0; / 时间间隔,毫秒 d uble spedchangerate = 0、75; / 每次得速度变化率 ain ra paused = fals ; / 暂停标志 n sre = 0; / 得分 i t ountmoe = 0; / 吃到食物前移动得次数 / p ad down should b even / rih an l

9、ft shld e odd p b i sta c f l t u = 2; ublic stat c f nal int down = 4; u i tati final in l t = 1; pub ic s atic final int igh 3; lic snakemoe( i t mxx, int maxy) t i 、axx = mx; th s、maxy axy; eset(); public v id set() ireton = snakeodel、up; 蛇运行得方向 timenevl 500; / 时间间隔,毫秒 paused lse; / 暂停标志 score =

10、0; / 得分 countmve = 0; / 吃到食物前移动得次数 / intial nfr, 全部清 matrx = new ainframaxx; for ( i = 0; i ma; +i) mtx = w nia ra; arays、 ill(maixi, fa s ); / iia the snke / 初始化蛇体,如果横向位置超过20个,长度为10,否则为横向位置得一半 t iniralength = max 20 ? 1 : maxx / 2; nodearray、cla(); for (int i = ; i iiarrayegh; i) int x = m 2 i;/axx

11、被初始化为2 int y = maxy / 2; /a被初始化为30 /nodaryx,y: 10,11,1-2,50,5 /默认得运行方向向上,所以游戏一开始noary就变为: / 0,410,151,1512,15,15 orray、addlst( ew node(x, y)); arix = true; / 创建食物 fo catefoo(); marixf、xfoo、y = true; ublic void chagedirecio(int newdecion) / 改变得方向不能与原来方向同向或反向 f (diction % 2 != ndirecin % 2) recton = n

12、ewdrecion; ub ic a fra mvon() nde n = noearry、getfrt(); nt x n、x; n n、y; / 根据方向增减坐标值 swit h (drectin) case up: y-; break; cas down: y+; break; case left: x-; b ak; ase ight: x+; reak; / 如果新坐标落在有效范围内,则进行处理 if (( = x maxx) (0 y y ma) (mtrixxy) / 如果新坐标得点上有东西(蛇体或者食物) i ( = food、x y = od、) / 吃到食物,成功 node

13、array、ddfirst(fod); / 从蛇头赠长 / 分数规则,与移动改变方向得次数与速度两个元素有关 nt soreget = (1000 0 * untmve) / miervl; score += crget 0 ? scorgt : 10; countv = 0; fo = atefo(); / 创建新得食物 marxood、xfod、y = t ue; / 设置食物所在位置 retu tru ; else / 吃到蛇体自身,失败 retur false; se / 如果新坐标得点上没有东西(蛇体),移动蛇体 ndearra、ddf(new node(x, y)); matrxx

14、y = tr e; n = derra、reovet(); matrixn、xn、 = f ls ; ountmo+; urn tr e; return fa se; / 触到边线,失败 p bl c oid run() /运行方法 uni = tru ; while (ning) t y hred、 leep(timeinteval); catc (xcetion ) break; if (!ed) if (veon()) setchned(); / mod通知vie数据已经更新 notifyobsrves(); els jopinpane、show essagedi log( ull, 您

15、输了, ame ovr, onan、inf rma _message); bre k; runin alse; r vate ode ceatefood() int x 0; i t = ; / 随机获取一个有效区域内得与蛇体与食物不重叠得位置 radm ne adm(); = r、nextint(maxx); r、nextnt(axy); while (atrxxy); eturn n w noe(x, y); pu lic v id )(rfnia timinterv *= speedcanerate; p b ic void speedwn() imeinteval /= pehaner

16、ate; p bl vo cgepaseate() pused = !ped; ublic ig tostrng() sring result = ; for ( n i = 0; noeray、size(); +i) oe n = noarr、get(i); eul += n、x + , + n、y + ; retu n reul; 实现组成蛇身得单位 食物: : /第四部分 lass nod /ode子类 in x; i t y; node( nt , i t y) is、x = x; his、 = y; 实现画板功能,黑色为蛇身, , 红色为食物: /第五部分 class snakvie

17、w imp ments sever aeiew实现接口observr nkentol control = nu l; sakeodel del = nul ; jfrae 口窗/;emarfia anvas pinvas;/图像背景 jlael labelscre;/分数 publ c stat c f nal n c nva width = 30;/窗口宽度 public stati fina i t an ash ight = 30;/窗口高度 (3 3 ) 游戏运行结果如图: 初始游戏界面及蛇出现得位置,最后三行英文字母为帮助菜单: 第一次吃到食物加 10 分,增长 1 个食物得长度: 第二次吃到食物加 14 分,蛇身增加个食物得长度,两次加分说明游戏分数不仅与食物有关还与所走路径有关: 游戏失败两种情况: 咬到蛇尾或者自身: 四、实验结果及分析 此处写自己通过学习

温馨提示

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

评论

0/150

提交评论