博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
吃豆子(Packman)
阅读量:6173 次
发布时间:2019-06-21

本文共 4100 字,大约阅读时间需要 13 分钟。

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文件。

952315-20160619182659679-681362592.jpg

2.系统功能要求

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

952315-20160619183036429-1987371103.jpg

3.类图

952315-20160619183203585-149745391.png

三、详细设计

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 详细类图

952315-20160619183656694-432086662.png

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 详细类图

952315-20160619183912351-1594703553.png

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 详细类图

952315-20160619184111366-85798674.png

4.Ticker类

  • 1 成员变量

    is Ticking:boolean  al:ActionListener  delay:int  t:Thread
  • 2 方法

    run():void    //奔跑  start():void   //开始
  • 3 详细类图

952315-20160619184324069-1176588598.png

5.Wall类

  • 1 成员变量

    Indexoflmage:int  Wall:Rectangle  xPos:int  yPos:int
  • 2 详细类图

952315-20160619184527366-1473586182.png

6.Fruit类

  • 1 成员变量

    Al_time1:int  appearTime:int  direction:int  fruit:Rectangle  interval:int  xPos:int
  • 2 方法

    draw(Graphics):void  //绘制水果的颜色  move(Wall):void   //移动水果
  • 3 详细类图

952315-20160619184721632-974168691.png

7.Gold类

  • 1 成员变量

    gold:Rectangle  goldSpecies:int  xPos:int
  • 2 方法

    bigGoid():boolean  //  判断是否是大豆子  draw(Graphics):void    //根据x、y和豆子的类型构造一个豆子的对象
  • 3 详细类图

952315-20160619184853694-673223004.png

四、系统测试

  • 1 主界面测试
    952315-20160619185345585-778291091.png

952315-20160619185449819-1949390512.png

  • 2 游戏界面菜单选项的功能测试
  • 点击Applet菜单的测试结果表

|----|:----:|:----:|

|点击“Applet”| 启动| 停止| 重新载入|
|输出|游戏开始|游戏关闭| 游戏重新开始|
|结果 |正常 |正常 |正常|

  • 吃豆者移动测试表

|----|:----:|:----:|:----:|:----:|

|键盘方向键| 上方向键 |下方向键| 左方向键 |右方向键|
|输出| 吃豆者正常移动,不会移出边界| 吃豆者正常移动,不会移出边界| 吃豆者正常移动,不会移出边界| 吃豆者正常移动,不会移出边界|
|结果 |正常 |正常 |正常 |正常|

  • 无敌状态测试表
    |----|:----:|:----:|
    |吃到大豆子情况 |吃到大豆子 |未吃到大豆子|
    |输出 |敌人变色,速度减慢,吃豆者为无敌状态| 敌人继续追击吃豆者|
    |结果 |正常| 正常|

五、成员贡献

  • 20145218张晓涵:项目组长,查阅相关资料以及划分功能模块,负责编写吃豆者属性类。绘制两种类型的豆子图形,并返回豆子的位置等属性。初始化吃豆者信息,根据操作移动吃豆者的位置。
  • 20145240刘士嘉:项目经理,负责把控整个项目的进度,分配组员任务,绘制图形墙,并返回墙壁位置等属性。初始化水果信息,通过操作移动水果的位置与方向。控制游戏的起始。
  • 20145217周恩德:负责代码编写、收集相关资料以及后期代码调试,游戏的主类文件,初始化图形界面信息。引用Applet的HTML文件。
  • 20145227鄢曼君:负责程序界面实现,以及每周博客的更新,负责游戏的主类文件,声音信息和游戏规则。
  • 20145239杜文超:负责编写敌人属性类,初始化敌人信息,通过操作移动并绘制敌人。负责后期功能的完善,发现不足,改善用户体验。

成员成绩分配:

  • 20145218张晓涵:30
  • 20145240刘士嘉:25
  • 20145217周恩德:35
  • 20145227鄢曼君:15
  • 20145239杜文超:20

Applet

转载于:https://www.cnblogs.com/1452zlyzd/p/5598607.html

你可能感兴趣的文章
node.js获取参数的常用方法
查看>>
jquery 的 change() 方法的使用
查看>>
本地计算机上的XXX服务启动后又停止了
查看>>
<s:iterator>标签迭代数据不显示
查看>>
判断 SQLServer 触发器类型,支持多行
查看>>
SQL表连接查询(inner join、full join、left join、right join)
查看>>
阿里云OTS(开放结构化数据服务)可视化管理工具的设计和功能介绍
查看>>
Github创建分支
查看>>
转换PHP脚本成为windows的执行程序
查看>>
Python组织文件 实践:将带有美国风格日期的文件改名为欧洲风格日期
查看>>
实现iOS7上tableView的切割线像iOS6中的效果
查看>>
使用阿里云接口进行银行卡四要素实名认证
查看>>
聊聊excel生成图片的几种方式
查看>>
20 万网络节点背后的数据创新应用
查看>>
理论 | 朴素贝叶斯模型算法研究与实例分析
查看>>
docker安装gitlab只需要3分钟
查看>>
Android菜鸟学习js笔记 一
查看>>
Java基础之SPI机制
查看>>
使用js控制滚动条的位置
查看>>
【Tornado源码阅读笔记】tornado.web.Application
查看>>