知识共享-Android版贪吃蛇源码及分析(雷惊风).doc

知识共享-Android版贪吃蛇源码及分析(雷惊风).doc

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

Android----snake源码分析

代码结构分析:

Snake :主游戏窗口

SnakeView:游戏视图类,是实现游戏的主体类

TileView:一个处理图片或其它

Coordinate:这是一个包括两个参数,用于记录X轴和Y轴简单类,其中包括一个比拟函数.

RefshHandler:用于更新视图

Snake

这个类是游戏的主游戏窗口,是框架容器。

游戏的开始:oncreate此外的亮点是:setContentView(R.layout.snake_layout);设置窗口的布局文件,这里Android123给大家说明的是,这里的snake_layout使用了自定义资源标签的方式,大家注意学习:这里我们可以看到来自SnakeView这个派生类的名称,由于Android内部的R.资源不包含SnakeView类,所以我们必须写清楚Package,比方com.exmple.android.snake.SnakeView然后和其他控件使用一样,都是一个id然后宽度、高度、以及自定义的标签tileSize〔尾巴长度〕,如下:

android:id=@+id/snake

android:layout_width=fill_parent

android:layout_height=fill_parent

tileSize=12

/

onPause:关于这点,大家可以参考下在我blog中关于active生命周期

在玩游戏过程中,如果有来电或是其它事件中断,这时应该把当前状态保存。以便返回时,还可以继续玩游戏。这就使用onSaveInstanceState实现保存当前状态。

TileView

注:此局部解析来自:Android例如程序Snake贪食蛇代码分析(三)

TileView,从名称上不难看出这是一个方砖类,就是生成一个方块。TileView使用了Android平台的显示基类View,View类是直接从java.lang.Object派生出来的,是各种控件比方TextView、EditView的基类,当然包括我们的窗口Activity类,这些在SDK文档中都说的比拟清楚。

??这里定义了5个int型全局的变量,分别是方砖的数量mTileSize;方砖水平x防线的数量mXTileCount;以及竖直y方向上的方砖数量mYTileCount,下面是一个相对偏移位置mXOffset和mYOffset;这里android123主让要大家了解如何自定义View在Android开发中,在一个View类中主要是重写onSizeChanged方法来控制改变局部,以及onDraw实现画布的修改,实现的简写如下:

@Override

??protectedvoidonSizeChanged(intw,inth,intoldw,intoldh){}

@Override

??publicvoidonDraw(Canvascanvas){super.onDraw(canvas);}

??我们自定义的TileView类需要自己添加一个构造方法,根据需要,我们还重载了一种包含样式的方法,这里大家可以多看下Gallery控件的实现,就好理解了,下面是根本框架。

publicTileView(Contextcontext,AttributeSetattrs,intdefStyle){super(context,attrs,defStyle);}

publicTileView(Contextcontext,AttributeSetattrs){super(context,attrs);}

??在贪食蛇游戏中我们知道Snake是移动的,所以参加了一个去除显示的clearTiles方法,通过一个二维数组保存一个gird网格型的运动轨迹,下一次我们将会讲解android贪食蛇的游戏逻辑和完整的关联拼接实现。

SnakeView

在这个类中实现的游戏的实体,从游戏需求的角色,这个游戏包括了如下方面:

随机产生小苹果,apples这里是复数,当然是是大于1个苹果,所以代码中产生了两个苹果。

游戏状态管理

画蛇,view的更新

吃掉苹果后小蛇状态的变化

画围墙

如果实现吃掉苹果小蛇速度变快?

关键是:mMoveDelay这个变量,以下是涉及到这个变量的函数,

每次吃掉苹果后,就会updateSnake一下,里面就把时间处理了:mMoveDelay*=0.9;

小蛇其实就是一个数组,google的代码就是好注释写的清楚:

/**

*mSnakeTrail:alistofCoordinatesthatmakeupthesnakesbody

*mAppleList:th

文档评论(0)

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

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

1亿VIP精品文档

相关文档