Snake游戏分析(排版)

Snake游戏分析(排版)

ID:37713835

大小:496.00 KB

页数:27页

时间:2019-05-29

Snake游戏分析(排版)_第1页
Snake游戏分析(排版)_第2页
Snake游戏分析(排版)_第3页
Snake游戏分析(排版)_第4页
Snake游戏分析(排版)_第5页
资源描述:

《Snake游戏分析(排版)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Snake游戏分析Snake也是一个经典游戏了,Nokia蓝屏机的王牌游戏之一。AndroidSDK1.5就有了它的身影。我们这里就来详细解析一下AndroidSDKSample中的Snake工程。本工程基于SDK2.3.3版本中的工程,路径为:%Android_SDK_HOME%/samples/android-10/Snake一、Eclipse工程通过File-NewProject-Android-AndroidProject,选择“Createprojectfromexistingsample”创建自己的应用SnakeAndroid,如下图:运行效果如下图:二、工程结构和类

2、图其实Snake的工程蛮简单的,源文件就三个:Snake.javaSnakeView.javaTileView.java。Snake类是这个游戏的入口点,TitleView类进行游戏的绘画,SnakeView类则是对游戏控制操作的处理。Coordinate,RefreshHandler是2个辅助类,也是SnakeView类中的内部类。其中,Coordinate是一个点的坐标(x,y),RefreshHandler将RefreshHandler对象绑定某个线程并给它发送消息。如下图:任何游戏都需要有个引擎来推动游戏的运行,最简化的游戏引擎就是:在一个线程中While循环,检测用户操

3、作,对用户的操作作出反应,更新游戏的界面,直到用户退出游戏。在Snake这个游戏中,辅助类RefreshHandler继承自Handler,用来把RefreshHandler与当前线程进行绑定,从而可以直接给线程发送消息并处理消息。注意一点:Handle对消息的处理都是异步。RefreshHandler在Handler的基础上增加sleep()接口,用来每隔一个时间段后给当前线程发送一个消息。handleMessage()方法在接受消息后,根据当前的游戏状态重绘界面,运行机制如下:运行机制这比较类似定时器的概念,在特定的时刻发送消息,根据消息处理相应的事件。update()与sl

4、eep()间接的相互调用就构成了一个循环。这里要注意:mRedrawHandle绑定的是Avtivity所在的线程,也就是程序的主线程;另外由于sleep()是个异步函数,所以update()与sleep()之间的相互调用才没有构成死循环。最后分析下游戏数据的保存机制,如下:这里考虑了Activity的生命周期:如果用户在游戏期间离开游戏界面,游戏暂停;或者由于内存比较紧张,Android关闭游戏释放内存,那么当用户返回游戏界面的时候恢复到上次离开时的界面。三、源码解析详细解析下源代码,由于代码量不大,以注释的方式列出如下:1、Snake.javaJava代码/**   * 

5、>Title: Snake

   * 

Copyright: (C) 2007 The Android Open Source Project. Licensed under the Apache License, Version 2.0 (the "License")

   * @author Gavin 标注   */    package com.deaboway.snake;    import android.app.Activity;    import android.os.Bundle;    import android.widget.TextV

6、iew;    /**   * 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, b

7、ut you'll move   * faster. Running into yourself or the walls will end the game.   *    */    // 贪吃蛇: 经典游戏,在一个花园中找苹果吃,吃了苹果会变长,速度变快。碰到自己和墙就挂掉。    public class Snake extends Activity {        private SnakeView mSnakeView;        private static 

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。