- 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文档。上传文档
查看更多
(贪吃蛇游戏分析
第6章 Android游戏入门(一)
第一部分 本次上机任务
贪吃蛇游戏实现
第二部分 任务实现
贪吃蛇游戏是一款经典的老游戏,很多游戏教程都会用该游戏作为游戏入门的示例。今天我们也采取该游戏作为游戏入门示例。在理论课上已经对于如何使用View组件进行游戏开发有了初步了解,下面通过View组件实现完成的贪吃蛇游戏。
掌握要点:
掌握将View组件作为游戏开发组件的基本流程
掌握当手机屏幕发生改变时数据的保存
任务说明:
1、游戏的基本流程。
游戏加载时界面如图:
当点击模拟器上的向上的方向键,开始游戏,界面如下:
此时点击上下左右方向键,可以控制“蛇”按照特定的方式移动,每吃一个食物,蛇身会长一格,同时在背景内会再次提供一个新的食物,当蛇头碰到“墙壁”时,游戏结束。
2、游戏的场景实现
通过上面的截图可以看出,整个游戏的场景有红黄绿三种颜色的小图片构成,故在此编写TileView,该类作为整个场景的基础类,代码如下:
public class TileView extends View{
private static final String TAG=TileView;
//每个方格的大小
protected static int mTileSize;
//横向的方格数
protected static int mXTileCount;
//纵向的方格数
protected static int mYTileCount;
//xy坐标系的偏移量
private static int mXOffset;
private static int mYOffset;
//图片
private Bitmap[] mTitleArray;
//二维方格地图
private int[][] mTileGrid;
//画笔
private final Paint mPaint=new Paint();
public TileView(Context context,AttributeSet attrs,int defStyle) {
super(context,attrs,defStyle);
// TODO Auto-generated constructor stub
TypedArray a=context.obtainStyledAttributes(attrs,R.styleable.TileView);
mTileSize=a.getInteger(R.styleable.TileView_tileSize, 12);
Log.v(TAG,String.valueOf(mTileSize));
a.recycle();
}
//实际调用的是该构造方法
public TileView(Context context,AttributeSet attrs){
super(context,attrs);
TypedArray a=context.obtainStyledAttributes(attrs, R.styleable.TileView);
mTileSize=a.getInt(R.styleable.TileView_tileSize, 12);
a.recycle();
}
//设置图片数组的大小
public void resetTiles(int tilecount){
mTitleArray=new Bitmap[tilecount];
Log.v(TAG,String.valueOf(mTitleArray.length));
}
//在游戏还未正式开始前,
//首先要做一些初始化工作,
//在View第一次加载时会首先调用onSizeChanged,
//这里就是做这些事的最好时机
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
// TODO Auto-generated method stub
super.onSizeChanged(w, h, oldw, oldh); Log.v(TAG,w+String.valueOf(w)+h+String.valueOf(h)+oldw+String.valueOf(oldw)+oldh+String.valueOf(oldh));
Log
您可能关注的文档
最近下载
- MOEA在微电网优化调度中的应用研究.pptx
- 制冷系统安装检验批质量验收记录表.doc
- 财务无纸化报销流程培训.pptx
- 2023年江苏省连云港市海州区面向大学生村官定向招聘事业单位工作人员17人高频笔试、历年难易点考题(共500题含答案解析)模拟试卷.docx VIP
- 电力机车空转故障原因分析及解决措施.docx
- 半导体物理学_第七版_刘恩科_课后答案[1-14章].khda.pdf
- 四川省中小流域暴雨洪水计算.doc
- 2024年江苏省镇江市事业单位招聘184人历年高频考题难、易错点模拟试题(共500题)附带答案详解.docx VIP
- 2024-2025学年北京东城区九年级初三(上)期末道德与法治试卷(含答案).pdf VIP
- 高考数学压轴题专项训练:三角函数(全题型压轴题)含答案及解析.pdf VIP
文档评论(0)