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

下载本文档

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

文档简介

1、j ava 小游戏设计华北科技学院计算机学院综合性实验实验报告课程名称 JAVA程序设计实验学期 2014 至2015 学年第二 学期学生所在院部 计算机学院年级 专业班级学生姓名 学号任课教师实验成绩计算机学院制Java程序设计课程综合性实验报告开课实验室:基础四201笄11月28日实验题目基于java的拼图游戏一、实验目的程序使用Eclipse集成开发环境完成,熟悉并掌握在 Eclipse开发环境下编写Java程序。二、设备与环境硬件:多媒体计算机软件:Windows系列操作系统、JDK开发包、Eclipse开发环境三、实验内容及要求.实验要求使用Java swing编程实现拼图游戏。游戏

2、功能是将一幅图片分割成5*5的规则小图片,游戏开始时将25个小图片随机摆放,玩家能够参考原图拼接出正确的 图片。游戏规则:在25个小图片中有一个为空白图片,玩家可以单击和空白小图片 相邻的任一个小图片(上、下、左、右均可),即可将单击的小图片与空白小图片 交换位置。通过有限次的移动,即可将随机分布的小图片恢复成原图的样式。.实验内容(1)各类及主要成员函数的功能:java源代码及其功能序 号类名主要功能1GreedSnake该类为程序入口,含有 main方法。2SnakeControl实现控制运行等总体要求,实现方向键控制 蛇的方向,空格键控制游戏暂停或继续,还 有分数等。3SnakeMode

3、l该类实现蛇的结构和具体运动,如判断食物 是否和怎样被吃掉及判断后的动作。4Node该类实现组成蛇身的单位-食物。5SnakeView该类实现画板功能,用黑色圆蛇身,红色回 食物。(2)具体代码及实现如下程序入口主方法:/第一部分public class GreedSnake / 建立主类 GreeSnakepublic static void main(String口 args) SnakeModel model =new SnakeModel(20,30); / 初始化蛇出现的位置SnakeControl control =new SnakeControl(model);SnakeView

4、 view =new SnakeView(model,control);/添加一个观察者,让 view成为model的观察者model.addObserver(view);( new Thread(model).start(); 实现对蛇身的控制要求:/第二部分/游戏的Model类,负责所有游戏相关数据及运行class SnakeControl implements KeyListener /SnakeControl实现接口KeyListener ,键盘监听SnakeModel model ;public SnakeControl(SnakeModel model) this . model

5、= model;public void keyPressed(KeyEvent e) int keyCode = e.getKeyCode();if ( model . running )/ 运行状态下,处理的按键switch (keyCode) case KeyEvent. VK_UP:model .changeDirection(SnakeModel.UP);break ;case KeyEvent. VK_DOWNmodel .changeDirection(SnakeModel.DOWN;break ;case KeyEvent. VK_LEFT :model .changeDirec

6、tion(SnakeModel.LEFT);break ;case KeyEvent. VK_RIGHT :model .changeDirection(SnakeModel.RIGHT);break ;case KeyEvent.VK_ADD:case KeyEvent.VK_PAGE_UP : / 向上翻加速model .speedUp();break ;case KeyEvent.VK_SUBTRACT :case KeyEvent.VK_PAGE_DOWN / 减速model .speedDown();break ;case KeyEvent.VK_SPACE:case KeyEven

7、t.VK_P:model .changePauseState(); / 暂停进入睡眠状态 break ;default : / 任何情况下处理的按键,按键导致重新启动游戏if (keyCode = KeyEvent.VK_R |keyCode = KeyEvent.VK_S |keyCode = KeyEvent.VK_ENTER ) model .reset。;publicvoid keyReleased(KeyEvent e) publicvoid keyTyped(KeyEvent e) 实现蛇的结构和具体运动:/第三部分SuppressWarnings ( unchecked )cla

8、ss SnakeModel extends Observable implements Runnable /SnakeModel 继承Observable类并且实现接口ainfra matrixLinkedListRunnable ;/指示位置上有没蛇体或食物nodeArray =new LinkedList();/ 蛇体Node food ;int maxX;int maxY;int direction= 2;/蛇运行的方向ainfrarunning =false ;/运行状态int timeInterval二=200;/时间间隔,毫秒double speedChangeRate = 0.7

9、5;/每次得速度变化率ainfrapaused =false ;/暂停标志intscore = 0;/得分intcountMove = 0;/吃到食物前移动的次数/ UP and DOWN should be even / RIGHT and LEFT should be odd publicstaticfinalintpublicstaticfinalintpublicstaticfinalintpublicstaticfinalintUP = 2;DOWN= 4;LEFT = 1;RIGHT = 3;publicSnakeModel(intthis . maxX = maxX; this

10、. maxY = maxY;maxX, int maxY) reset();public void reset()direction timeInterval paused = score = 0; countMove=SnakeModel=500;false ;=0;UP;/蛇运行的方向时间间隔,毫秒暂停标志得分吃到食物前移动的次数/ initial ainfr,全部清 0matrix = new ainfra maxX口;for ( int I = 0; I 20 ?10:maxX / 2;nodeArray .clear();for ( int I = 0; I initArrayLen

11、gth; +i) int x =maxX / 2 + I;/maxX 被初始化为 20int y =maxY / 2;/maxY 被初始化为 30/nodeArrayx,y: 10,15-11,15H12, 1520,15/默认的运行方向向上,所以游戏一开始nodeArray就变为:/10, 14H10, 15-11, 15-12nodeArray .addLast( new Node(x, y);matrix xy = true ;/创建食物food = createFood();matrix food . x food . y = true ;public void changeDirec

12、tion( int newDirection) 向同向或反向if ( direction % 2 != newDirection % 2) direction = newDirection;,1519, 15/改变的方向不能与原来方物)publicainframoveOn() Node n =nodeArray .getFirst();intx = n.x;inty = n.y;/根据方向增减坐标值switch (direction) caseUP:y-;break ;caseDOWNy+;break ;caseLEFT :x-;break ;caseRIGHT :x+;break ;/如果新

13、坐标落在有效范围内,则进行处理if (0 = x & x maxX) & (0 = y & y 0 ? scoreGet : 10;countMove = 0;food = createFood();matrix food . x food . y = true return true ;/创建新的食物/设置食物所在位置elsereturn false/ 吃到蛇体自身,失败else / 如果新坐标的点上没有东西(蛇体),移动蛇true ;.removeLast();y = falsenodeArray .addFirst( new Node(x, y);matrix xy= nodeArray

14、 matrix n. xn. countMove +;returnreturntrue ;false ;/ 触到边线,失败publicvoid running while ( tryrun() =true running /运行方法Thread.sleep(timelnterval);catch (Exception e) break ;if (! paused ) if (moveOn() setChanged();notifyObservers();else JoptionPane.JoptionPane.breakrunningfalse ;/ Model通知View数据已经更新show

15、MessageDialog ( null ,你输了 ”,“Game Over,INFORMATION_MESSAGE ); private int int / donew Random();maxX);maxY); public publicwhile ( returnmatrixxy);new Node(x, y);voidainfra() timeInterval*-speedChangeRate ;void speedDown() timeInterval/= speedChangeRate ;Node createFood() x = 0;y = 0;随机获取一个有效区域内的与蛇体和食

16、物不重叠的位置Random r = x = r.nextInt( y = r.nextInt( public publicString toString() String result =for ( int I = 0; INode n = result +=;nodeArraynodeArray .get(i);“+ n. x +.size(); +i) + n. y +工;void changePauseState() paused = ! paused ;return result;实现组成蛇身的单位-食物:实现画板功能,黑色为蛇身,红色为食物:/第五部分class SnakeViewS

17、nakeControl SnakeModelimplementsObserver null ; ;control model =nullJframeainframe ; /窗口CanvaspaintCanvas;/图像背景JlabellabelScore ;/分数publicstaticfinalintcanvasWidthpublicstaticfinalintcanvasHeight=300;/窗口宽度=300;/窗口高度/SnakeView 实现接口 Observer/第四部分class Node /Node子类int x;int y;Node( intx, inty) this.x = x;this.y = y;(3)游戏运行结果如图:初始游戏界面及蛇出现的位置,最后三行英文字母为帮助菜单:第一次吃到食物加10分,增长1个食物的长度:第二次吃到食物加14分,蛇身增加1个食物的长度,两次加分说明游戏分数不仅和食物有关还和所走路径有关:游戏失败两种

温馨提示

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

评论

0/150

提交评论