GameScene.h
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | #ifndef __GAME_SCENE_H__ #define __GAME_SCENE_H__ #include "cocos2d.h" USING_NS_CC; #define TAG_LABEL_CARD 0 //맞춘카드,맞추어야 할 카드의 수 #define TAG_LABEL_LIFE 1 //남은 생명의 수 #define TAG_LABEL_READY 2 //게임 시작 시 출력되는 Ready라벨의 태그값 #define TAG_LABEL_START 3 //게임 시작 시 출력되는 Start라벨의 태그값 #define TAG_SPRITE_O 4 //카드를 선택 후 출력되는 스프라이트의 태그값 #define TAG_SPRITE_X 5 //카드를 선택 후 출력되는 스프라이트의 태그값 #define TAG_LABEL_GAMEOVER 6 //게임 오버가 되었을때 출력되는 라벨의 태그값 #define TAG_LABEL_GAMECLEAR 7 //게임 클리어가 되었을때 출력되는 라벨의 태그값 #define TAG_MENU 8 //게임이 끝난 후에 출력되는 메뉴의 태그값 #define TAG_SPRITE_CARD 10 class GameScene : public Layer { public: static Scene* createScene(); virtual bool init(); CREATE_FUNC(GameScene); Size winSize; int cardOK, life; int card[4]; int countCard; void initGameData(); void initBG(); void initTopMenuLabel(); void setLabelCard(); void setLabelLife(); void initCard(); }; #endif | cs |
GameScene.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 | #include "GameScene.h" Scene* GameScene::createScene() { auto scene = Scene::create(); auto layer = GameScene::create(); scene->addChild(layer); return scene; } bool GameScene::init() { if (!Layer::init()) { return false; } initGameData(); initBG(); initTopMenuLabel(); initCard(); return true; } void GameScene::initGameData() { winSize = Director::getInstance()->getWinSize(); cardOK = 0; life = 3; srand(time(NULL)); for (int i = 0; i<4; i++) { card[i] = rand() % 6; } countCard = 0; } void GameScene::initBG() //배경화면설정 { auto spr = CCSprite::create("game/game-bg.png"); spr->setPosition(Point(winSize.width / 2, winSize.height / 2)); this->addChild(spr); } void GameScene::initTopMenuLabel() //상단 라벨설정 { auto label_0 = Label::createWithSystemFont("", "", 20); label_0->setAnchorPoint(Point(0, 1)); label_0->setPosition(Point(10, winSize.height - 10)); label_0->setTag(TAG_LABEL_CARD); label_0->setColor(Color3B::BLACK); this->addChild(label_0); auto label_1 = Label::createWithSystemFont("", "", 20); label_1->setAnchorPoint(Point(1, 1)); label_1->setPosition(Point(winSize.width - 10, winSize.height - 10)); label_1->setTag(TAG_LABEL_LIFE); label_1->setColor(Color3B::BLACK); this->addChild(label_1); setLabelCard(); setLabelLife(); } void GameScene::setLabelCard() { auto label = (Label*)this->getChildByTag(TAG_LABEL_CARD); label->setString(StringUtils::format("CARD : %d/4", cardOK)); } void GameScene::setLabelLife() { auto label = (Label*)this->getChildByTag(TAG_LABEL_LIFE); label->setString(StringUtils::format("LIFE : %d", life)); } void GameScene::initCard() //6장의카드위치 설정 { for (int i = 0; i<6; i++) { auto spr = Sprite::create("game/card-back.png"); spr->setPosition(Point(winSize.width / 2 - 60 + 60 * 2 * (i % 2), winSize.height / 2 + 120 - 120 * (i / 2))); this->addChild(spr); auto sprFront = Sprite::create(String::createWithFormat("game/card_%d.png", (i + 1))->getCString()); sprFront->setPosition(Point(winSize.width / 2 - 60 + 60 * 2 * (i % 2), winSize.height / 2 + 120 - 120 * (i / 2))); sprFront->setVisible(false); //카드 앞면은 보여주지 않으므로 false sprFront->setTag(TAG_SPRITE_CARD + i); this->addChild(sprFront); } } | cs |
실행 결과