【贪吃蛇—Java程序员写Android游戏】系列 1.Android SDK.doc

【贪吃蛇—Java程序员写Android游戏】系列 1.Android SDK.doc

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
【贪吃蛇—Java程序员写Android游戏】系列 1.Android SDK

? 【贪吃蛇—Java程序员写Android游戏】系列 1.Android SDK Sample-Snake详解 分类:?1.Android?【贪吃蛇—Java程序员写Android游戏】2011-03-31 16:18?7307人阅读?评论(13)?收藏?举报 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]?view plaincopy /**? ?*?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?wil

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档