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: ...
随机推荐
- 利用HttpOnly来防御xss攻击
xss的概念就不用多说了,它的危害是极大的,这就意味着一旦你的站点出现xss漏洞,就能够运行随意的js代码,最可怕的是攻击者利用js获取cookie或者session劫持,假设这里面包括了大量敏感信息 ...
- 当用户登录,经常会有实时的下拉框,例如,输入邮箱,将会@qq.com,@163.com,@sohu.com
如图所示, 码,如以下:<input id="user_sn" class="loginInput" name="user_sn" t ...
- BZOJ 2007 NOI2010 海拔高度 最小减产计划
标题效果:YT城市是一个精心规划的城市.这个城市是东西向和南北向干道成n×n地区性.简单.可以YT作为一个城市广场,每个区域也可被视为一个正方形.因此,.YT市中含有(n+1)×(n+1)交叉口和2n ...
- 【Linux探索之旅】第二部分第二课:命令行,世界尽在掌握
内容简介 1.第二部分第二课:命令行,世界尽在掌握 2.第二部分第三课预告:文件和目录,组织不会亏待你 命令行,世界尽在掌握 今天的标题是不是有点霸气侧漏呢? 读者:“小编,你为什么每次都要起这么非主 ...
- 源代码版本控制工具TortoiseSVN,AnkhSVN最新版本下载地址
TortoiseSVN http://tortoisesvn.net/downloads.html 页面下部有中文语言补丁 AnkhSVN https://ankhsvn.open.collab.ne ...
- TCP/IP 网络精讲:开宗明义及第一课
内容简介 1.课程大纲 2.第一部分第一课:互联网历史 3.第一部分第二课预告:互联网的创立,OSI七层模型 课程大纲 我们将带大家一起来学习很多网络方面的技能,向大家介绍TCP/IP的基础知识点.你 ...
- 花生壳宣布网站的网址直接绑定到详细的项目——jboss版本
花生壳公布,首先要有域名.然后激活域名,详细的公布就不说了,网上有非常多资料,这里是在jboss下直接将网址与详细的项目相应.做法有点不地道 假设跟图上一样配置的话.訪问网址相当于訪问的是http:/ ...
- 【IPC第二个进程间通信】管道Pipe
IPC进程间通信+管道Pipe IPC(Inter-Process Communication,进程间通信). 管道用于进程间共享数据,事实上质是共享内存 ...
- atcoder它A Mountaineer
Time limit : 2sec / Stack limit : 256MB / Memory limit : 256MB Problem Dave is a mountaineer. He is ...
- Visual Studio Team Services使用教程--Readers tfs组成员添加