1记忆卡片游戏代码

CardItem.h

#pragmaonce

#ifndef__CardItem_H__

#define__CardItem_H__

#include"cocos2d.h"

USING_NS_CC;

classCardItem
:publicCCSprite

{

public:

staticCardItem
*create(intidx);

boolinit(intidx);

CCLabelTTF
*ttf;

CCSprite
*bg;

CC_SYNTHESIZE(int,_index,Idx);

voidshowWhite();

voidshowText();

};

#endif

CardItem.cpp

#include"CardItem.h"

CardItem *CardItem::create(intidx)

{

CardItem
*pRet =newCardItem;

if
(pRet &&pRet->init(idx))

{

pRet->autorelease();

}

else

{

deletepRet;

pRet
=NULL;

}

returnpRet;

}

boolCardItem::init(intidx)

{

CCSprite::init();

setIdx(idx);

setContentSize(CCSizeMake(80,80));

setAnchorPoint(ccp(0,0));

//设置字体

CCString
*str =CCString::createWithFormat("%d",idx);

ttf
=CCLabelTTF::create(str->getCString(),"Courier
New", 50);

ttf->setPosition(ccp(40,
40));

this->addChild(ttf);

bg
=CCSprite::create();

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
:publicCCLayer

{

public:

staticCCScene
*scene(intdegree);

staticLayerGame
*create(intdegree);

boolinit(intdegree);

voidgetAllPoint();

voidgetAvailablePoint();

voidaddCard();

voidshowCardAllWhite();

CCPointArray
*allPoints;

CCArray     *allCards;

vector<int>vec;

CC_SYNTHESIZE(int,_degere,
Degree);

CC_SYNTHESIZE(int,_clickStart,
ClickStart);

virtualboolccTouchBegan(CCTouch
*pTouch,CCEvent
*pEvent);

};

#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
*scene =CCScene::create();

LayerGame
*layer =LayerGame::create(degree);

scene->addChild(layer);

returnscene;

}

LayerGame *LayerGame::create(intdegree)

{

LayerGame
*pRet =newLayerGame;

if
(pRet &&pRet->init(degree))

{

pRet->autorelease();

}

else

{

deletepRet;

pRet
=NULL;

}

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
=CCPointArray::create(60);

allPoints->retain();

for
(inti
= 0;i < 10;i++)

{

for
(intj
= 0;j < 6;j++)

{

allPoints->addControlPoint(ccp(80
* i,80 *j));

}

}

}

//获得要作为游戏点的point

voidLayerGame::getAvailablePoint()

{

srand(time(NULL));

while
(1)

{

intidx
=rand() % 60;

vector<int>::iteratoritr
=vec.begin();

for
(;itr !=vec.end();
++itr)

{

if
(*itr ==idx)

break;

}

if
(itr ==vec.end())

{

vec.push_back(idx);

if
(vec.size()
== getDegree())

break;

}

}

}

voidLayerGame::addCard()

{

allCards
=CCArray::create();

allCards->retain();

for
(inti
= 0;i <getDegree();i++)

{

CardItem
*item =CardItem::create(i);

item->setPosition((CCPoint)allPoints->getControlPointAtIndex(vec[i]));

addChild(item);

item->showText();

allCards->addObject(item);

}

}

voidLayerGame::showCardAllWhite()

{

CCObject
*obj;

CCARRAY_FOREACH(allCards,obj)

{

CardItem
*spr = (CardItem
*)obj;

spr->showWhite();

}

}

boolLayerGame::ccTouchBegan(CCTouch
*pTouch,CCEvent
*pEvent)

{

for
(inti
= 0;i <allCards->count();i++)

{

//推断是否点中

if
(((CardItem*)allCards->objectAtIndex(i))->boundingBox().

containsPoint(pTouch->getLocation()))

{

showCardAllWhite();

SimpleAudioEngine::sharedEngine()->playEffect("boom.mp3");

if
(getClickStart() == ((CardItem*)allCards->objectAtIndex(i))->getIdx())

{

((CardItem*)allCards->objectAtIndex(i))->removeFromParentAndCleanup(true);

allCards->removeObjectAtIndex(i);

if
(allCards->count()
== 0)

{

CCScene
*scene =LayerOver::scene(true);

CCDirector::sharedDirector()->replaceScene(scene);

CCLog("you
win game");

}

}

else

{

CCScene
*scene =LayerOver::scene(false);

CCDirector::sharedDirector()->replaceScene(scene);

CCLog("you
lose game");

}

_clickStart++;

}

}

returntrue;

}

LayerOver.h

#ifndef__LayerOver_H__

#define__LayerOver_H__

#include"cocos2d.h"

USING_NS_CC;

classLayerOver
:publicCCLayer

{

public:

staticCCScene
*scene(boolres);

staticLayerOver *create(boolres);

boolinit(boolres);

voidmenuCallBack(CCObject
* obj);

};

#endif

LayerOver.cpp

#include"LayerOver.h"

#include"LayerStart.h"

CCScene *LayerOver::scene(boolres)

{

CCScene
*scene =CCScene::create();

LayerOver
*layer =LayerOver::create(res);

scene->addChild(layer);

returnscene;

}

LayerOver *LayerOver::create(boolres)

{

LayerOver
*pRet =newLayerOver();

if
(pRet &&pRet->init(res))

{

pRet->autorelease();

}

else

{

deletepRet;

pRet
=NULL;

}

returnpRet;

}

boolLayerOver::init(boolres)

{

CCLayer::init();

CCMenu
*menu =CCMenu::create();

CCMenuItem
*back =CCMenuItemFont::create("Back",this,menu_selector(LayerOver::menuCallBack));

if
(res ==true)

{

CCMenuItem
*winItem =CCMenuItemFont::create("You
Win");

menu->addChild(winItem);

menu->addChild(back);

}

else

{

CCMenuItem
*failItem =CCMenuItemFont::create("You
Failed");

menu->addChild(failItem);

menu->addChild(back);

}

addChild(menu);

menu->alignItemsVerticallyWithPadding(30);

returntrue;

}

voidLayerOver::menuCallBack(CCObject
*obj)

{

CCScene
*scene =LayerStart::scene();

CCDirector::sharedDirector()->replaceScene(scene);

}

LayerStart.h

#ifndef__LayerStart_H__

#define__LayerStart_H__

#include"cocos2d.h"

USING_NS_CC;

classLayerStart
:publicCCLayer

{

public:

CREATE_FUNC(LayerStart);

staticCCScene
*scene();

boolinit();

voideasy(CCObject
* obj);

voidhard(CCObject
* obj);

voidveryHard(CCObject
* obj);

voidquit(CCObject
* obj);

enumDEGREE

{

EASY
= 5,HARD = 7,VERYHARD
= 9

};

};

#endif

LayerStart.cpp

#include"LayerStart.h"

#include"LayerGame.h"

CCScene *LayerStart::scene()

{

CCScene
*scene =CCScene::create();

LayerStart
*layer =LayerStart::create();

scene->addChild(layer);

returnscene;

}

boolLayerStart::init()

{

CCLayer::init();

CCMenuItem
*easyItem =CCMenuItemFont::create("Easy",this,

menu_selector(LayerStart::easy));

CCMenuItem
*hardItem =CCMenuItemFont::create("Hard",this,

menu_selector(LayerStart::hard));

CCMenuItem
*veryHardItem =CCMenuItemFont::create("VeryHard",

this,menu_selector(LayerStart::veryHard));

CCMenuItem
*quitItem =CCMenuItemFont::create("Quit",this,

menu_selector(LayerStart::quit));

CCMenu
*menu =CCMenu::create(easyItem,hardItem,veryHardItem,quitItem,NULL);

menu->alignItemsVerticallyWithPadding(30);

addChild(menu);

returntrue;

}

voidLayerStart::easy(CCObject
* obj)

{

CCScene
*scene =LayerGame::scene(EASY);

CCDirector::sharedDirector()->replaceScene(scene);

}

voidLayerStart::hard(CCObject
* obj)

{

CCScene
*scene =LayerGame::scene(HARD);

CCDirector::sharedDirector()->replaceScene(scene);

}

voidLayerStart::veryHard(CCObject
* obj)

{

CCScene
*scene =LayerGame::scene(VERYHARD);

CCDirector::sharedDirector()->replaceScene(scene);

}

voidLayerStart::quit(CCObject
* obj) {

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存储卡的游戏代码、而游戏移植到“华为荣耀”电话、问题的总结移植的更多相关文章

  1. java俄罗斯方块游戏代码

    java俄罗斯方块游戏代码: package com; import java.awt.Color; import java.awt.Graphics; import java.awt.event.K ...

  2. 【深入Cocos2d-x】使用MVC架构搭建游戏Four

    喜欢Four这个项目,就赶快在GitHub上Star这个项目吧! 喜欢我的文章,来微博关注我吧:王选易在学C艹 点我下载 项目起源 项目Logo: 下面是该游戏的项目地址,各位想参考源代码的同学可以到 ...

  3. python学习笔记05:贪吃蛇游戏代码

    贪吃蛇游戏截图: 首先安装pygame,可以使用pip安装pygame: pip install pygame 运行以下代码即可: #!/usr/bin/env python import pygam ...

  4. Cocos Creator实现左右跳游戏,提供完整游戏代码工程

    ​1. 玩法说明 游戏开始后,点击屏幕左右两侧,机器人朝左上方或右上方跳一步,如果下一步有石块,成功得1分,否则游戏结束. 2. 模块介绍 游戏场景分为2个:主页场景(home).游戏场景(game) ...

  5. python 实现 跳一跳游戏 代码解析

    这个代码实现的是   手动点击起点 和 终点  ,程序自动判断距离.触屏时间  完成跳跃 原理(摘自项目说明页面):1. 将手机点击到“跳一跳”小程序界面:2. 用Adb 工具获取当前手机截图,并用a ...

  6. 在 GitHub 复活 80 年代的游戏代码,它们出自第一本售出百万册的计算机书籍

    今儿我在 GitHub 看到了一个很眼熟的名字和头像,但是第一时间没想起来他是谁.算了先看看是个什么神仙开源项目,竟然能登上今天的 GitHub 趋势榜首. 该项目是把<BASIC Comput ...

  7. Unity中制作游戏的快照游戏支持玩家拍快照

    Unity中制作游戏的快照游戏支持玩家拍快照 有些游戏支持玩家“拍快照”,也就是将游戏的精彩瞬间以图片的形式记录下来的功能.这个功能比较有趣,而且以后的用途也会很广,为此本节打算介绍:截取矩形区域内游 ...

  8. Android实训案例(八)——单机五子棋游戏,自定义棋盘,线条,棋子,游戏逻辑,游戏状态存储,再来一局

    Android实训案例(八)--单机五子棋游戏,自定义棋盘,线条,棋子,游戏逻辑,游戏状态存储,再来一局 阿法狗让围棋突然就被热议了,鸿洋大神也顺势出了篇五子棋单机游戏的视频,我看到了就像膜拜膜拜,就 ...

  9. 微信小程序开发的游戏《拼图游戏》

    微信小程序开发的游戏<拼图游戏> 代码直接考进去就能用 pintu.js // pintu.js Page({ /** * 页面的初始数据 */ data: { }, initGame: ...

随机推荐

  1. struts2充分国际化案例 错误解决

    在struts2中须要做国际化的有: jsp页面的国际化,action错误信息的国际化,转换错误信息的国际化.校验错误信息的国际化 在之前的样例中已经做过和国际化相关的样例了,在struts.xml中 ...

  2. 移动web:翻页场景动画

    在移动web,特别是在微信中,经常看到一种翻页动画效果,也称为场景动画. 一页一页的翻过,像在看书,每页的内容以各种"炫酷"的效果出现在你的眼里,配上一首动听的音乐,你有没有喜欢上 ...

  3. 由<a href = "#" > 引发的思考

    原文:由<a href = "#" > 引发的思考 前阵子在一个移动项目中,通过 <a href = "#" >  的方式 绑定clic ...

  4. [原创].NET 分布式架构开发实战之四 构建从理想和实现之间的桥梁(前篇)

    原文:[原创].NET 分布式架构开发实战之四 构建从理想和实现之间的桥梁(前篇) .NET 分布式架构开发实战之四 构建从理想和实现之间的桥梁(前篇) 前言:上一篇文章讲述了一些实现DAL的理论,本 ...

  5. 玩转Web之JavaScript(四)-----javaScript语法总结(四) JS中的函数

    1.function/return   function用来定义函数(位于head部分),函数包含着一些代码,这些代码只能被事件激活,或者在函数被调用时才会执行.   return 用来从函数中返回值 ...

  6. 【软件使用技巧】PL/SQL Developer实现双击table询

    二手plsql都知道,在表名默认双击[开展/关闭]. 习惯了MySql Workbench要么Sqlserver Management Studio无法适应其他管理工具. 直接在溶液: Tools - ...

  7. SharePoint 2013 创建一个搜索中心和搜索设置

    这篇文章不是太多深奥的东西,只是一个简单的搜索配置,假设你已经有了,请跳过这篇文章. 行,输入信息,大家都知道,搜索SharePoint一个主要特征.下列,我们在搜索中心创建个人资料. 1.创建Sea ...

  8. 【C++基金会 06】explictkeyword

    C++提供keywordexplicit,你应该不能阻止的转换构造隐式转换发生的同意.声明explicit的构造不能在一个隐式转换使用. 1.演示样例 我们先来看一段演示样例代码: class A { ...

  9. android详情请务必保持手机屏幕不锁屏

    今天做这个项目采用了非常有趣的东西,互联网搜索下一个轮廓,需求就是点击一个按钮来锁定屏幕让屏幕不亮. 几个测试.我们发现以下措辞如此简单, getWindow().addFlags(WindowMan ...

  10. TCP/IP、Http、Socket的差别

    网络由下往上分为 物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. 通过初步的了解,我知道IP协议相应于网络层,TCP协议相应于传输层,而HTTP协议相应于应用层, 三者从本质上来说没有可 ...