PINGDINGSHAN UNIVERSITY
专业实训(四)
项目报告
  : 基于JAVA的吃豆豆游戏开发
     
    ():      软件学院             
专业年级:        10             
    :      苏振鹏             
    :      101530140           
指导教师:        黄淼               
201261
目录
PINGDINGSHAN UNIVERSITY    0
1 项目简介    2
1.1项目意义    2
1.2项目说明    2
1.3关键技术    3
2总体设计    3
2.1主类设计    3
2.2各个模块的设计    4
3详细设计与实现    6
3.1地图的刷新绘制    6
3.2地图路径与豆豆路径的生成    7
3.3碰撞检测代替的实现    9
3.4怪物自动路径的设置    10
3.5被怪物追到以及吃到豆豆的检测    12
4项目截图    13
4.1主界面    13
4.2游戏积分    14
4.3游戏失败    14
5项目说明    14
5.1游戏程序打包    14
6结论    15
1 项目简介
1.1项目意义
    实现小时候PC上经典游戏,吃豆子。练习JAVA基础技能。掌握图片绘制方法,刷新方法。以及多线程的使用,文件读取与操作,字符串的分析等诸多技能。完成课程设计。
1.2项目说明
    吃豆豆游戏规则介绍:黄的是吃豆豆主角,你需要把画面内所有白的小豆豆都吃掉,而同时又有数个各种颜的怪物追杀。如果被怪物追上,代表游戏失败并结束。如果吃光了所有白小豆豆,那么恭喜你,您过关了。
    游戏操作:空格开始游戏,按上下左右键控制主角移动方向。
1.3关键技术
    本项目采用JAVA编程语言进行开发。使用JFrame做窗体,Graphice做画笔绘制图形。其中关键技术包括:
1、画面的绘制与更新
2、怪物自动行进路线的设计
3、吃豆豆方向的控制
4、豆豆被吃掉以及主角被怪物抓到的检测
5、更新吃豆豆得到的分数。
6、地图的生成与制作
7、地图集的解析
8、碰撞检测的代替
2总体设计
2.1主类设计
共包含8个类。分别是主类EatBean、界面类Frame、主角类Bean、豆豆类Food、怪物类Monster、资源类StaticValue、豆豆路径类MakeFood、行走路径类MakeMap
   
2.2各个模块的设计
Frame类:
    继承JFrame类,在paint方法中,实现对界面的绘制,并将界面线绘制到缓存中,再绘制到界面上,避免出现刷新闪烁现象。地图直接采用背景图片,无须绘制方式。用了特殊的方法处理了与地图的碰撞处理。将在随后的详细设计中介绍。
    实现KeyListenerRunnable接口。初始化声明主角、豆豆、怪物类。监听KeyListener中的keyPressed方法,获取键盘上VK_UP、下VK_DOWN、左VK_RIGHT、右VK_LEFT、空格VK_SPACE来开始游戏,并调用Bean类的控制方法来控制主角的上下左右的行动。Runnable接口中的run方法负责每30毫秒调用repaint方法重绘地图,刷界面。
    addSoucre方法,当主角吃下一个豆豆的时候调用改方法。并判定是否吃完所有的豆豆,如果吃完所有豆豆,判断游戏获胜,停止怪物的移动。并在游戏界面中心显示you win
    gameOver方法,当怪物追到主角的时候,调用该方法。判定游戏结束,显示you lose
    writeMap方法在程序中未被执行。是制作地图的时候需要使用的方法,以保存行走路径。
Bean类:
    包含属性x,y,tx,ty,image,listPonit,listFood,makeMap,monsters等。实现部分属性的get方法。初始化中,获取怪物数组以及食物数组。
    利用leftrightupdown来改变想xy坐标来实现主角的移动。并讲值先赋予tx,ty临时坐标。检测tx,ty是否在行动路线坐标集中。如果存在,表明可以移动,则将tx,ty赋予x,y。否则不可移动,对tx,ty进行还原,即不做移动处理。主角将不能移动。
    继承Runnable接口,在run方法中完成对吃食物已经被怪物追到的判断处理。因为3方都是在既定路线中行进。只需判断是否出现坐标重复既可,但是为了避免出现相邻都无事,进行泛判断。只要在一个很近的距离内,都会被判断吃到豆豆货被怪物追上。如果吃到豆豆,就调用该对象的dead方法,如果被怪物追上,则调用自身的dead方法,并调用Frame类的游戏结束方法。
go 字符串转数组

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。