zip文件还包含编译的“MonkeyGame-debug”。可以在模拟器中运行的二进制文件。在“game.build”文件夹中有一个HTML5 build。在Chrome浏览器中运行MonkeyGame.html来测试游戏。 Introduction  有一些RAD跨平台游戏开发工具/引擎支持x86平台上的Android,如下所示:http://software.intel.com/en-us/blogs/2012/03/13/game- engines-forandroid 我们将使用Monkey game engine为基于Intel架构的设备构建一款新的基于ndandriod的游戏。它的优点是在ARM和x86架构上为Android预先编译了NativeGL共享库,否则我们将不得不使用NDK工具链来重新编译它们。您可以在附带源代码的“jni”文件夹中找到这些文件。Android packager在.apk中包含了x86和ARM共享库,在部署期间,根据目标设备是ARM还是x86安装必要的库。因此,生成的.apk是跨平台兼容的,不需要为这两种不同的体系结构进行本机重新编译。 背景 记忆游戏是一个变化的经典游戏,你揭开两张牌,以找到匹配的对。当所有配对都被揭开时,游戏结束。目标是用最少的步数暴露所有对。在游戏的这种变化中使用了一副部分的扑克牌。 游戏特点:24张卡用于增加难度。基于声音和粒子效果的动画卡 游戏状态classCollision类程序性字体代class 最适合的类使用硬编码的虚拟分辨率缩放比率和不同的实际设备方面决议——非常重要,因为Android设备碎片是一个主要issue 渐变classParticle引擎class  Highscore课程class 我选择这个游戏作为教学工具对于本文because 它包含所有必要的游戏元素和清楚地展示了游戏的实时特性循环和设计原则的使用。它是一款2D游戏,因为对于现代的基于触摸屏的移动设备来说,与2D精灵交互提供了一个更直观的界面。 技术信息 一些要求的快速原型,该引擎有: 快速调试-编译-运行周期可以在任何标准兼容的HTML5浏览器中执行。OnCreate()、OnUpdate()和OnRender()方法很好地定义了游戏循环。脚本语言是面向对象的。它具有用于精灵操作和游戏数据结构的基本语言构造。自动垃圾收集。 使用的代码 GameState变量循环状态机通过其各个阶段。它在start处被初始化到STATE_MENU。这个变量还控制代码的更新和呈现部分。 隐藏,复制Code

Method SetState (state:Int)
GameState = state
Select GameState
Case STATE_MENU
//The initial menu layer
Case STATE_PLAYING
//The game layer
Case STATE_PAUSED
//The game layer paused
Default
Print "ERROR: Unknown game state!"
End
End

让我们检查输入和更新游戏状态: 在OnUpdate()方法中,我们调用碰撞类的Card[i]. update()方法。取决于指针是否与卡精灵碰撞,它返回卡的可见或隐藏状态。如果单击了两张卡片,则增加try计数。 隐藏,复制Code

Case STATE_PLAYING
//check for two card clicks. show cards that were clicked by hiding corresponding cardback
For Local i : Int = 0 Until NUM_CARDS
Card[i].Update()
If Card[i].Pressed = True And Card[i].Visible = True And click < 2 Then
Card[i].Visible = False
savecard[click] = i
click = click + 1
If click = 2 Then
slowdown = Millisecs()
turns = turns + 1 //increment tries after two cards have been clicked
End If
PlaySound boom End If
Next

如果找到一对匹配的牌,我们将不覆盖这些牌,否则,如果这对牌不匹配,我们将使相应的牌背面可见并再次隐藏这些牌。1.5秒的延迟允许玩家看到两张牌有足够长的时间来发现它们不匹配。 隐藏,复制Code

If click = 2  Then
If coinplace[savecard[0]] = coinplace[savecard[1]] Then //a matching pair is found
click =0
Else
If Millisecs()-slowdown > slowlimit Then // wait before covering cards again
Card[savecard[0]].Visible = True
Card[savecard[1]].Visible = True
click =0 // reset to accept clicks on next two cards
Endif
Endif
End If Local drawncard:Bool = False
For Local i : Int = 0 Until NUM_CARDS
If Card[i].Visible = True Then
drawncard = True
End If
Next
If drawncard = False Then Restart() // If no cards are left to uncover End game

当因为碰撞类返回backcard可见状态为False而没有一张卡被backcard覆盖时,drawncard布尔值将状态更改为False,游戏结束。 抖一下这些卡片: 没有动画的游戏没有多少乐趣。我们来做花瓶吧。int变量n起了作用。n = -1*n在+1和-1之间切换。DrawImage()方法具有旋转和缩放参数。我们调整卡片精灵在+1度和-1度之间的旋转来创建振动卡片效果。 隐藏,收缩,复制Code

//refactored because the renderscreen method appeared to work in the pause state, and halts
// game update, except for cards vibrating Method RenderScreen() Cls // for a resolution of 800x600 render cards in 6 columns and 4 rows, starting at
// x offset 33 pixels and y offset 30 pixels
For Local i:Int = 0 Until NUM_CARDS
DrawImage coins[coinplace[i]], 33+((i Mod 6)*100), 30 +(Int(i/6)*140)
Next //as n toggle between +-1, the card sprites oscillate(animation) between +-1 degree
//if collision check returns visible attribute show cardback else hide it
For Local i : Int = 0 Until NUM_CARDS
If Card[i].Visible = True
n = -1*n
DrawImage (card, Card[i].PositionX, Card[i].PositionY, n*1.0, 1.0, 1.0)
Else
DrawImage (cardclick, Card[i].PositionX, Card[i].PositionY, 0, 1.0, 1.0)
End If
Next DrawImage (sidebar, 620, 0) DrawImage pointer.image, pointer.x, pointer.y font.Draw( turns, 710, 290, 3, 3, 0.5, 1.0 ) //render the procedural font for number of tries End

下载中的代码有大量注释,几乎不需要解释,但是类成员和方法在下面有详细说明。 MyGame类: 方法:实例化游戏对象-图像,声音,成员和变量。 OnUpdate()方法:轮询/中断检查鼠标/触摸屏/键盘输入,并相应地改变游戏状态和对象状态。 方法:根据游戏的菜单状态、游戏状态或暂停状态以及游戏对象的状态属性来渲染图形。 碰撞类:获取触摸/鼠标坐标d碰撞精灵,并为相应的精灵对象返回可见或隐藏的属性。 字体类:这是一种顺序生成字体只渐变类:吞世代雪碧对象,缓解他们或使用不同的equationsParticle类:产生粒子接触后,“删除”粒子生命expiresHighscore类:各种高分升序或降序orderTimer类:延迟和synchronization ,最适合的类:提供硬编码的“虚拟”分辨率,并缩放图形到不同的屏幕分辨率(纵横比),而不会导致沿着x,y屏幕空间坐标轴失真。 黑色边框将出现在if的左/右或顶部/底部 物理设备的纵横比与“虚拟”纵横比不同。屏幕方向改变。面临的问题 对于功率较小的移动设备,我尝试实现一个粒子引擎,因为集成的粒子类占用的资源有点多。编译器不喜欢我在游戏循环的特定点创建一个精灵对象列表!但我相信,只要有时间,一定会有解决办法的。最后实现了粒子类。粒子精灵是在OnCreate()方法中静态创建的。我们不是在粒子生命结束后销毁精灵对象,而是通过在数组中动态交换来“删除”它们。我也非常想念集成调试器的开发和测试 最初的开发/调试是在浏览器中完成的,以获得快速的周转时间。 在一台1024x600、7英寸的Android平板电脑上进行了可伸缩性和实际运行时性能测试。 最后的测试是在Android模拟器中的x86 AVD上进行的。 虽然HTML5编译很流畅,但在Android目标上测试时,在从碰撞类返回图形对象句柄时抛出了一个空对象异常,但实现了一个合适的解决方案。 游戏运行在x86 AVD的Android模拟器 感谢所有在Monkey coder论坛上的家伙,当问题出现时,他们总是随时准备帮助我们。 结束 源代码可供您使用,我希望您可以在x86 Android平台上自己的游戏中进一步使用它。如需澄清或解释,请提问。另外,如果你发现任何需要纠正的地方,请告诉我。您可以尝试通过改变参数和粒子引擎使用不同吐温类,看看他们工作只History  10/11/2012  1.1.0——添加highscores和计时器class8/11/20121.0.1 -添加渐变类开始按钮的前端现在看起来多达宽松政策到位——添加粒子引擎类——点击卡片生成particles5/11/2012  MemoryGame 1.0.0 , Do , -在线全球高分避免功能creep , 本文转载于:http://www.diyabc.com/frontweb/news30596.html

基于Intel x86 Android的RAD游戏开发的更多相关文章

  1. Android研究之游戏开发处理按键的响应

    1.onKeyDown 方法 onKeyDown 方法是KeyEvent.Callback 接口中的一个抽象方法,重写onKeyDown 方法能够监听到按键被按下的事件,我们先看看onKeyDown方 ...

  2. Android安卓手机游戏开发

    成都传智播客Java培训,免费学Android安卓手机游戏开发,安卓android开发课程包括Android安卓应用开发和Android安卓游戏开发两个方向,可是偏向游戏开发. 依据"199 ...

  3. Android——Cocosd2d-x手机游戏开发学习思路

    手机APP应用如雨后春笋般冒了出来,而在众多的APP应用中,游戏占据了半壁江山.它丰富着人们的业余生活,增进了人们之间的沟通交流.也有许多开发的朋友对游戏开发情有独钟,他们不止是享受着有很多的人们去下 ...

  4. Coco2d-x android win7 Python 游戏开发环境的搭建

    1:我用的电脑配置 win7 3 核 内存8G 桌面.一直想学习Coco2d 游戏开发,所以,一个星期后,需要找到,最终建立了一个良好的环境 2:我使用的版本号版本号,至于建筑android开发环境略 ...

  5. Android研究之游戏开发摄像头更新

     游戏中摄像头的原理介绍        在游戏开发中更新摄像头的位置能够决定屏幕显示的内容,尤其是RPG类游戏摄像头有着很关键的数据.我举一个样例 有时候我们在玩RPG游戏的时候进入一个新的场景 ...

  6. 一网成擒全端涵盖,在不同架构(Intel x86/Apple m1 silicon)不同开发平台(Win10/Win11/Mac/Ubuntu)上安装配置Python3.10开发环境

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_200 时光荏苒,过隙白驹,即将进入2022年,著名敏捷开发语言Python也放出了3.10最终版,本次我们来展示一下在不同的系统和 ...

  7. x86 Android游戏开发专题篇之使用google breakpad捕捉c++崩溃(以cocos2dx为例)

    近期一直都在x86设备上进行游戏开发.就c++层和Android java层倒没有什么要特别注意的(除了须要注意一下改动Application.mk指定平台外),在c++崩溃的时候,非常多时候看不到堆 ...

  8. Android游戏开发实践(1)之NDK与JNI开发01

    Android游戏开发实践(1)之NDK与JNI开发01 NDK是Native Developement Kit的缩写,顾名思义,NDK是Google提供的一套原生Java代码与本地C/C++代码&q ...

  9. Android游戏开发研究帧动画实现

     1.动画的原则框架        帧的动画帧的动画顾名思义,画就是帧动画. 帧动画和我们小时候看的动画片的原理是一样的,在同样区域高速切换图片给人们呈现一种视觉的假象感觉像是在播放动画,事实上只 ...

随机推荐

  1. 令人蛋疼的错误提示 0xcdcdcdcd ,0xdddddddd ,0xfeeefeee ,0xcccccccc ,0xabababab

    原文地址:http://www.cnblogs.com/pcchinadreamfly/archive/2012/04/26/2471317.html参考地址:http://blog.csdn.net ...

  2. WinMTR 网络测试工具-九五小庞

    WinMTR(建议优先使用) 百度下载工具 链接:https://pan.baidu.com/s/19ArKSTA2amsa4p6vHegDIQ 提取码:cy4y WinMTR是mtr工具在Windo ...

  3. Activiti7 流程部署

    首先先绘制一个流程图 创建bpmn文件 然后绘制好节点 然后修改节点信息 指定负责人 点击背景,修改ID和名称 保存 然后重命名成xml 使用diagram打开 导出png 然后包xml改回bpmn ...

  4. Python爬取NBA虎扑球员数据

    虎扑是一个认真而有趣的社区,每天有众多JRs在虎扑分享自己对篮球.足球.游戏电竞.运动装备.影视.汽车.数码.情感等一切人和事的见解,热闹.真实.有温度. 受害者地址 https://nba.hupu ...

  5. 《ASP.NET Core项目开发实战入门》带你走进ASP.NET Core开发

    <ASP.NET Core项目开发实战入门>从基础到实际项目开发部署带你走进ASP.NET Core开发. ASP.NET Core项目开发实战入门是基于ASP.NET Core 3.1 ...

  6. python中多进程multiprocessing、多线程threading、线程池threadpool

    浅显点理解:进程就是一个程序,里面的线程就是用来干活的,,,进程大,线程小 一.多线程threading 简单的单线程和多线程运行:一个参数时,后面要加逗号 步骤:for循环,相当于多个线程——t=t ...

  7. 乔悟空-CTF-i春秋-Web-SQL

    2020.09.05 是不是有些题已经不能做了--费了半天,到最后发现做不出来,和网上大神的方法一样也不行,最搞笑的有个站好像是别人运营中的,bug好像被修复了-- 做题 题目 题目地址 做题 尝试简 ...

  8. SpringCloud实战 | 第三篇:SpringCloud整合Nacos实现配置中心

    前言 随着eureka的停止更新,如果同时实现注册中心和配置中心需要SpringCloud Eureka和SpringCloud Config两个组件;配置修改刷新时需要SpringCloud Bus ...

  9. MySQL行构造器

    子查询返回多列的办法 主要用途,项目中初版使用子查询返回一列用来限制主表,项目新版本中,表关联建改为多列时建议使用

  10. NX二次开发-NX访问MySQL数据库(增删改查)

    版本:NX11+VS2013+MySQL5.6(x64)+SQLyog 1.新建一个NX项目(多字节) 2.设置VC++目录(调用MySQL的头文件,dll和lib库文件) 3.设置番茄助手 然后重启 ...