前言

这游戏跟《兔子跳铃铛》一样,也是在大学的时候写的。不过前者使用的是C++,而这个则是在大三上学期的时候用JAVA,在J2ME平台上开发出来的。代码不多,当时使用了不到三天时间,但是却感觉比兔子的游戏好多了。

我就写过这两个游戏,感觉玩起来还不错,所以都写出来和大家分享一下。代码在最后。:)


效果

启动游戏,闪屏、标题、开始菜单:

  

点击开始游戏,游戏开始(废话!)。游戏控制很简单,只需要使用左右两个键就行了。控制你的小人,在木板、滑板、闪板、跳板等各种板子上移动跳跃。当被最上面的刺刺到或者跳到刺板上的时候,就会掉血。血完或者没有接上板子而直接掉下去,都GameOver。撑的时间越久,分数越高。如图:

    


程序结构

这个游戏比上次那个《兔子跳铃铛》好些。好歹当时也是设计过的,嘿嘿。先看所有的类的列表:

包大致可以分为两部分,通用/游戏类。以下包列表中,第一个是通用的,其它则是为《是男人就下一百层》专门开发。从下到上,为单向依赖
    hxy.Interface + hxy.Utils      :这两个包定义了一些在游戏设计中通用的类和接口。可理解为一个通用的小框架。
    hxy.Game.Interface              :只定义了一个接口,表示一个简单的游戏管理器。
    hxy.Game.Enum                  :枚举定义:方向/键/碰撞类型。
    hxy.Game.Base                   :一些重要的基类:精灵类、板子类、滚动图层类。
    hxy.Game.Common             :一些不通用,但是通常却被定义的类,为ConcreteSprites包下的类打基础。(这里有唯一个依赖上层ConcreteSprites的类:BroadsFacotry。嘿嘿,小问题。)
    hxy.Game.ConcreteSprites   :这个游戏中最具体的所有精灵类都在这里面了。
    hxy.Game                           :《是男人就下一百层》这个游戏中,基于上面的框架的具体应用类。这个包里面放置了所有和MIDlet平台通信或相关的类。其下,又分了以下几个子包。


细节

先说说定时子系统

游戏的界面绘制,其实就是在适当的时候画出动画效果。而动画也是在规定时间内分桢显示,所以说到底,最重要的就是时间的控制。那么,定时的功能就显得尤为重要了。

虽然可以在需要定时的时候采用开启线程的方式来控制,但是一旦游戏中多处需要定时器的时候,资源就会占据过多。所以这里需要对这个资源进行统一管理。查找过WTK2.5中的包,的确有一个类是Timer,不过研究一下之后,感觉使用并不灵活(我感觉J2ME的包中的类,有些用起来还真是不顺手。当然,很有可能是我不精通JAVA的原因吧。:))。所以只好自己下手,设计如下“子系统”:

重要接口:

类图:

现在看看,其实里面有这些已经被大家熟知的设计模式:Observer、Factory、Decorator。

虽然它的设计和实现都并不复杂,但是在这个游戏设计中,却起了关键性的作用。它不但统一了上层控制时间时使用的API调用模式,也相对于打开不必要的线程而言,更节省了资源,这在手机这种“弱”平台上,显得尤为重要。

再说说一个有趣的设计

开发中,想到怎么让小人一停的往下掉啊,想了几个办法都不怎么样,最后使用了类GravitySystem。重力系统!哈哈,比较牛的名字,但是代码却相当的简单。有空的读者可以去看看,就20行代码吧。不过我觉得很有意思的是,它是多么接近生活啊!这样的设计,感觉很符合我对程序的美感,写得心里十分舒畅,嘿嘿。

然后是重点

重点自然就是可爱的精灵们了,只是图上一点都不可爱,全是字母……

当然,也少不了为游戏做出贡献的背景等:

接下来是难点

游戏中的传输板TransmitBoard是个开发的难点。不过不好意思的是,时隔两年,我已经不记得为什么是难点了。(汗!)就记得当时做这个时候,可是做了好久才做出来的。如果有读者有空看了代码的话,可以和我聊天探讨探讨。:)

最后,入口

GameManager是游戏中最重要的类,它实现的游戏管理者接口,并负责把所有的内容进行整合并管理。其中的Initailze方法比较重要,看代码的读者可以从这里入手。


反思

当时还没有事件的思想,所以设计了IRPGGameManager接口,而大多数精灵类都直接依赖它来在特定的时候,让游戏做出特定的响应。这其实是个很菜的设计。合理的当然还是让精灵暴露出这个特定的时候需要发生的事件,然后GameManager监听这个事件,再对游戏做出特定的响应。毕竟,这才是Manager该做的事。

另外,这游戏跟RPG没什么关系,不过当时居然为接口起了这个名字,汗。


致歉

    原因,同“兔子”。不好意思再打第二遍。

:(


感谢

这次真是该谢谢室友小兴、小帅的时候了,不仅帮忙找素材,而且这游戏中小人挂掉的惨叫声,也是你们帮我录的,哈哈。

另外,谢谢网上的某位帅哥/美女。因为我听说,游戏中的一些素材,是从你那K来的。


鄙视

    鄙视室友小伟,不但不帮忙,还老是在我关键的时刻,把我拖去打游戏。

而且我每次都中招……哈。

“是男人就下100层”相关推荐

  1. 是男人就下100层【第五层】——2048游戏从源代码到公布市场

    上一篇<是男人就下100层[第五层]--换肤版2048游戏>中阳光小强对2048游戏用自己的方式进行了实现,并分享了核心源码,这一篇阳光小强打算将该项目的全部源码公开并结合这个实例在这篇文 ...

  2. 是男人就下100层【第四层】——Crazy贪吃蛇(2)

    在上一篇<是男人就下100层[第四层]--Crazy贪吃蛇(1)>中我们让贪吃蛇移动了起来,接下来我们来实现让贪吃蛇能够绕着手机屏幕边线移动而且能够改变方向 一.加入状态并改动代码 首先我 ...

  3. 是男人就下100层【第一层】——高仿微信界面(4)

    上一篇<是男人就下100层[第一层]--高仿微信界面(3)>中我们完成了登录,这一篇看完成登录后的一个短暂加载和引导界面. 加载界面: <RelativeLayout xmlns:a ...

  4. 《是男人就下100层》真的有隐藏剧情!B站up主数月破解,原作者点赞致谢

    边策 杨净 发自 凹非寺 量子位 报道 | 公众号 QbitAI <是男人就下100层>,曾经风靡一代的flash小游戏.炙手可热的休闲游戏之最. 它让多少人没日没夜地想去尝试" ...

  5. Unity经典游戏教程之:是男人就下100层

    版权声明: 本文原创发布于博客园"优梦创客"的博客空间(网址:http://www.cnblogs.com/raymondking123/)以及微信公众号"优梦创客&qu ...

  6. 是男人就下100层【第五层】——2048游戏从源码到发布市场

    上一篇<是男人就下100层[第五层]--换肤版2048游戏>中阳光小强对2048游戏用自己的方式进行了实现,并分享了核心源码,这一篇阳光小强打算将该项目的所有源代码公开并结合这个实例在这篇 ...

  7. cocos2d-x 是男人就下100层 附源码

    1.效果图: 玩法: 一个不断下降的小人,点击屏幕的left或者right控制小人的移动方向,尽可能生存久些.为什么要搞这个游戏呢?因为在2012年的8月份,我完成它的android版本,见<自 ...

  8. OpenGL2D小游戏——是男人就下100层

    2019独角兽企业重金招聘Python工程师标准>>> 是男人就下100层想必大家一定都玩过,在这里给大家简单介绍一下游戏规则. 游戏规则: 游戏人物从屏幕上方按一定速率下落,同时台 ...

  9. 是男人就下100层【第一层】——高仿微信界面(8)

    上一篇<是男人就下100层[第一层]--高仿微信界面(7)>中我们实现了下弹式菜单,这一篇我们来看看如何实现微信中的摇一摇功能. 首先我们来布局我们的摇一摇界面 布局文件如下: <? ...

  10. 是男人就下100层【第一层】——高仿微信界面(5)

    前面< 是男人就下100层[第一层]--高仿微信界面(4)>中我们已经完成了基本的引导界面和登录界面,这一篇中我们来看看登录后的主界面的布局和内容,来一步一步的完成该界面. 我们先来看看主 ...

最新文章

  1. BPM实例分享:如何设置开窗高度与宽度?
  2. 【AutoML】激活函数如何进行自动学习和配置
  3. struct2利用相关的Aware接口
  4. Linux vim多文件切换
  5. java领单_Java-单例模式
  6. QingStor NeonSAN跻身四强 新风口下的青云QingCloud正在厚积薄发
  7. php动态创建属性,PHP使用方法重载实现动态创建属性的get和set方法
  8. 电子书下载:Beginning ASP.NET 2.0 and Databases
  9. 记字符编码与转义符的纠缠
  10. “硬件极客”:树莓派Raspberrypi安装Kali Linux保姆教程(通过树莓派安装ARM Kali教程)
  11. 搞清楚模数、数模转换中的AGND和DGND
  12. 手工修复Win 7下彩影ARP防火墙驱动程序(适用于32/64位系统)
  13. 房屋租赁合同中“天价违约金”的约定是否有效?
  14. 商汤内推:2023届(AI先锋/校园招聘)
  15. 动态代理是什么?应用场景?
  16. sql server无法用sql server身份验证
  17. 蚊虫叮咬后的去痒妙方大全
  18. Spring Boot 前世今生和整体架构分析
  19. [iOS]阿里云人脸身份证校验
  20. LCD设备驱动(一)

热门文章

  1. 数据结构实习-迷宫(基于Qt实现)
  2. shell基础——变量定义
  3. 第一个 Web 程序
  4. python图像归一化_python 归一化_Python也能成为毕加索?我用Python给小姐姐画了幅油画...
  5. Day12-流Stream
  6. 计算机图像图形设计制作 步骤,怎样在电脑上制作流程图?小编“墙裂”推荐它!...
  7. 多租户saas 架构_实战复盘:toB产品的多租户架构设计
  8. mysql 设置 server id_MySQL中如何设置 auto_increment 重新计数 主键id从1开始
  9. vue+webpack 安装常见插件
  10. 我花了一年时间来学机器学习