თამაშის მისამართი GitHub-ზე: https://github.com/pastaread/TanksBattle
დამატებულია
1. GameScene.cpp მეორე სცენის კლასი, cpp და h ფაილი.
GameScene.h
2. GameConstants.h თამაშის მუდმივები.
სათითაოდ თითოეული ფაილის აღწერა
GameScene.h:
public: // ღია მეთოდები
static cocos2d::Scene* createScene(); // მეთოდი სცენის შექმნა
virtual bool init(); // მეთოდი რომელიც
GameScene აღწერისას გაეშვება
void InitDefaults(); // ცვლადებისთვის დეფოლტ მნიშვნელობების მინიჭების მეთოდიvoid PauseGame(Ref* pSender); // დაპაუზების მეთოდი
void ResumeGame(Ref* pSender); // თამაშის გაგრძელების მეთოდი
void RestartGame(Ref* pSender); // თამაშის თავიდან გაშვების მეთოდი
void MainMenu(Ref* pSender); // მენიუში დაბრუნების მეთოდი
CREATE_FUNC(GameScene); // init მეთოდის ავტომატურად გამოძახება
private: // დახურული ცვლადები
Size _VisibleSize; // ეკრანის ზომა
Vec2 _Origin; // ეკრანის დასაწყისი წერტილი
bool _GameIsPaused; // თამაში მიმდინარეობს თუ შეჩერებულია
Menu *_PauseMenu; // მენიუ
GameScene.cpp:
GameScene::init() მეთოდში:
auto pauseItem = MenuItemImage::create(“buttonPause.png”, “buttonPause.png”, CC_CALLBACK_1(GameScene::PauseGame, this));
pauseItem->setPosition(Vec2(_Origin.x + _VisibleSize.width – pauseItem->getContentSize().width/2 , _Origin.y + pauseItem->getContentSize().height/2));
auto menu = Menu::create(pauseItem, NULL);
menu->setPosition(Vec2::ZERO);
this->addChild(menu, 1);
პაუზის ღილაკი, დაჭერისას ეშვება შემდეგი მეთოდი GameScene::PauseGame
GameScene::InitDefaults() მეთოდში
_GameIsPaused = false; // სცენის გაშვებისას თამაში დაპაუზებული არ არის
GameScene::PauseGame(Ref* pSender) მეთოდში
if (_GameIsPaused == true) return; // თუ თამაში უკვე დაპაუზებულია, ხელმეორედ მენიუ არ გაიხსნას
_GameIsPaused = true;auto bResume = MenuItemImage::create(“buttonResume.png”, “buttonResume.png”, CC_CALLBACK_1(GameScene::ResumeGame, this));
bResume->setScale(0.32f);auto bMenu = MenuItemImage::create(“buttonMainMenu.png”, “buttonMainMenu.png”, CC_CALLBACK_1(GameScene::MainMenu, this));
bMenu->setScale(0.32f);auto bRestart = MenuItemImage::create(“buttonRestart.png”, “buttonRestart.png”, CC_CALLBACK_1(GameScene::RestartGame, this));
bRestart->setScale(0.32f);_PauseMenu = Menu::create(bResume, bMenu, bRestart, NULL); _PauseMenu->alignItemsHorizontallyWithPadding(_VisibleSize.width / 10.0f); _PauseMenu->setPosition(_VisibleSize.width * 0.5f, _VisibleSize.height * 0.5f); this->addChild(_PauseMenu, Z_ORDER_MENU);
// პაუზის მენიუს აგება სამი ღილაკით
GameScene::ResumeGame(Ref* pSender) მეთოდში
_GameIsPaused = false; // თამაშის გაგრძელება _PauseMenu->removeFromParentAndCleanup(true); // მენიუს წაშლა
GameScene::RestartGame(Ref* pSender) მეთოდში
this->removeAllChildrenWithCleanup(true);
Director::getInstance()->popScene();
auto scene = GameScene::createScene();
Director::getInstance()->pushScene(scene);
მენიუს წაშლა, GameScene-ის წაშლა და თავიდან გამოძახება
GameScene::MainMenu(Ref* pSender) მეთოდში
Director::getInstance()->popScene(); // სცენის წაშლა
GameConstants.h:
#define Z_ORDER_MENU 1001 // კოდში ნებისმიერ ადგილას სადაც არის Z_ORDER_MENU ნიშნავს 1001-ს
HelloWorldScene.cpp:
// New begin
#include “GameScene.h” // თამაშის სცენის h ფაილის დაინქლუდება, ქვევით გამოყენების მიზნით
// New end// New begin
// Button: start game
auto startItem = MenuItemImage::create(“buttonGamePlay.png”, “buttonGamePlay.png”, CC_CALLBACK_1(HelloWorld::startGame, this));
startItem->setPosition(Vec2(visibleSize.width * 0.5f, visibleSize.height * 0.3f));
auto menuStart = Menu::create(startItem, NULL);
menuStart->setPosition(Vec2::ZERO);
this->addChild(menuStart, 1);
// New end // ღილაკი თამაშის სცენის გასაშვებად// New begin
void HelloWorld::startGame(cocos2d::Ref* pSender)
{
auto scene = GameScene::createScene();
Director::getInstance()->pushScene(scene);
}
// New end // თამაშის სცენის აღწერა და გაშვება