吃豆子(Packman)
ZLYD团队总结--吃豆子(Packman)
一、设计主要内容
玩家可以通过键盘或鼠标控制游戏区。游戏采取分数和血量制,当血量用尽时游戏结束,游戏以最终玩家获得的分数来判断玩家水平的高低。使用IEDA和JDK1.6工具,操作系统为WINDOWS,采用面向对象方法完成,包括总体设计、详细设计、编码实现、测试。
二、需求分析
- 吃豆子游戏是一种古老而又有趣的游戏, 游戏软件不计其数, 网上就有好多关于实现的复杂算法和设计, 其难度让一般初学者望而却步。开发的出来的吃豆子游戏是一种内容丰富,画面优美,益智类游的戏,并且不受网络的限制,让人们能够在任何时刻通过体验游戏,达到身心愉悦、放松心情。
- 通过本游戏的设计,综合自己在校期间所学的理论知识,设计开发吃豆子游戏,使自己熟悉应用系统的开发过程,培养独立思考能力,检验学习效果和动手能力,初步掌握软件工程的系统理论,进一步巩固和加强自身对java基础知识的理解,提高自己的编程水平,从而达到理论与实践相结合的目的。
三、总体设计
1.文件构成
吃豆子游戏的程序由文件Wall.java、Gold.java、Player.java、Enemy.java、Ticker.java、和Packman.java六个文件组成。
- Wall.java:包含名为Wall的public类,其主要功能为根据墙的位置,绘制其图形。并通过其中的方法。返回墙壁的位置等属性。
- Gold.java:包含名为Gold的public类,其主要功能为根据豆子的位置,绘制其图形,包括体积大和体积小的两种类型。并通过其中的方法,返回豆子的位置等属性。
- Player.java:包含名为Player的public类,其主要功能为初始化吃豆者的位置,张合角度以及前进速度。通过draw方法根据吃豆者在运动过程中的角度变化,以及移动后的位置坐标绘制吃豆者;通过move方法计算吃豆者的位置;通过ChangeDirection方法改变吃豆者的运动方向;通过stop方法令吃豆者停止运动;通过dead方法令游戏结束。
- Enemy.java:包含名为Enemy的public类,其主要功能为根据位置,状态初始化敌人。通过move方法确定敌人的移动方式,包括正常状态和失去放抗能力两种情况;通过draw方法绘制敌人。
- Ticker.java:包含名为Ticker的线程类,控制游戏的起始。
- Packman.java:包含名为Packman的public类,其主要功能为初始化图形界面的布局,声音的播放,确定游戏规则。
- Pac-Man.html:这是引用Applet的HTML文件。

2.系统功能要求
1 按空格键,使游戏开始。
2 通过方向键控制吃豆者的运动方向,直到吃光所有的金豆子。
3被敌人碰到按百分比掉血。
4吃到大的金豆子后,敌人在一段时间内失去攻击能力,这个时候,吃豆者可以吃掉敌人。
5敌人被吃掉之后被关进图中牢笼中,一段时间重生。
6吃豆人吃到水果后回血,当血量降到百分之零以下游戏结束。

3.类图

三、详细设计
1.Enemy类
1 成员变量
Al_time:int
Colour:int
Enemy:Rectangle
alarm:boolean
alarmTime:int
canMoveUp:boolean
cantGoAnyWhere:boolean
direction:int
gameFlow:int
ghost:boolean
ghostMode:boolean
interval:int
lefttime:int
prisonTime:int
speed:int
Stop:boolean
xPos:int
xVPos:int
yPos:int
yVPos:int
2 方法
Alarm(int):void //设置敌人是否处于反抗状态
Ghost():void //幽灵
draw(Graphics):void //绘制幽灵的颜色
move(int,int,Wall[]):void //敌人的移动
status():int //位置
stop():void //停止移动
3 详细类图

2.Packman类
1 成员变量
SOUND:AudioClip[]
UP_TYPED:bpplean
WALL:Image[]
alarm:boolean
alarmTime:int
gameFlow:int
gameStarted:boolean
gameover:boolean
health:int
levelComplete:boolean
offScreenImage:Image
2 方法
actionPerformed(ActionEvent):void //监听按键
init():void //applet初始化
keyPressed(KeyEvent):void //按下按键
keyReleased(KeyEvent):void //松开按键
keyTyped(KeyEvent):void //释放按键
paint(Graphics):void //绘制轨迹
start():void //开始
stop():void //结束
update(Graphics):void //绘制更新后的轨迹
3 详细类图

3.Player类
1 成员变量
canMoveUp:boolean
dead:boolean
Direction:int
isMoving:boolean
mouthDegree:int
mouthOpen:boolean
Player:Rectangle
Speed:int
xPos:int
xVPos:int
yPos:int
yVPos:int
2 方法
ChangeDirection(int):void // 改变前进方向
Dead():void //死亡
draw(Graphics):void //绘制吃豆者
move(Wall[]):void //吃豆者移动
stop():void //吃豆者停止移动
3 详细类图

4.Ticker类
1 成员变量
is Ticking:boolean
al:ActionListener
delay:int
t:Thread
2 方法
run():void //奔跑
start():void //开始
3 详细类图

5.Wall类
1 成员变量
Indexoflmage:int
Wall:Rectangle
xPos:int
yPos:int
2 详细类图

6.Fruit类
1 成员变量
Al_time1:int
appearTime:int
direction:int
fruit:Rectangle
interval:int
xPos:int
2 方法
draw(Graphics):void //绘制水果的颜色
move(Wall):void //移动水果
3 详细类图

7.Gold类
1 成员变量
gold:Rectangle
goldSpecies:int
xPos:int
2 方法
bigGoid():boolean // 判断是否是大豆子
draw(Graphics):void //根据x、y和豆子的类型构造一个豆子的对象
3 详细类图

四、系统测试
- 1 主界面测试


- 2 游戏界面菜单选项的功能测试
- 点击Applet菜单的测试结果表
|----|:----
吃豆子(Packman)的更多相关文章
- C++小项目-吃豆子游戏
GMap.h #pragma once //保证头文件只被编译一次 #include "stdafx.h" #define MAP_LEN 19 //逻辑地图大小 (逻辑地图由行. ...
- 有趣的动画swf 小鼠吃豆子
今天发现一个有趣的动画swf,小鼠吃豆子,呵呵 <object width="240" height="206" data="http://cd ...
- 九度OJ 1408 吃豆机器人 -- 动态规划
题目地址:http://ac.jobdu.com/problem.php?pid=1408 题目描述: 淘宝公司内部有许多新鲜的小玩具,例如淘宝智能机器人.小时候,大家都玩过那个吃豆子的游戏吧,这机器 ...
- hdu 1284 关于钱币兑换的一系列问题 九度oj 题目1408:吃豆机器人
钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...
- [代码]解析nodejs的require,吃豆人的故事
最近在项目中需要对nodejs的require关键字做解析,并且替换require里的路径.一开始我希望nodejs既然作为脚本语言,内核提供一个官方的parser库应该是一个稳定可靠又灵活的渠道,然 ...
- 2845 ACM 豆子 beans
题目:http://acm.hdu.edu.cn/showproblem.php?pid=2845 题意:吃豆子游戏 , 当你吃了一个格子的豆子 , 该格子左右两个和上下两行就不能吃了 , 输入每个格 ...
- [Jobdu] 题目1408:吃豆机器人
题目描述: 淘宝公司内部有许多新鲜的小玩具,例如淘宝智能机器人.小时候,大家都玩过那个吃豆子的游戏吧,这机器人就是按照这个游戏设计的,它会朝着豆子的方向行走.不过机器人还存在一个bug,他只会朝南和朝 ...
- ZLYD团队第三周项目总结
ZLYD团队第三周项目总结 项目进展 我们的吃豆子游戏的程序由八个文件组成:Wall.java.Gold.java.Player.java.Fruit.java.Enemy.java.Ticker.j ...
- JAVA上百实例源码以及开源项目
简介 笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级.中级.高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情.执着,对IT的憧憬. ...
随机推荐
- 一个1年前的T-SQL问题
还记得年前的一个SQL问题,当时对SQL刚接触,因此绕开了它.用了别的办法.昨天看SQL突然想起了这个问题.百思不得其解,然后去SQL Server技术交流群,也请教了,大神高文佳,何志勇提示我因为先 ...
- php面试题之四——Linux部分(高级部分)
四.Linux部分 1.请解释下列10个shell命令的用途(新浪网技术部) top.ps.mv.find.df.cat.chmod.chgrp.grep.wc top:该命令提供了实时对系统处理器状 ...
- node.js+websocket实现简易聊天室
(文章是从我的个人主页上粘贴过来的,大家也可以访问我的主页 www.iwangzheng.com) websocket提供了一种全双工客户端服务器的异步通信方法,这种通信方法使用ws或者wss协议,可 ...
- [Educational Codeforces Round 16]B. Optimal Point on a Line
[Educational Codeforces Round 16]B. Optimal Point on a Line 试题描述 You are given n points on a line wi ...
- nyoj 8
http://acm.nyist.net/JudgeOnline/problem.php?pid=8 #include<stdio.h> #include<iostream> ...
- Mybatis 动态sql标签
1.动态SQL片段 通过SQL片段达到代码复用 <!-- 动态条件分页查询 --> <sql id="sql_count"> ...
- C# 代理/委托 Delegate
本文转载自努力,努力,努力 1. 委托的定义:委托是函数的封装,它代表一"类"函数.他们都符合一定的签名:拥有相同的参数列表,返回值类型.同时,委托也可以看成是对函数的抽象,是函数 ...
- 【转】JSP中的相对路径和绝对路径
1.首先明确两个概念: 服务器路径:形如:http://192.168.0.1/的路径 Web应用路径:形如:http://192.168.0.1/yourwebapp的路径 2.关于相对路径与绝对路 ...
- 转载一篇ios7的新API文章
不看不知道,一看吓一跳啊!请看看吧,http://leafduo.com/articles/2013/09/28/ios7/
- php-fpm 进程管理
2015年2月26日 15:40:15 先查找 PHP-FPM 的进程号 ps -ef | grep php-fpm root Feb12 ? :: php-fpm: master process ( ...