- 
        Couldn't load subscription status. 
- Fork 135
TicTacToe demo cocos2dx functionality #46
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
          
     Merged
      
      
    
  
     Merged
                    Changes from all commits
      Commits
    
    
            Show all changes
          
          
            16 commits
          
        
        Select commit
          Hold shift + click to select a range
      
      a1d7ea7
              
                Changed database testapp to run Tic-Tac-Toe
              
              
                Grant-Postma fe6b14f
              
                Changing pointers alignment back
              
              
                Grant-Postma a6e9567
              
                Class and resource files required for cocos2dx
              
              
                Grant-Postma 441998b
              
                Merge pull request #1 from Grant-Postma/cocos2dx-init
              
              
                Grant-Postma 1826d7d
              
                Cocos basic functionality for placing sprites
              
              
                Grant-Postma 9d0c311
              
                Reverting common_main TicTacToe changes
              
              
                Grant-Postma eedf812
              
                Clang-format corrections
              
              
                Grant-Postma 1777aff
              
                Suggested changes from @alexames review
              
              
                Grant-Postma 12d03ce
              
                Suggested changes from @DellaBitta.
              
              
                Grant-Postma 11aed62
              
                freeing allocations and exiting on nullptrs
              
              
                Grant-Postma 7322220
              
                AppDelagate free glview & director + return false
              
              
                Grant-Postma 5caac8a
              
                Removing nullptr checks & pragma once statements
              
              
                Grant-Postma 2b8b2b9
              
                Replacing pragma with header guards
              
              
                Grant-Postma c6be411
              
                adding header guards
              
              
                Grant-Postma 3ce4079
              
                Moving touchListener Comment up; snake_case fix
              
              
                Grant-Postma 78775cf
              
                Comment change for more professional readablity
              
              
                Grant-Postma File filter
Filter by extension
Conversations
          Failed to load comments.   
        
        
          
      Loading
        
  Jump to
        
          Jump to file
        
      
      
          Failed to load files.   
        
        
          
      Loading
        
  Diff view
Diff view
There are no files selected for viewing
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
              | Original file line number | Diff line number | Diff line change | 
|---|---|---|
| @@ -0,0 +1,31 @@ | ||
| #include "AppDelegate.h" | ||
|  | ||
| #include "TicTacToeScene.h" | ||
|  | ||
| USING_NS_CC; | ||
|  | ||
| const float kFrameWidth = 600; | ||
| const float kFrameHeight = 600; | ||
|  | ||
| AppDelegate::AppDelegate() {} | ||
|  | ||
| AppDelegate::~AppDelegate() {} | ||
|  | ||
| bool AppDelegate::applicationDidFinishLaunching() { | ||
| auto director = Director::getInstance(); | ||
| auto glview = director->getOpenGLView(); | ||
| if (glview == NULL) { | ||
| glview = GLViewImpl::create("Tic-Tac-Toe"); | ||
| glview->setFrameSize(kFrameWidth, kFrameHeight); | ||
| director->setOpenGLView(glview); | ||
| } | ||
|  | ||
| auto scene = TicTacToe::createScene(); | ||
| director->runWithScene(scene); | ||
|  | ||
| return true; | ||
| } | ||
|  | ||
| void AppDelegate::applicationDidEnterBackground() {} | ||
|  | ||
| void AppDelegate::applicationWillEnterForeground() {} | ||
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
              | Original file line number | Diff line number | Diff line change | 
|---|---|---|
| @@ -0,0 +1,14 @@ | ||
| #ifndef TICTACTOE_DEMO_CLASSES_APPDELEGATE_SCENE_H_ | ||
| #define TICTACTOE_DEMO_CLASSES_APPDELEGATE_SCENE_H_ | ||
| #include "cocos2d.h" | ||
|  | ||
| class AppDelegate : private cocos2d::Application { | ||
| public: | ||
| AppDelegate(); | ||
| ~AppDelegate() override; | ||
|  | ||
| bool applicationDidFinishLaunching() override; | ||
| void applicationDidEnterBackground() override; | ||
| void applicationWillEnterForeground() override; | ||
| }; | ||
| #endif // TICTACTOE_DEMO_CLASSES_APPDELEGATE_SCENE_H_ | 
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
              | Original file line number | Diff line number | Diff line change | 
|---|---|---|
| @@ -0,0 +1,96 @@ | ||
| #include "TicTacToeScene.h" | ||
|  | ||
| #include <array> | ||
| #include <cstdlib> | ||
|  | ||
| #include "cocos2d.h" | ||
|  | ||
| USING_NS_CC; | ||
|  | ||
| static const int kTilesX = 3; | ||
| static const int kTilesY = 3; | ||
| static const int kNumberOfTiles = kTilesX * kTilesY; | ||
| static const int kMaxMovesPerPlayer = 1 + kNumberOfTiles / 2; | ||
| static const double kScreenWidth = 600; | ||
| static const double kScreenHeight = 600; | ||
| static const double kTileWidth = (kScreenWidth / kTilesX); | ||
| static const double kTileHeight = (kScreenHeight / kTilesY); | ||
| static const int kNumberOfPlayers = 2; | ||
| static const char* kBoardImageFileName = "tic_tac_toe_board.png"; | ||
| std::array<const char*, kNumberOfPlayers> kPlayerTokenFileNames = { | ||
| "tic_tac_toe_x.png", "tic_tac_toe_o.png"}; | ||
|  | ||
| Scene* TicTacToe::createScene() { | ||
| // Builds a simple scene that uses the bottom left cordinate point as (0,0) | ||
| // and can have sprites, labels and layers added onto it. | ||
| Scene* scene = Scene::create(); | ||
|  | ||
| // Builds a layer to be placed onto the scene which has access to TouchEvents. | ||
| TicTacToe* tic_tac_toe_layer = TicTacToe::create(); | ||
|  | ||
| scene->addChild(tic_tac_toe_layer); | ||
|  | ||
| return scene; | ||
| } | ||
|  | ||
| bool TicTacToe::init() { | ||
| if (!Layer::init()) { | ||
| return false; | ||
| } | ||
| int current_player_index = 0; | ||
| auto file_names_it = std::begin(kPlayerTokenFileNames); | ||
|  | ||
| // TODO(grantpostma): This should reflect the size that is set in AppDelegate. | ||
| // (GetVisableSize) Should modify kTileWidth and kTileHeight based on that | ||
| // size. auto kScreenWidth = Director::getInstance()->getWinSize().width; auto | ||
| // kScreenHeight = Director::getInstance()->getWinSize().height; | ||
|  | ||
| // Creating the board sprite , setting the position to the bottom left of the | ||
| // frame (0,0), and finally moving the anchor point from the center of the | ||
| // image(default) to the bottom left, Vec2(0.0,0.0). | ||
| Sprite* board_sprite = Sprite::create(kBoardImageFileName); | ||
| if (!board_sprite) { | ||
| log("kBoardImageFileName: %s file not found.", kBoardImageFileName); | ||
| exit(true); | ||
| } | ||
| board_sprite->setPosition(0, 0); | ||
| board_sprite->setAnchorPoint(Vec2(0.0, 0.0)); | ||
|  | ||
| // Adding a function to determine which tile was selected to the onTouchBegan | ||
| // listener. | ||
| auto touch_listener = EventListenerTouchOneByOne::create(); | ||
| touch_listener->onTouchBegan = [board_sprite, current_player_index]( | ||
| Touch* touch, | ||
| Event* event) mutable -> bool { | ||
| auto bounds = event->getCurrentTarget()->getBoundingBox(); | ||
|  | ||
| if (bounds.containsPoint(touch->getLocation())) { | ||
| // Calculates the tile number [0-8] which corresponds to the touch | ||
| // location. | ||
| int selected_tile = floor(touch->getLocation().x / kTileWidth) + | ||
| kTilesX * floor(touch->getLocation().y / kTileHeight); | ||
|  | ||
| auto sprite = Sprite::create(kPlayerTokenFileNames[current_player_index]); | ||
| if (sprite == NULL) { | ||
| log("kPlayerTokenFileNames: %s file not found.", | ||
| kPlayerTokenFileNames[current_player_index]); | ||
| exit(true); | ||
| } | ||
| // Calculate and set the position of the sprite based on the | ||
| // move_tile and the constant screen variables. | ||
| sprite->setPosition((.5 + selected_tile % kTilesX) * kTileWidth, | ||
| (.5 + selected_tile / kTilesY) * kTileHeight); | ||
| board_sprite->addChild(sprite); | ||
| current_player_index = (current_player_index + 1) % kNumberOfPlayers; | ||
| } | ||
| return true; | ||
| }; | ||
|  | ||
| Director::getInstance() | ||
|         
                  DellaBitta marked this conversation as resolved.
              Show resolved
            Hide resolved | ||
| ->getEventDispatcher() | ||
| ->addEventListenerWithSceneGraphPriority(touch_listener, board_sprite); | ||
|  | ||
| this->addChild(board_sprite); | ||
|  | ||
| return true; | ||
| } | ||
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
              | Original file line number | Diff line number | Diff line change | 
|---|---|---|
| @@ -0,0 +1,16 @@ | ||
| #ifndef TICTACTOE_DEMO_CLASSES_TICTACTOE_SCENE_H_ | ||
| #define TICTACTOE_DEMO_CLASSES_TICTACTOE_SCENE_H_ | ||
| #include "cocos2d.h" | ||
|  | ||
| class TicTacToe : public cocos2d::Layer { | ||
| public: | ||
| // Builds a simple scene that uses the bottom left cordinate point as (0,0) | ||
| // and can have sprites, labels and nodes added onto it. | ||
| static cocos2d::Scene* createScene(); | ||
|         
                  DellaBitta marked this conversation as resolved.
              Show resolved
            Hide resolved | ||
| // Initializes the instance of a Node and returns a boolean based on if it was | ||
| // successful in doing so. | ||
| bool init() override; | ||
| // Defines a create type for a specific type, in this case a Layer. | ||
| CREATE_FUNC(TicTacToe); | ||
| }; | ||
| #endif // TICTACTOE_DEMO_CLASSES_TICTACTOE_SCENE_H_ | ||
            Binary file not shown.
          
    
            Binary file not shown.
          
    
              Empty file.
          
    
      
      Loading
      
  Sorry, something went wrong. Reload?
      Sorry, we cannot display this file.
      Sorry, this file is invalid so it cannot be displayed.
      
    
      
      Loading
      
  Sorry, something went wrong. Reload?
      Sorry, we cannot display this file.
      Sorry, this file is invalid so it cannot be displayed.
      
    
      
      Loading
      
  Sorry, something went wrong. Reload?
      Sorry, we cannot display this file.
      Sorry, this file is invalid so it cannot be displayed.
      
    
  Add this suggestion to a batch that can be applied as a single commit.
  This suggestion is invalid because no changes were made to the code.
  Suggestions cannot be applied while the pull request is closed.
  Suggestions cannot be applied while viewing a subset of changes.
  Only one suggestion per line can be applied in a batch.
  Add this suggestion to a batch that can be applied as a single commit.
  Applying suggestions on deleted lines is not supported.
  You must change the existing code in this line in order to create a valid suggestion.
  Outdated suggestions cannot be applied.
  This suggestion has been applied or marked resolved.
  Suggestions cannot be applied from pending reviews.
  Suggestions cannot be applied on multi-line comments.
  Suggestions cannot be applied while the pull request is queued to merge.
  Suggestion cannot be applied right now. Please check back later.
  
    
  
    
Uh oh!
There was an error while loading. Please reload this page.