android简单小游戏开发(android简单小游戏开发源码)

http://www.itjxue.com  2023-02-26 09:54  来源:未知  点击次数: 

怎么制作安卓游戏。。

学会编程,然后你只需要有个可以编译成安卓应用程序的编译器,即NDK就可以了。

Android NDK 是在SDK前面又加上了“原生”二字,即Native Development Kit,因此又被Google称为“NDK”。

众所周知,Android程序运行在Dalvik虚拟机中,NDK允许用户使用类似C / C++之类的原生代码语言执行部分程序。

NDK包括了:

从C / C++生成原生代码库所需要的工具和build files。

将一致的原生库嵌入可以在Android设备上部署的应用程序包文件(application packages files ,即.apk文件)中。

支持所有未来Android平台的一些列原生系统头文件和库

为何要用到NDK?

概括来说主要分为以下几种情况:

1. 代码的保护,由于apk的java层代码很容易被反编译,而C/C++库反汇难度较大。

2. 在NDK中调用第三方C/C++库,因为大部分的开源库都是用C/C++代码编写的。

3. 便于移植,用C/C++写的库可以方便在其他的嵌入式平台上再次使用。

Android小游戏 之《数字华容道》

[toc]

最近看《最强大脑》,看到其中的“数字华容道”这个小游戏挺有意思,于是萌生了自己写一个的想法,正好结合之前的文章 《Android开发艺术探索》第4章 View的工作原理 ,顺便复习一下。

GitHub链接:

说做就做。

经过一夜的粗制滥造,初版已经完成,现在复盘一下详细过程。

在4x4的方格棋盘中,摆放了1 15一共十五个棋子。玩家需要在最短时间内,移动棋子将1 15按顺序排列好。

本文app结构很简单,分为三个界面:目录,游戏,高分榜。分别对应的是MenuAcitivity、GameActivity、HighScoreActivity。其中MenuActivity为主界面。

新建棋盘类 BoardView ,继承自ViewGroup。在xml文件中直接加入BoardView即可。

新建棋子类 CubeView ,继承自TextView。

棋子只包含一个数字,所以简单的继承自TextView即可。由于我们还需要比对棋子是否在正确的位置,所以我们还需要给每个棋子加上数字和位置属性。

这里,我们定义了一个类Position,用于描述棋子在棋盘中的位置。

我们参考Android系统屏幕坐标系,以棋盘左上角为零点,每向右一格横坐标加一,每向下一格纵坐标加一。如图:

接下来,我们开始定义棋盘View:BoardView,这也是这个游戏的重头戏。

首先,考虑需要添加哪些属性。由于时间关系,我这里只加入了棋盘尺寸。

在style.xml文件中加入:

其中sizeH为棋盘列数,sizeV为棋盘行数。(默认4x4大小,以下文中均以4x4为例)

分别对应BoardView的 mSizeX 和 mSizeY 属性。

首先我们新建一个 cube_view.xml ,作为单颗棋子的布局。在BoardView的构造方法中,我们使用LayoutInflater将总共15颗棋子加载出来,并指定它们的位置,逐一保存在mChildren数组中。

最后,我们记录了没有棋子的空格所在位置 mBlankPos 。这个位置很关键,因为我们之后的的操作中都是围绕这个空格来的。

measure和layout的过程很简单,这里由于是自己使用,假定宽高都是定值。因为之前所有的CubeView都没有定义宽高,默认是0,所以在onMeasure中,我们使用BoardView的宽除以列数,高除以行数,得到每颗棋子的宽高并给其赋值。这样处理虽然很粗放,但是只是试玩的话并没有什么影响。

我是按照从左往右、从上往下的方式依次排列棋子,并且没有考虑棋子的margin属性,所以onLayout很简单:

至此,棋子在棋盘中就已经排列好了。

一开始的时候,我考虑的是,生成1~15的不重复随机数,然后依次给CubeView赋值即可。即:

虽然看起来是能行得通的,但是在实际的游戏过程中,遇到了非常严重的问题,那就是会出现无解的死局,也就是说无论如何都不可能解出来的棋局。经过网上搜索之后证实了这个bug的存在,而且市面上流传的该类app很多都是有这个bug的!所以这个办法就被废弃掉了,得想一个新的方法。

由于必须是按照顺序放置然后打乱的棋局才能保证有解,不能随机乱放置,所以我就模拟手动打乱,写了一个新的棋局生成器:

原理很简单,因为空格的位置是唯一的,那么我们把空格的上下左右四个棋子随机找出一个,与空格互换位置,也就模拟了一次手动点击。当点击的次数足够多时(这里循环了10000次),就可以看做是已经打乱的棋盘了。

最后把生成好的棋盘,保存在一个二维数组中即可。

(因为有个10000次的循环,我担心时间过长,于是将其放在线程中执行,但是后来我觉得自己多此一举了。)

然后,在BoardView中定义一个setData方法,来把生成好的棋局装进来:

这样,就完成了棋局的生成。

游戏过程基本是极简的。

在初始化方法中(2.1),我们给每个棋子都定义了点击事件,模拟真实场景。具体来讲,就是当我们点击一个棋子的时候:如果棋子在空格周围,则将棋子移动到空格处;反之,则不进行任何操作。(如果设置滑动同理)

这样我们的Position类就派上用场了。

在2.1的 init() 方法中,我们有这么一句:

即是,当我们点击了其中一个棋子时,会触发 moveChildToBlank(view) 方法。这个方法的目的正是上面所说。

在移动棋子之后,我们需要检查一下是否是正确排列的顺序,如果是的话,那么表明游戏完成。

首先创建HighScore类,包含姓名,用时,步数,时间。

高分榜使用SharedPreferences+Gson,将一个ListHighScore转换为json形式保存在本地。

最佳成绩的记录是在GameActivity中完成的。流程如下:

总的来说,逻辑简单清晰。

自己开发的自然是需要作弊功能了!暂且不表。

由于只用了一个晚上完成,所以还很粗糙,很多功能不够完善,而且也没做适配和测试,难免会有bug存在。主要是把思路记录下来,方便以后自己和他人做个参考。

数字华容道GitHub地址:

手机如何自己编程做游戏

如果你有兴趣在android上设计一些游戏,那么我这儿有一些对你有所帮助的东西,我是android Market上一个名为LightRacer的小赛车游戏的开发者,虽然在此之前我也曾开发过游戏,但这仍然是我的第一个android上的应用,在这个过程中我学到了很多在android上开发游戏的经验,并且,我也很乐意将这一切与你分享。好了,让我们开始吧,如果你之前做过游戏的开发,那么转移到android这样的移动平台上并不是件难事,你要做的只是学习一下新的架构与API,如果你是一个新手,我这儿也为你准备了一个入门清单,它适用于任何类型的游戏开发,比如动作类、策略类、模拟类或者智力类。

开启分步阅读模式

操作方法

01

在这门课最后,你会完成一个可以运行在安卓机或者安卓平板上的游戏。你可以与你的家人朋友分享它,用你的新知识进一步改进你的游戏,或者完全自己创造一个游戏。

02

如果你有兴趣在android上设计一些游戏,那么我这儿有一些对你有所帮助的东西,我是android Market上一个名为LightRacer的小赛车游戏的开发者,虽然在此之前我也曾开发过游戏,但这仍然是我的第一个android上的应用,在这个过程中我学到了很多在android上开发游戏的经验,并且,我也很乐意将这一切与你分享。好了,让我们开始吧,如果你之前做过游戏的开发,那么转移到android这样的移动平台上并不是件难事,你要做的只是学习一下新的架构与API,如果你是一个新手,我这儿也为你准备了一个入门清单,它适用于任何类型的游戏开发,比如动作类、策略类、模拟类或者智力类。

03

获取SDK第一步当然是下载并安装android的SDK[软件开发套件],这套SDK主要包括有核心库文件,一个模拟器,开发工具和一些示范的样例文件。我强烈推荐你使用 Eclipse 和 android eclipse 扩展。如果你只是使用android,Eclipse IDE就已经足够了,但如果这是你第一次开发Java应用,建议你还是下载完整的

04

学习应用架构就像迷人的内在美一样,这是理解

android 应用架构的关键,如果你不学习它,你设计出来的游戏将是一种很难修复bug的产品。你需要了解应用程序、活动、Intents以及它们是如何互相联系交互的,Google在这儿提供了良好的信息架构。真正重要的是,你要理解为什么在你设计的游戏中需要不止一个的活动进程以及如何设计一个用户体验良好的游戏。这些都应当配合到应用的生命周期中。

05

学习应用的生命周期应用的生命周期是由AndroidOS操作系统进行管理的,你的活动进程都将做为系统命令进行创建,正确处理这些事件对一个应用程序来说是极为重要的,因为终端用户不会知道什么是正确的。最好在开始设计你的游戏之前搞明白这些,因为这有助于节省你的调试时间以及避免代价高昂的重新设计。

06

对大多数应用而言,默认设置即可开始工作,但对游戏而言,你可能需要调整单态实例的信号为打开。在默认情况下,Android会新建一个活动实例进程,因为它认为这是比较合适的,而游戏,你可能只希望有一个活动的实例进程,这有一点儿影响,它需要你了解一些系统状态的管理,但对我来说,它解决了资源管理的问题,还是值得的。

07

主循环是否需要一个主循环是根据你写的游戏类型而决定的,如果你写的游戏没有时间依赖性或者只是响应用户的输入而没有其它的视觉变化,你可能并不需要一个主循环。如果你设计的是一个平面的动作游戏或者动画游戏,计时游戏或者其实类型的自动游戏,你就应该认真考虑使用主循环。

用android编出来的小游戏有哪些

小鸟、水果忍着什么的就不用说了,想必你也玩烂了。

我推荐几个我在玩的:

1、stupidzombies(几个子弹内打死所有屏幕上的僵尸,子弹会在屏幕上弹来弹去)

2、ageofwind2(中世纪海盗游戏,出去炸翻海上的船,然后捡桶子回去卖钱,修船买新船,挺有意思,重力感应操作方向,刚开始有点不熟,熟练了可以风筝n只船)

3、whackyourboss(只有20关,中文名好像叫老板的20种死法,如果你在工作,说不定你会喜欢)

4、三国杀。这个就不用说了吧

5、beats。跳舞机游戏。

6、battleheart(中文名勇者之心,打怪升级的,有法师、猎人、战士、dk、野蛮人、盗贼几种职业)

7、canknockdown(踢罐子,拿球砸罐子,有点意思)

8、where‘smywater?(鳄鱼爱洗澡)

9、三剑之舞(棒子的游戏,类似于地下城与勇士)

10、deathrally(死亡拉力赛,赛车咯)

11、游戏发展国(这个会玩上瘾的,不过很快就通关了,通关后还是可以继续玩)

12、streetball(街头篮球,挺容易的,基本上随便选一个人物都能完爆对手,我每场得分28+,盖帽18个,两双啊,哈哈)

13、skaterboy(滑板游戏)

14、cheesetower(某些网站上排名靠前的游戏,玩了觉得一般般)

好了就这些,还有很多删了都不记得了。

(责任编辑:IT教学网)

更多

推荐Flash实例教程文章