- 1、本文档共25页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Snake游戏分析(排版)
Snake游戏Snake也是一个经典游戏了, Nokia蓝屏机的王牌游戏之一。 Android SDK 1.5就有了它的身影。我们这里就来详细解析一下 Android SDK Sample中的 Snake工程。本工程基于 SDK 2.3.3版本中的工程,路径为: %Android_SDK_HOME% /samples/android-10/Snake 一、 Eclipse 工程 通过 File-New Project-Android-Android Project,选择“ Create project from existing sample”创建自己的应用 SnakeAndroid,如下图: 运行效果如下图: 二、工程结构和类图 其实 Snake的工程蛮简单的,源文件就三个: Snake.java SnakeView.java TileView.java。 Snake类是这个游戏的入口点, TitleView类进行游戏的绘画, SnakeView类则是对游戏控制操作的处理。 Coordinate, RefreshHandler是 2个辅助类,也是 SnakeView类中的内部类。其中, Coordinate是一个点的坐标( x, y), RefreshHandler将 RefreshHandler对象绑定某个线程并给它发送消息。如下图: 任何游戏都需要有个引擎来推动游戏的运行,最简化的游戏引擎就是:在一个线程中 While循环,检测用户操作,对用户的操作作出反应,更新游戏的界面,直到用户退出游戏。 在 Snake这个游戏中,辅助类 RefreshHandler继承自 Handler,用来把 RefreshHandler与当前线程进行绑定,从而可以直接给线程发送消息并处理消息。注意一点: Handle对消息的处理都是异步。 RefreshHandler在 Handler的基础上增加 sleep()接口,用来每隔一个时间段后给当前线程发送一个消息。 handleMessage()方法在接受消息后,根据当前的游戏状态重绘界面,运行机制如下: 运行机制 这比较类似定时器的概念,在特定的时刻发送消息,根据消息处理相应的事件。 update()与 sleep()间接的相互调用就构成了一个循环。这里要注意: mRedrawHandle绑定的是 Avtivity所在的线程,也就是程序的主线程;另外由于 sleep()是个异步函数,所以 update()与 sleep()之间的相互调用才没有构成死循环。 最后分析下游戏数据的保存机制,如下: 这里考虑了 Activity的生命周期:如果用户在游戏期间离开游戏界面,游戏暂停;或者由于内存比较紧张, Android关闭游戏释放内存,那么当用户返回游戏界面的时候恢复到上次离开时的界面。 三、源码解析 详细解析下源代码,由于代码量不大,以注释的方式列出如下: 1、 Snake.java
Java代码 /**? ?
?*?pTitle:?Snake/p? ?
?*?pCopyright:?(C)?2007?The?Android?Open?Source?Project.?Licensed?under?the?Apache?License,?Version?2.0?(the?License)/p? ?
?*?@author?Gavin?标注? ?
?*/?? ??
package?com.deaboway.snake;?? ??
import?android.app.Activity;?? ??
import?android.os.Bundle;?? ??
import?android.widget.TextView;?? ??
/**? ?
?*?Snake:?a?simple?game?that?everyone?can?enjoy.? ?
?*?? ?
?*?This?is?an?implementation?of?the?classic?Game?Snake,?in?which?you?control?a? ?
?*?serpent?roaming?around?the?garden?looking?for?apples.?Be?careful,?though,? ?
?*?because?when?you?catch?one,?not?only?will?you?become?longer,?but?youll?move? ?
?*?faster.?Running?into?yourself?or?the?walls?will?end?the?game.? ?
?*?? ?
?*/?? ??
//?贪吃蛇:?经典游戏,在一
您可能关注的文档
- 89年10月 托福听力文字.doc
- 人教版八年级上学期英语单词表(新目标版).doc
- 中考英语完形练习.doc
- 必威体育精装版新目标初二英语上册单词表(人教版).doc
- 新3 lesson 6.doc
- 最快速的Android开发环境搭建ADT-Bundle及Hello World.doc
- 2013年人教版八年级下册单词表(单词及意思).docx
- 11114308胡绮丽[文献综述]2016-05-12.doc
- 考研单词速记1.doc
- 使用Java读取Properties资源文件的6种方法.doc
- 2025届衡阳市第八中学高三一诊考试物理试卷含解析.doc
- 2025届湖南省娄底市双峰一中等五校重点中学高三第二次诊断性检测物理试卷含解析.doc
- 天水市第一中学2025届高三第二次联考物理试卷含解析.doc
- 2025届金华市重点中学高三考前热身物理试卷含解析.doc
- 2025届北京市石景山区第九中学高三第四次模拟考试物理试卷含解析.doc
- 江苏扬州市2025届高三第一次模拟考试物理试卷含解析.doc
- 2025届江苏省南通市高级中学高考物理五模试卷含解析.doc
- 广东省清远市华侨中学2025届高三第一次调研测试物理试卷含解析.doc
- 辽宁省凤城市2025届高三第五次模拟考试物理试卷含解析.doc
- 内蒙古巴彦淖尔市重点中学2025届高考仿真卷物理试卷含解析.doc
文档评论(0)