1.cocos2dx存储卡的游戏代码、而游戏移植到“华为荣耀”电话、问题的总结移植
1记忆卡片游戏代码
CardItem.h |
#pragmaonce #ifndef__CardItem_H__ #define__CardItem_H__ #include"cocos2d.h" USING_NS_CC; classCardItem { public: staticCardItem boolinit(intidx); CCLabelTTF CCSprite CC_SYNTHESIZE(int,_index,Idx); voidshowWhite(); voidshowText(); }; #endif |
CardItem.cpp |
#include"CardItem.h" CardItem *CardItem::create(intidx) { CardItem if { pRet->autorelease(); } else { deletepRet; pRet } returnpRet; } boolCardItem::init(intidx) { CCSprite::init(); setIdx(idx); setContentSize(CCSizeMake(80,80)); setAnchorPoint(ccp(0,0)); //设置字体 CCString ttf ttf->setPosition(ccp(40, this->addChild(ttf); bg bg->setTextureRect(CCRectMake(0,0,77,77)); bg->setAnchorPoint(ccp(0,0)); bg->setColor(ccc3(255,255,255)); this->addChild(bg); returntrue; } voidCardItem::showWhite() { ttf->setVisible(false); bg->setVisible(true); } voidCardItem::showText() { ttf->setVisible(true); bg->setVisible(false); } |
LayerGame.h |
#ifndef__LayerGame_H__ #define__LayerGame_H__ #include"cocos2d.h" #include"vector" usingnamespacestd; USING_NS_CC; classLayerGame { public: staticCCScene staticLayerGame boolinit(intdegree); voidgetAllPoint(); voidgetAvailablePoint(); voidaddCard(); voidshowCardAllWhite(); CCPointArray CCArray *allCards; vector<int>vec; CC_SYNTHESIZE(int,_degere, CC_SYNTHESIZE(int,_clickStart, virtualboolccTouchBegan(CCTouch }; #endif |
LayerGame.cpp |
#include"LayerGame.h" #include"CardItem.h" #include"stdlib.h" #include"time.h" #include"LayerOver.h" #include"cocos-ext.h" //支持声音的 #include"SimpleAudioEngine.h" usingnamespace CocosDenshion; USING_NS_CC_EXT; //放开扩展库 CCScene *LayerGame::scene(intdegree) { CCScene LayerGame scene->addChild(layer); returnscene; } LayerGame *LayerGame::create(intdegree) { LayerGame if { pRet->autorelease(); } else { deletepRet; pRet } returnpRet; } boolLayerGame::init(intdegree) { CCLayer::init(); setDegree(degree); setClickStart(0); getAllPoint(); getAvailablePoint(); addCard(); setTouchEnabled(true); setTouchMode(kCCTouchesOneByOne); SimpleAudioEngine::sharedEngine()->preloadEffect("boom.mp3"); returntrue; } voidLayerGame::getAllPoint() { allPoints allPoints->retain(); for { for { allPoints->addControlPoint(ccp(80 } } } //获得要作为游戏点的point voidLayerGame::getAvailablePoint() { srand(time(NULL)); while { intidx vector<int>::iteratoritr for { if break; } if { vec.push_back(idx); if break; } } } voidLayerGame::addCard() { allCards allCards->retain(); for { CardItem item->setPosition((CCPoint)allPoints->getControlPointAtIndex(vec[i])); addChild(item); item->showText(); allCards->addObject(item); } } voidLayerGame::showCardAllWhite() { CCObject CCARRAY_FOREACH(allCards,obj) { CardItem spr->showWhite(); } } boolLayerGame::ccTouchBegan(CCTouch { for { //推断是否点中 if containsPoint(pTouch->getLocation())) { showCardAllWhite(); SimpleAudioEngine::sharedEngine()->playEffect("boom.mp3"); if { ((CardItem*)allCards->objectAtIndex(i))->removeFromParentAndCleanup(true); allCards->removeObjectAtIndex(i); if { CCScene CCDirector::sharedDirector()->replaceScene(scene); CCLog("you } } else { CCScene CCDirector::sharedDirector()->replaceScene(scene); CCLog("you } _clickStart++; } } returntrue; } |
LayerOver.h |
#ifndef__LayerOver_H__ #define__LayerOver_H__ #include"cocos2d.h" USING_NS_CC; classLayerOver { public: staticCCScene staticLayerOver *create(boolres); boolinit(boolres); voidmenuCallBack(CCObject }; #endif |
LayerOver.cpp |
#include"LayerOver.h" #include"LayerStart.h" CCScene *LayerOver::scene(boolres) { CCScene LayerOver scene->addChild(layer); returnscene; } LayerOver *LayerOver::create(boolres) { LayerOver if { pRet->autorelease(); } else { deletepRet; pRet } returnpRet; } boolLayerOver::init(boolres) { CCLayer::init(); CCMenu CCMenuItem if { CCMenuItem menu->addChild(winItem); menu->addChild(back); } else { CCMenuItem menu->addChild(failItem); menu->addChild(back); } addChild(menu); menu->alignItemsVerticallyWithPadding(30); returntrue; } voidLayerOver::menuCallBack(CCObject { CCScene CCDirector::sharedDirector()->replaceScene(scene); } |
LayerStart.h |
#ifndef__LayerStart_H__ #define__LayerStart_H__ #include"cocos2d.h" USING_NS_CC; classLayerStart { public: CREATE_FUNC(LayerStart); staticCCScene boolinit(); voideasy(CCObject voidhard(CCObject voidveryHard(CCObject voidquit(CCObject enumDEGREE { EASY }; }; #endif |
LayerStart.cpp |
#include"LayerStart.h" #include"LayerGame.h" CCScene *LayerStart::scene() { CCScene LayerStart scene->addChild(layer); returnscene; } boolLayerStart::init() { CCLayer::init(); CCMenuItem menu_selector(LayerStart::easy)); CCMenuItem menu_selector(LayerStart::hard)); CCMenuItem this,menu_selector(LayerStart::veryHard)); CCMenuItem menu_selector(LayerStart::quit)); CCMenu menu->alignItemsVerticallyWithPadding(30); addChild(menu); returntrue; } voidLayerStart::easy(CCObject { CCScene CCDirector::sharedDirector()->replaceScene(scene); } voidLayerStart::hard(CCObject { CCScene CCDirector::sharedDirector()->replaceScene(scene); } voidLayerStart::veryHard(CCObject { CCScene CCDirector::sharedDirector()->replaceScene(scene); } voidLayerStart::quit(CCObject exit(1); } |
执行结果:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdG90b3R1enVvcXVhbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center"> 点击进入Easy后的效果: 失败后的效果: |
2记忆卡片手机移植
环境准备:所需软件: 32位:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdG90b3R1enVvcXVhbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center"> 64位 |
软件安装(注意不要有中文文件夹): 1. 安装JDK jdk-7u25-windows-i586.exe 2. 安装安卓SDK
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdG90b3R1enVvcXVhbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center"> 3. 安装安装NDK 4. 打开(F:\TransPlant\adt-bundle-windows-x86-20140321\eclipse\eclipse.exe): 效果图例如以下: 将game游戏项目导入,导入录入路径:E:\Installed\cocos2d-x-2.2.3\projects\game\proj.android 点击:File -- >Import 执行结果: |
5安装cygin。从官网(http://cygwin.com/install.html)上下载cygwin. 下载后软件: , A双击上面的64位或者32位的软件进行安装。 这里选择64位进行安装。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdG90b3R1enVvcXVhbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center"> 配置cygwin. A改动:cygwin64\etc中的fstab,将最后一行凝视掉,而换成例如以下的配置: none /cygdrive cygdrive binary,noacl,posix=0,user 0 0
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdG90b3R1enVvcXVhbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center"> 左面cygwin的执行效果图例如以下: |
6配置环境变量 将Cygwin载入系统路径到Eclipse本地路径中。 解决bash找不到的问题。打开Eclipse->windows-preference看到例如以下配置:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdG90b3R1enVvcXVhbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center"> |
7 改动Android的makefile |
8配置项目中的build_native.sh文件,加上: chmod 777 "$APP_ANDROID_ROOT"/assets -R |
9导入cocos2dx的另外一个Android应用,仅仅有这样才干让本项目执行起来 载入路径是:E:\Installed\cocos2d-x-2.2.3\cocos2dx\platform\android\java 点击确定。 导入后的截图: |
8 将游戏移植到手机。将手机USB线接上电脑(注意,不要使用Android模拟器进行执行,cocos2dx在Android模拟器上执行由问题)。 右击game项目以Android项目进行run(这里以华为荣耀作为測试机)。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdG90b3R1enVvcXVhbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center"> 执行效果: 从以下game即使移植到华为荣耀手机上的cocos2d-x记忆卡片游戏 打开bin。拷贝bak文件就可以用: |
7 横屏、竖屏设置 android的AndroidManifest.xml文件里: screenOrientation="landscape"为横屏, screenOrientation="portrait"为竖屏 |
移植错误总结:
[2014-10-23 17:11:41 - myhello] Unable to resolve target 'android-8' [2014-10-23 17:24:58 - libcocos2dx] Unable to resolve target 'android-8' [2014-10-23 17:33:15 - SDK Manager] Created AVD 'AVD19' based on Android 4.4.2, ARM (armeabi-v7a) processor, [2014-10-23 17:33:15 - SDK Manager] with the following hardware config: [2014-10-23 17:33:15 - SDK Manager] disk.dataPartition.size=200M [2014-10-23 17:33:15 - SDK Manager] hw.accelerometer=yes [2014-10-23 17:33:15 - SDK Manager] hw.audioInput=yes [2014-10-23 17:33:15 - SDK Manager] hw.battery=yes [2014-10-23 17:33:15 - SDK Manager] hw.camera.back=none [2014-10-23 17:33:15 - SDK Manager] hw.dPad=no [2014-10-23 17:33:15 - SDK Manager] hw.device.hash2=MD5:b1157894a81a9869f18a16ee4591a709 [2014-10-23 17:33:15 - SDK Manager] hw.device.manufacturer=Generic [2014-10-23 17:33:15 - SDK Manager] hw.device.name=3.2in HVGA slider (ADP1) [2014-10-23 17:33:15 - SDK Manager] hw.gps=yes [2014-10-23 17:33:15 - SDK Manager] hw.keyboard=yes [2014-10-23 17:33:15 - SDK Manager] hw.keyboard.lid=yes [2014-10-23 17:33:15 - SDK Manager] hw.lcd.density=160 [2014-10-23 17:33:15 - SDK Manager] hw.mainKeys=yes [2014-10-23 17:33:15 - SDK Manager] hw.ramSize=512 [2014-10-23 17:33:15 - SDK Manager] hw.sdCard=yes [2014-10-23 17:33:15 - SDK Manager] hw.sensors.orientation=yes [2014-10-23 17:33:15 - SDK Manager] hw.sensors.proximity=yes [2014-10-23 17:33:15 - SDK Manager] hw.trackBall=no [2014-10-23 17:33:15 - SDK Manager] skin.dynamic=no [2014-10-23 17:33:15 - SDK Manager] vm.heapSize=16 [2014-10-23 17:35:56 - myhello] (skipping file '.gitignore' due to ANDROID_AAPT_IGNORE pattern '.*') [2014-10-23 17:35:56 - myhello] Unable to add 'F:\cocos2d-x-2.2.3\cocos2d-x-2.2.3\projects\myhello\proj.android\assets\CloseNormal.png': Zip add failed [2014-10-23 17:35:56 - myhello] ERROR: unable to process assets while packaging 'F:\cocos2d-x-2.2.3\cocos2d-x-2.2.3\projects\myhello\proj.android\bin\resources.ap_' [2014-10-23 17:35:56 - myhello] ERROR: packaging of 'F:\cocos2d-x-2.2.3\cocos2d-x-2.2.3\projects\myhello\proj.android\bin\resources.ap_' failed |
上面的错误原因是: 要改动:cygwin64\etc中的fstab,将最后一行凝视掉。而换成例如以下的配置: none /cygdrive cygdrive binary,noacl,posix=0,user 0 0 |
其他问题:略 |
版权声明:本文博客原创文章。博客,未经同意,不得转载。
1.cocos2dx存储卡的游戏代码、而游戏移植到“华为荣耀”电话、问题的总结移植的更多相关文章
- java俄罗斯方块游戏代码
java俄罗斯方块游戏代码: package com; import java.awt.Color; import java.awt.Graphics; import java.awt.event.K ...
- 【深入Cocos2d-x】使用MVC架构搭建游戏Four
喜欢Four这个项目,就赶快在GitHub上Star这个项目吧! 喜欢我的文章,来微博关注我吧:王选易在学C艹 点我下载 项目起源 项目Logo: 下面是该游戏的项目地址,各位想参考源代码的同学可以到 ...
- python学习笔记05:贪吃蛇游戏代码
贪吃蛇游戏截图: 首先安装pygame,可以使用pip安装pygame: pip install pygame 运行以下代码即可: #!/usr/bin/env python import pygam ...
- Cocos Creator实现左右跳游戏,提供完整游戏代码工程
1. 玩法说明 游戏开始后,点击屏幕左右两侧,机器人朝左上方或右上方跳一步,如果下一步有石块,成功得1分,否则游戏结束. 2. 模块介绍 游戏场景分为2个:主页场景(home).游戏场景(game) ...
- python 实现 跳一跳游戏 代码解析
这个代码实现的是 手动点击起点 和 终点 ,程序自动判断距离.触屏时间 完成跳跃 原理(摘自项目说明页面):1. 将手机点击到“跳一跳”小程序界面:2. 用Adb 工具获取当前手机截图,并用a ...
- 在 GitHub 复活 80 年代的游戏代码,它们出自第一本售出百万册的计算机书籍
今儿我在 GitHub 看到了一个很眼熟的名字和头像,但是第一时间没想起来他是谁.算了先看看是个什么神仙开源项目,竟然能登上今天的 GitHub 趋势榜首. 该项目是把<BASIC Comput ...
- Unity中制作游戏的快照游戏支持玩家拍快照
Unity中制作游戏的快照游戏支持玩家拍快照 有些游戏支持玩家“拍快照”,也就是将游戏的精彩瞬间以图片的形式记录下来的功能.这个功能比较有趣,而且以后的用途也会很广,为此本节打算介绍:截取矩形区域内游 ...
- Android实训案例(八)——单机五子棋游戏,自定义棋盘,线条,棋子,游戏逻辑,游戏状态存储,再来一局
Android实训案例(八)--单机五子棋游戏,自定义棋盘,线条,棋子,游戏逻辑,游戏状态存储,再来一局 阿法狗让围棋突然就被热议了,鸿洋大神也顺势出了篇五子棋单机游戏的视频,我看到了就像膜拜膜拜,就 ...
- 微信小程序开发的游戏《拼图游戏》
微信小程序开发的游戏<拼图游戏> 代码直接考进去就能用 pintu.js // pintu.js Page({ /** * 页面的初始数据 */ data: { }, initGame: ...
随机推荐
- uva10341 - solve it (二分查找)
题目:uva10341-solve it 题目大意:求解给定的方程式解题思路:由于这个方程式在给定的x的范围内是单调递减的.所以能够用二分查找来尝试x的值.这里的 x是要求保留4小数,所以当区间缩小到 ...
- 做一个自动修改本机IP和mac的bat文件
原文:做一个自动修改本机IP和mac的bat文件 1.ip bat修改理论探讨 前两天我突然萌生了一个念头:能不能做一个小程序来实现自动配置或修改IP和mac,达到一键搞定的目的,这样尤其适合那些带着 ...
- Oracle 六闪回技术,flashback
Flashback 技术基于Undo segment基于内容的, 因此,限制UNDO_RETENTON参数. 要使用flashback 特征,您必须启用自己主动撤销管理表空间. 在Oracle 11g ...
- 【iOS开发-图层】自己定义图层的两种方式
想要自己定义图层,仅仅须要构建一个类继承CALayer方法 假设让自己定义图层初始化上面就有画好的图形.有两种办法 重写drawInContext方法 自己定义的图层以下的方法.然后必须自己定义的图层 ...
- Block学习一门:基本使用,使用block包NSURLRequest异步请求
首先,看一下下面的代码: void (^myFirstBlock)(int theOne,int theTwo) = ^(int theOne,int theTwo){ NSLog(@"== ...
- Action、Category、Data、Extras知识具体解释
开头 Intent作为联系各Activity之间的纽带,其作用并不仅仅仅仅限于简单的数据传递.通过其自带的属性,事实上能够方便的完毕非常多较为复杂的操作.比如直接调用拨号功能.直接自己主动调用合适的程 ...
- 基于最简单的FFmpeg的AVDevice抽样(屏幕录制)
=====================================================基于最简单的FFmpeg的AVDevice样品文章: 最简单的基于FFmpeg的AVDevic ...
- android Intent.createChooser 应用选择
在微博案例: 1.public void onClickShare(View view) { 2. 3. Intent intent=new Intent(Intent.ACTION_SEND); 4 ...
- 解决android模块化升级方法
有关本机android升级版本必须是全apk更新安装,我们无法实现的一些模块化升级的解决思路: 本地人+web混合动力APP~ 查询详情,我们必须实现模块化升级,无论使用方法,我这样做.首页写在每个功 ...
- Repository、IUnitOfWork和IDbContext
DDD 领域驱动设计-谈谈Repository.IUnitOfWork和IDbContext的实践 上一篇:<DDD 领域驱动设计-谈谈 Repository.IUnitOfWork 和 IDb ...