一、游戏分析
1、你需要考虑以下问题:
a)界面
墙
蛇
苹果
b)游戏逻辑
蛇走动
蛇的控制
苹果随机出现
蛇吃掉苹果
蛇长度增加
游戏在运行中,蛇的走动,转弯,吃掉苹果,怎么计算?二维数组实现,一个地图:map[x][y],墙边界、蛇的走边,吃苹果,都依靠坐标定位。
本游戏中有三种类型图片:墙,苹果(绿色),蛇头(红色),蛇身(黄色)
贪吃蛇游戏在游戏开发中碰撞检测属于“地图格子划分检测”。
即在游戏开发时,把屏幕划分成点阵的格子组成。
二、图形绘制
动态图形绘制:
动态图形绘制的基本思路:创建一个类继承View类(或继承SurfaceView类),覆盖onDraw方法,使用Canvas()对象在界面上绘制不同的图形,使用invalidate()方法刷新界面。
Canvas画布android.graphics提供一些画图形的方法
Paint画笔用来描述图形的颜色和网格
Color颜色颜色常量和创建颜色的方法RGB
Path指定路径如要画圆时,需要指定圆心和半径,Path一般用来从某个点移动到另一个点连线
三、游戏实现
1、初始化地图坐标。
前提一:屏幕的宽和高,在程序一开始就获取屏幕的宽和高。
protectedvoidonSizeChanged(intw,inth,intoldw,intoldh){....}
w,h即为屏幕的宽和高。
前提二:地图的行数和列数,初始化地图数组map。
这些初始化的工作,在第一次加载时会首先调用onSizeChanged方法。
xcount=(int)Math.floor(w/size);
ycount=(int)Math.floor(h/size);
xoffset=(w-(xcount*size))/2;
yoffset=(h-(ycount*size))/2;
map=newint[xcount][ycount];
2、把图片加载进来,将用不同类型的图片绘制墙,蛇和苹果
publicvoidloadPic(intkey,Drawabledrawable){
Bitmapbitmap=Bitmap.createBitmap(size,size,Bitmap.Config.ARGB_8888);
Canvascanvas=newCanvas(bitmap);
drawable.setBounds(0,0,size,size);
drawable.draw(canvas);
pics[key]=bitmap;
}
3、为地图数组赋值的方法:
publicvoidsetTile(intpicIndex,intx,inty){
map[x][y]=picIndex;
}
4、初始化边界墙。计算出边界,对map进行赋值。
publicvoidbuildWall(){
//横向
for(intx=0;x<xcount;x++){
setTile(GREEN_STAR,x,0);
setTile(GREEN_STAR,x,ycount-1);
}
//纵向
for(inty=0;y<ycount;y++){
setTile(GREEN_STAR,0,y);
setTile(GREEN_STAR,xcount-1,y);
}
}
5、绘制墙(边界)交给onDraw()方法。实际上蛇的走动,苹果出现,就是由此方法画出来。
for(intx=0;x<xcount;x++){
for(inty=0;y<ycount;y++){
//理解map[x][y]==0的情况
if(map[x][y]>0){
canvas.drawBitmap(pics[map[x][y]],
xoffset+x*size,
yoffset+y*size,
paint);
}
}
}
关键是给地图数组赋值,赋值不同的值,绘制出边界,蛇,苹果,不断的重绘,就动起来了。
6、游戏结束
if(newHead.x<1||newHead.y<1||newHead.x>xcount-2||newHead.y>ycount-2){
setMode(LOSE);
}
7、产生随机苹果,需要进行冲突检查
privatevoidaddRandomApple(){
CoordinatenewCoor=null;
booleanfound=false;
while(!found){
intnewX=1+RNG.nextInt(xcount-2);
intnewY=1+RNG.nextInt(ycount-2);
newCoor=newCoordinate(newX,newY);
booleancollision=false;
for(intindex=0;index<snakeTrail.size();index++){
if(snakeTrail.get(index).equals(newCoor)){
collision=true;
}
}
found=!collision;
}
appleList.add(newCoor);
}
8、苹果的图形
publicvoidupdateApple(){
for(Coordinatec:appleList){
setTile(YELLOW_STAR,c.x,c.y);
}
}
9、蛇吃掉苹果
for(intappleIndex=0;appleIndex<appleLength;appleIndex++) {
Coordinatec=appleList.get(appleIndex);
if(c.equals(newHead)){
appleList.remove(c);
addRandomApple();
growSnake=true;
}
}
//当蛇吃掉苹果后,增加长度
snakeTrail.add(0,newHead);
if(!growSnake){
snakeTrail.remove(snakeTrail.size()-1);
}
四、分步实现
1、画出一个图形
2、画出墙
3、画出蛇
4、移动的蛇
5、判断蛇触到墙,重新开始游戏
6、产生随机的苹果
7、蛇吃掉苹果,蛇变长
<wbr></wbr>
相关推荐
"Android游戏编程实例基础"这个主题旨在引导初学者逐步掌握Android游戏开发的基本技能。本资源提供了一个详细的实例教程,即《从零开始Android游戏编程(第二版)》,这本书是学习Android游戏开发的优秀教材。 首先...
本篇文章将详细解析`android游戏开场动画源代码`,并围绕`android 游戏源代码`、`android 游戏`以及`android动画`这三大标签展开讨论。 首先,我们来探讨一下Android游戏源代码。源代码是游戏的灵魂,它包含了游戏...
http://video.sina.com.cn/playlist/4003320-1320045357-1.html#33844107?Android游戏及应用开发之2? http://video.sina.com.cn/playlist/4003320-1320045357-1.html#33845175?Android游戏及应用开发之3? ...
"Android游戏基础.pdf"可能专注于Android平台上游戏开发的具体技术,如Android游戏框架的选择(如libGDX、Unity、Cocos2d-x等)、游戏编程原理、多线程处理、触摸事件处理、游戏状态管理等。这些内容将帮助开发者...
教程名称: 千锋Android游戏开发基础视频教程(10集)【】千锋Android游戏开发基础视频教程-大纲【】千锋Android游戏开发基础视频教程01~02【】千锋Android游戏开发基础视频教程03~04【】千锋Android游戏开发基础...
【Android小游戏源码】是一个适合初学者学习的项目,它基于Eclipse开发...这个源码项目是实践和学习Android游戏开发的宝贵资源,不仅可以帮助初学者掌握基本技能,还能激发他们进一步探索更复杂的Android游戏开发技术。
本“android游戏小Demo”就是一个很好的起点,它提供了基础的游戏开发框架,帮助学习者理解Android游戏开发的基本概念和流程。 首先,我们来讨论Android游戏开发的基础。Android游戏通常基于Java或Kotlin语言编写,...
在Android游戏开发的基础阶段,小球运动是一个常见的学习主题,它可以帮助开发者理解基本的游戏物理引擎、碰撞检测以及动画原理。这个教程可能包含了如何创建一个简单的2D游戏,其中一个小球在屏幕上移动并与其他...
总的来说,这个基于Android的拼图游戏APP源码为我们提供了深入学习Android开发的机会,涵盖了从基础的UI设计到高级的游戏逻辑实现等多个方面。通过对源码的阅读和学习,开发者可以提升自己的Android编程技能,并且对...
本教程将探讨Android游戏编程的基础,包括使用的游戏开发工具、框架和编程语言,以及如何利用这些资源来创建互动性强、用户体验良好的游戏。 首先,Android游戏开发主要基于Java或Kotlin这两种官方支持的编程语言。...
【Android游戏源码合集】是一个集合了多个Android平台游戏的源代码资源,对于...这是一个从理论到实践,从基础到高级的全面学习过程,对于任何想在Android游戏开发领域有所建树的人来说,都是一个不可多得的学习资源。
随着智能手机的普及和移动游戏市场的蓬勃发展,Android游戏开发已成为计算机科学及软件工程领域的重要研究方向。本文基于Android平台开发了一款解谜游戏,旨在探讨开发过程中的关键技术和设计理念,并分析了游戏的...
通过对这个"android小游戏源码"的深入学习,开发者不仅可以了解Android游戏开发的基本流程,还能掌握优化游戏性能、提升用户体验的各种技巧。无论是新手还是经验丰富的开发者,都能从中获益良多。
通过阅读此书,读者可以深入理解Android游戏开发的基础知识和核心技术。 首先,书中会涵盖Android开发环境的搭建,包括安装Android Studio、配置模拟器或连接物理设备进行测试,以及理解Android SDK的基本使用。...
通过对这个"简单的贪吃蛇源码"的分析,我们可以了解到Android游戏开发的基本流程和技巧,这对于想要学习Android游戏开发的开发者来说是非常有价值的。通过实践这样的源码,不仅可以提高编程技能,还能深入理解游戏...
1. **Android游戏开发基础** - Android游戏开发通常基于Java或Kotlin语言,本项目可能采用其中一种。了解这两种语言的基本语法和面向对象编程概念是必不可少的。 - 使用Android Studio作为集成开发环境(IDE),它...
这份“Android游戏编程ppt”提供了一套详尽的教程,帮助开发者深入理解和掌握Android游戏开发的核心概念。以下是对该PPT内容的详细解读: 1. **Android环境搭建**:首先,开发者需要安装并配置Android Studio,这是...
通过这个项目,开发者不仅可以学习到Android应用开发的基础,还能深入了解3D游戏开发的高级技术,这对于提升Android游戏开发能力非常有帮助。同时,这个项目也适合作为实践和研究Android游戏性能优化、用户体验设计...
1. **Android Studio**: Android游戏开发的基础工具是Android Studio,这是一个集成开发环境(IDE),提供了编写、调试和优化Android应用的所有必要功能。熟悉其界面、布局以及如何创建新项目是入门的第一步。 2. *...