- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
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)