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: ...
随机推荐
- COJ 1102 - You Can Say 11 题解
本题就是给出一个无穷大数,算其能否被11除尽 Description Your job is, given a positive number N, determine if it is a mult ...
- VS2013验证控件出现 WebForms UnobtrusiveValidationMode 必须“jquery”ScriptResour......错误的解决方案
如下面的错误: 解决方式例如以下: 方法一: 在webconfig中找到 <appSettings> <addkey="aspnet:UseTaskFriendlySync ...
- SQL中IN,NOT IN,EXISTS,NOT EXISTS的用法和差别
SQL中IN,NOT IN,EXISTS,NOT EXISTS的用法和差别: IN:确定给定的值是否与子查询或列表中的值相匹配. IN 关键字使您得以选择与列表中的任意一个值匹配的行. 当要获得居住在 ...
- redis client protocol 分解
在官方网站http://redis.io/topics/protocol我们必须redis通信协议做说明. 根据以下某些原因.我想解决redis client protocol: 1.足够了解通信协议 ...
- ZOJ Problem Set - 2563 Long Dominoes 【如压力dp】
称号:ZOJ Problem Set - 2563 Long Dominoes 题意:给出1*3的小矩形.求覆盖m*n的矩阵的最多的不同的方法数? 分析:有一道题目是1 * 2的.比較火.链接:这里 ...
- [LeetCode66]Plus One
题目: Given a non-negative number represented as an array of digits, plus one to the number. The digit ...
- 利用Eclipse中的Maven构建Web项目(三)
利用Eclipse中的Maven构建Web项目 1.将Maven Project转换成动态Web项目,鼠标右键项目,输入"Project Facets" 2.依据Dynamic W ...
- STL内存分配
STL内存创建 Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu 转载请标明来源 1. Stl内存创建基类模板__malloc_alloc_tem ...
- 矢量编程——随着MNIST案例
矢量编程使用的所有明确的矢量运算,而不是for周期. 上一节所用的是512*512*10的数据集非常小.我们取的patch非常小(8*8),学来的特征非常少(25).而我又凝视掉了梯度校验(偷懒),所 ...
- MySQL InnoDB数据库备份与还原
备份 进入cm黑窗口 输入下列命令 mysqldump -u 用户名 -p 数据库名称> c:\11.sql 回车执行 恢复 进入cm黑窗口 输入下列命令 mysql>use dbtest ...