- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
贪吃蛇游戏安卓(田莎莎).doc
Android贪吃蛇游戏设计与实现
A
针对当今游戏开发的流行趋势,手机游戏的设计已成为主流,随着计算机技术及硬件技术的不断发展,用户的需求量也越来越多,并且用户追求的效果也越来越好,在此形势下好的设计方法尤为重要,基于android系统的手机游戏设计方法简单且效率较高。贪吃蛇游戏也是很多人热衷的游戏,用户不仅要求其界面设计精美,更希望操作简单,程序执行速度快。
贪吃蛇游戏是一款老牌的手机游戏,同时也是一款比较需要耐心地游戏。贪吃蛇游戏就是一条小蛇,不停地在屏幕上游走,吃各个方向出现的食物,越吃越长。只要蛇头碰到屏幕四周,或者碰到自己的身子,小蛇就立即毙命。玩“贪吃蛇游戏”,难度最大的不是蛇长得很长的时候,而是开始的时候。那时蛇身很短,看上去难度不大,却最容易死掉,因为把玩一条小蛇让人容易走神,失去耐心。
2设计与实现
具体实现过程分为以下3步:项目框架、游戏类图设计、界面设计。项目框架
新建一个Eclipse工程并命名为Snake,工程如下图所示:
图1.1 Snake工程
工程中包括4个Activity,分别为Snake(主界面)、Game(游戏界面)、Help(游戏说明界面)、AuthorView(作者信息界面),通过不同Activity之间的转换实现不同界面之间的切换。游戏主界面如下图所示:
游戏类图设计
Game(Activity)继承了SnakeView类,SnakeView类继承了TileView类。TileView类继承了View,如下图所示:
图1.3 类图
TiltView的基类是View,包含了贪吃蛇游戏画面的各个设定参数,主要负责绘制游戏画面。TileView类定义如下:
public class TileView extends View {
private static final String tag = yao;
protected static int mTileSize = 20;//方格的边长
protected static int mXTileCount;//X轴上方格的个数
protected static int mYTileCount;//Y轴上方格的个数
private static int mXOffset;//绘图时X轴上的起始坐标
private static int mYOffset;//绘图时Y轴上的起始坐标
private Bitmap[] mTileArray;//位图数组
private int[][] mTileGrid;//映射整个游戏画面的数组
private final Paint mPaint = new Paint();//画笔
public TileView(Context context, AttributeSet attrs) {
super(context, attrs);
Log.i(tag, TileView Constructor);
Log.i(tag, mTileSize= + mTileSize);
}
//重置位图数组的长度
public void resetTiles(int tilecount) {
mTileArray = new Bitmap[tilecount];
}
@Override
//适应各种分辨率的屏幕,当改变屏幕大小尺寸时,同时修改tile的相关计数指标
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
Log.i(tag, onSizeChanged, + w= + w + h= + h + oldw= + oldw + oldh= + oldh);
mXTileCount = (int) Math.floor(w / mTileSize);
mYTileCount = (int) Math.floor(h / mTileSize);
Log.i(tag, mXTileCount= + mXTileCount);
Log.i(tag, mYTileCount= + mYTileCount);
mXOffset = ((w - (mTileSize * mXTileCount)) / 2);
mYOffset = ((h - (mTileSize * mYTileCount)) / 2);
Log.i(tag, mXOffset= + mXOffset);
Log.i(tag, mYOffset= + mYOffset);
mTileGrid = new int[mXTileCount][mYTileCount];
cle
文档评论(0)