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)的更多相关文章

  1. C++小项目-吃豆子游戏

    GMap.h #pragma once //保证头文件只被编译一次 #include "stdafx.h" #define MAP_LEN 19 //逻辑地图大小 (逻辑地图由行. ...

  2. 有趣的动画swf 小鼠吃豆子

    今天发现一个有趣的动画swf,小鼠吃豆子,呵呵 <object width="240" height="206" data="http://cd ...

  3. 九度OJ 1408 吃豆机器人 -- 动态规划

    题目地址:http://ac.jobdu.com/problem.php?pid=1408 题目描述: 淘宝公司内部有许多新鲜的小玩具,例如淘宝智能机器人.小时候,大家都玩过那个吃豆子的游戏吧,这机器 ...

  4. hdu 1284 关于钱币兑换的一系列问题 九度oj 题目1408:吃豆机器人

    钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  5. [代码]解析nodejs的require,吃豆人的故事

    最近在项目中需要对nodejs的require关键字做解析,并且替换require里的路径.一开始我希望nodejs既然作为脚本语言,内核提供一个官方的parser库应该是一个稳定可靠又灵活的渠道,然 ...

  6. 2845 ACM 豆子 beans

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=2845 题意:吃豆子游戏 , 当你吃了一个格子的豆子 , 该格子左右两个和上下两行就不能吃了 , 输入每个格 ...

  7. [Jobdu] 题目1408:吃豆机器人

    题目描述: 淘宝公司内部有许多新鲜的小玩具,例如淘宝智能机器人.小时候,大家都玩过那个吃豆子的游戏吧,这机器人就是按照这个游戏设计的,它会朝着豆子的方向行走.不过机器人还存在一个bug,他只会朝南和朝 ...

  8. ZLYD团队第三周项目总结

    ZLYD团队第三周项目总结 项目进展 我们的吃豆子游戏的程序由八个文件组成:Wall.java.Gold.java.Player.java.Fruit.java.Enemy.java.Ticker.j ...

  9. JAVA上百实例源码以及开源项目

    简介 笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级.中级.高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情.执着,对IT的憧憬. ...

随机推荐

  1. thinkphp中模块和操作映射

    模板和操作映射功能是3.1.2版本支持的对模块和操作设置的映射机制,由于可以通过改变配置动态改变(实际真正改变,并非别名)URL访问地址,加强了应用的安全性,而且,映射机制具有URL不区分大小写访问的 ...

  2. [Effective JavaScript 笔记]第20条:使用call方法自定义接收者来调用方法

    不好的实践 函数或方法的接收者(即绑定到特殊关键字this的值)是由调用者的语法决定的.方法调用语法将方法被查找的对象绑定到this变量,(可参阅之前文章<理解函数调用.方法调用及构造函数调用之 ...

  3. RHEL 6.0使用CentOS yum源

    引言:由于RHEL的yum在线更新是收费的,如果没有注册的话是不能使用的,即不能在线安装软件.在这种情况下,想使用RHEL系统,还想用yum源来在线安装软件,有没有办法?答案是有办法,请往下看! 1. ...

  4. Stanford机器学习---第八讲. 支持向量机SVM

    原文: http://blog.csdn.net/abcjennifer/article/details/7849812 本栏目(Machine learning)包括单参数的线性回归.多参数的线性回 ...

  5. Linux SUID SGID 讲解

    SUID属性 UNIX的内核是根据什么来确定一个进程对资源的访问权限的呢? 是这个进程的运行用户的(有效)ID,包括user id和group id.用户可以用id命令来查到自己的或其他用户的user ...

  6. Properties类一些常用的用法

    直接上代码: package test.properties; import java.io.File; import java.io.FileInputStream; import java.io. ...

  7. mysql lower,upper实现大小写

    mysql的lower和uppper函数可以将指定字符串转换为小写和大写 select lower('OutSpringTd') as lowerCase, upper('OutSpringTd') ...

  8. iOS的 context 和Android 中的 canvas

    ios 想要绘图,要用到CGContextRef类.最基本的用法是在- (void)drawRect:(CGRect)rect 函数中绘制. Android 中要用到Canvas类.最基本的用法是在  ...

  9. Objective-C 和 C++中指针的格式和.方法 和内存分配

    最近在看cocos2d-x,于是打算复习一下C++,在这里简单对比下,留个念想. 先看看oc中指针的用法 @interface ViewController : UIViewController { ...

  10. Android Studio 和 Gradle

    由于以前没做过什么java项目,在使用Android Studio时遇到了Gradle,真是一头雾水,决定总结一下. 具体的使用方法请参看:http://www.cnblogs.com/youxilu ...