初学cocos2d-x,感受到其强大的功能,以及吸引人的魅力。遂尝试做一个小游戏,学习一下cocos2d-x。
开发环境为win7 64位旗舰版,VS2012 ,cocos2d-x 2.2.2 ,C++。
在此省略配置环境步骤,网上教程数不胜数 ,贴一个教程http://blog.csdn.net/sttyytw/article/details/17005263
游戏规则:始终点最新产生的新元素,直到点错,则游戏结束。屏幕满了的话,,好吧,算你厉害。
应用到的cocos2d-x功能实在是九牛一毛,慢慢来吧。在此贴出主要游戏类,菜单类。
菜单类:
#ifndef __MAINMENU_SCENE_H__
#define __MAINMENU_SCENE_H__
#include "cocos2d.h"
USING_NS_CC;
class MainMenuScene : public cocos2d::CCScene
{
public:
MainMenuScene();
virtual void onEnter();
virtual void onExit();
void menuCallback(CCObject* pSender);
void closeMenuCallback(CCObject* pSender);
CREATE_FUNC(MainMenuScene);
};
class OptionsScene : public cocos2d::CCScene
{
public:
OptionsScene();
//virtual void onEnter();
//virtual void onExit();
void soundCallback(CCObject* pSender);
void levelCallback(CCObject* pSender);
void backMenuCallback(CCObject* pSender);
CREATE_FUNC(OptionsScene);
};
class IntervalScene : public cocos2d::CCScene
{
public:
IntervalScene();
virtual bool init();
virtual void onEnter();
virtual void onExit();
void timerCallback(float dt);
CREATE_FUNC(IntervalScene);
};
//class MainMenuLayer : public cocos2d::CCLayer
//{
//
//public:
// virtual bool init();
//
// void menuCallback(CCObject* pSender);
// void closeMenuCallback(CCObject* pSender);
//
// CREATE_FUNC(MainMenuLayer);
//};
#endif // __MAINMENU_SCENE_H__
游戏类:
#ifndef __MEMORYGAME_H__
#define __MEMORYGAME_H__
#include "cocos2d.h"
USING_NS_CC;
#define MAX_RADIUS 80
#define MIN_RADIUS 45
enum GameState
{
right,
HighScore,
GameOver
};
typedef struct{
const char* str;//图片名称
float duraTime;
int frame;
}AnimationPNG;
/**
* 游戏场景-显示背景-挂载主游戏层
*/
class MemoryGameScene : public CCScene
{
public:
MemoryGameScene();
virtual bool init();
virtual void onEnter();
virtual void onExit();
CREATE_FUNC(MemoryGameScene);
public:
//static MemoryGameScene* sharedMemryGameScene();//控制唯一指针
};
/**
* 主游戏层-规则-显示-元素挂载
*/
class MemoryGameMainLayer : public CCLayer
{
public:
MemoryGameMainLayer();
virtual bool init();
virtual void onEnter();
virtual void onExit();
virtual bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent);
virtual void registerWithTouchDispatcher(void);
void optionsCallback(CCObject* pSender);
CREATE_FUNC(MemoryGameMainLayer);
public:
void randomCircle();
//bool isTouchCircle(CCTouch *pTouch);
int isTouchCircle(CCTouch *pTouch);
bool isEnoughSpace(float x,float y);
float maxRadiusFit(float radius);
void timerCallback(float dt);
//static MemoryGameMainLayer* sharedMemryGameMainLayer();//控制唯一指针
};
/**
* 触摸精灵-父类-自定义
*/
class TouchableSprite: public CCSprite
{
public:
static TouchableSprite* create(const char *pszFileName);
virtual bool initWithFile(const char *file);
CCRect rect();
bool containsTouchLocation(CCTouch *touch);
};
/**
* 记忆项精灵-继承-触摸精灵
*/
class MemoryItemSprite: public TouchableSprite
{
public:
int m_Index;
public:
void changeMemoryItemSprite();
public:
void playAnimation();
static MemoryItemSprite* create();
static MemoryItemSprite* create(int index);
virtual bool initWithFile(const char *file , int index);
};
#endif // !__MEMORYGAME_H__