目标: 创建一个测试工程,测试工程以列表的方式展示,没一个列表项对应一个场景

1. 创建cocos2d-x工程

      现在采用脚本的方式来创建,好处是一次可以创建N个项目的工程。

     首先要安装Python , 官网既可 下载,我下载的是 V2.7.5 X64,下载完成后安装到本地。

     配置环境变量:

    打开 计算机-> 属性-> 高级系统设置 -> 环境变量 ,在系统变量里找到 Path 这一项,在后面添加 一句:

    D:\DevTools\Python;

   其中后面那个是你安装的Python的目录,然后打开 命令行,按照下图,

   首先定位到 cocos2d-x目录下的 tools\project-creator,  然后输入 对应的脚本

  

   python create_project.py -project MyGame -package com.MyCompany.AwesomeGame -language cpp

    MyGame 是你的游戏的名称  com.MyCompany.Awesome 是安卓,ios里用到的包名,按需修改,其它的照填就可以了。

    完成之后打开 cocos2d-x 目录下的 project 文件夹,看到如下所示,进入 project.win32 就是我们的开发环境了,

     打开 *.sln ,熟悉的界面来了,小伙伴们赶紧动手把。

     最近刚才发现一个问题,因为这个项目都是拷贝的模板来的,所以应用的唯一标识都是一个。这对于发布应用没有什么影响,因为微软会对应用进行重新签名打包。

      但是在调试的时候,后一个应用会自动覆盖前一个应用,如果要破,请自行创建一个新应用,然后替换唯一标识!

    

2. 实现原理:

     AppDelegate.cpp ---> 添加列子控制层TestController.cpp ----> 没添加一个场景测试项目,则添加一个对应的菜单  ---> 点击菜单启动场景TestScene。

     每一个场景测试项目都继承TestScene,然后实现方法:runThisTest

3. AppDelegate.cpp 说明

   1:  #include "AppDelegate.h"
   2:  #include "controller.h"
   3:   
   4:  USING_NS_CC;
   5:   
   6:  AppDelegate::AppDelegate() {
   7:   
   8:  }
   9:   
  10:  AppDelegate::~AppDelegate() 
  11:  {
  12:  }
  13:   
  14:  bool AppDelegate::applicationDidFinishLaunching() {
  15:      // initialize director
  16:      CCDirector* pDirector = CCDirector::sharedDirector();
  17:   
  18:      CCEGLView* pEGLView = CCEGLView::sharedOpenGLView();
  19:   
  20:      pDirector->setOpenGLView(pEGLView);
  21:      
  22:      // turn on display FPS
  23:      pDirector->setDisplayStats(true);
  24:   
  25:      // set FPS. the default value is 1.0/60 if you don't call this
  26:      pDirector->setAnimationInterval(1.0 / 60);
  27:   
  28:      CCScene * pScene = CCScene::create();
  29:   
  30:      CCLayer * pLayer = new TestController();
  31:      pLayer->autorelease();  //这里为什么play要放到自动释放,而pScene 不需要,因为pScene用的静态工厂方法创建的
  32:   
  33:      pScene->addChild(pLayer);
  34:      pDirector->runWithScene(pScene);
  35:      
  36:   
  37:      return true;
  38:  }
  39:   
  40:  // This function will be called when the app is inactive. When comes a phone call,it's be invoked too
  41:  void AppDelegate::applicationDidEnterBackground() {
  42:      CCDirector::sharedDirector()->stopAnimation();
  43:   
  44:      // if you use SimpleAudioEngine, it must be pause
  45:      // SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();
  46:  }
  47:   
  48:  // this function will be called when the app is active again
  49:  void AppDelegate::applicationWillEnterForeground() {
  50:      CCDirector::sharedDirector()->startAnimation();
  51:   
  52:      // if you use SimpleAudioEngine, it must resume here
  53:      // SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();
  54:  }

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

4. 控制器

 
   1:  #ifndef _CONTROLLER_H_
   2:  #define _CONTROLLER_H_
   3:   
   4:  #include "cocos2d.h"
   5:   
   6:  USING_NS_CC;
   7:   
   8:  class TestController : public CCLayer
   9:  {
  10:  public:
  11:      TestController();
  12:      ~TestController();
  13:      
  14:   
  15:      void menuCallback(CCObject * pSender);
  16:      void closeCallback(CCObject * pSender);
  17:   
  18:      virtual void ccTouchesBegan(CCSet *pTouches, CCEvent *pEvent);
  19:      virtual void ccTouchesMoved(CCSet *pTouches, CCEvent *pEvent);
  20:      
  21:  private:
  22:      CCPoint m_tBeginPos;
  23:      CCMenu* m_pItemMenu;
  24:  };
  25:   
  26:  #endif

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

   1:  #include "controller.h"

   2:  #include "tests.h"

   3:  #include "testResource.h"

   4:  #include "testBasic.h"

   5:   

   6:  #define LINE_SPACE   40

   7:   

   8:  static CCPoint s_tCurPos = CCPointZero;

   9:   

  10:  /************************************************************************/

  11:  /*     根据传入的加载项目的ID来加载对于的场景                              */

  12:  /************************************************************************/

  13:  static TestScene* CreateTestScene(int nIdx)

  14:  {

  15:      CCDirector::sharedDirector()->purgeCachedData();

  16:   

  17:      TestScene* pScene = NULL;

  18:   

  19:      switch (nIdx)

  20:      {

  21:      case HelloWorld: //在tests.h中枚举定义

  22:          pScene = new ZwHelloWorldScene(); break;

  23:      default:

  24:          break;

  25:      }

  26:   

  27:      return pScene;

  28:  }

  29:   

  30:  TestController::TestController()

  31:  : m_tBeginPos(CCPointZero)

  32:  {//类后面添加 : m_tBeginPos(CCPointZero) 作用是初始化m_tBeginPos变量

  33:     

  34:      // add close menu    

  35:      CCMenuItemImage *pCloseItem = CCMenuItemImage::create("CloseSelected.png", "CloseSelected.png", this, menu_selector(TestController::closeCallback) );

  36:      CCMenu* pMenu =CCMenu::create(pCloseItem, NULL);    

  37:      pMenu->setPosition( CCPointZero );

  38:      pCloseItem->setPosition(ccp( VisibleRect::right().x - 30, VisibleRect::top().y - 30));

  39:   

  40:      // 每一个增加的测试项目对应一个菜单项,测试项目的名称和数量在tests.h中定义

  41:      m_pItemMenu = CCMenu::create();

  42:      for (int i = 0; i < TESTS_COUNT; ++i)

  43:      {

  44:   

  45:          CCLabelTTF* label = CCLabelTTF::create(g_aTestNames[i].c_str(), "Arial", 24);

  46:        

  47:          CCMenuItemLabel* pMenuItem = CCMenuItemLabel::create(label, this, menu_selector(TestController::menuCallback));

  48:   

  49:          m_pItemMenu->addChild(pMenuItem, i + 10000);

  50:          pMenuItem->setPosition( ccp( VisibleRect::center().x, (VisibleRect::top().y - (i + 1) * LINE_SPACE) ));

  51:      }

  52:   

  53:      m_pItemMenu->setContentSize(CCSizeMake(VisibleRect::getVisibleRect().size.width, (TESTS_COUNT + 1) * (LINE_SPACE)));

  54:      m_pItemMenu->setPosition(s_tCurPos);

  55:      addChild(m_pItemMenu);

  56:   

  57:      setTouchEnabled(true);

  58:   

  59:      addChild(pMenu, 1);

  60:      

  61:  //#define CC_PLATFORM_WINRT_SAVE_SHADERS

  62:  /*

  63:  #if (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) && defined(CC_PLATFORM_WINRT_SAVE_SHADERS)

  64:      ShaderTestDemo::precompileShaders();

  65:      CCPrecompiledShaders::sharedPrecompiledShaders()->savePrecompiledShaders();

  66:  #endif

  67:  */

  68:  }

  69:   

  70:  TestController::~TestController()

  71:  {

  72:  }

  73:   

  74:  /************************************************************************/

  75:  /*           点击测试项目菜单项以后,加载对于的场景                        */

  76:  /************************************************************************/

  77:  void TestController::menuCallback(CCObject * pSender)

  78:  {

  79:      // get the userdata, it's the index of the menu item clicked

  80:      CCMenuItem* pMenuItem = (CCMenuItem *)(pSender);

  81:      int nIdx = pMenuItem->getZOrder() - 10000;

  82:   

  83:      // create the test scene and run it

  84:      TestScene* pScene = CreateTestScene(nIdx);

  85:      if (pScene)

  86:      {

  87:          pScene->runThisTest();

  88:          pScene->release();

  89:      }

  90:  }

  91:   

  92:  void TestController::closeCallback(CCObject * pSender)

  93:  {

  94:  #if (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8)

  95:      CCMessageBox("You pressed the close button. Windows Store Apps do not implement a close button.","Alert");

  96:   

  97:      #else

  98:          CCDirector::sharedDirector()->end();

  99:      #if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)

 100:          exit(0);

 101:      #endif

 102:  #endif

 103:  }

 104:   

 105:  void TestController::ccTouchesBegan(CCSet *pTouches, CCEvent *pEvent)

 106:  {

 107:      CCSetIterator it = pTouches->begin();

 108:      CCTouch* touch = (CCTouch*)(*it);

 109:   

 110:      m_tBeginPos = touch->getLocation();    

 111:  }

 112:   

 113:  void TestController::ccTouchesMoved(CCSet *pTouches, CCEvent *pEvent)

 114:  {

 115:      CCSetIterator it = pTouches->begin();

 116:      CCTouch* touch = (CCTouch*)(*it);

 117:   

 118:      CCPoint touchLocation = touch->getLocation();    

 119:      float nMoveY = touchLocation.y - m_tBeginPos.y;

 120:   

 121:      CCPoint curPos  = m_pItemMenu->getPosition();

 122:      CCPoint nextPos = ccp(curPos.x, curPos.y + nMoveY);

 123:   

 124:      if (nextPos.y < 0.0f)

 125:      {

 126:          m_pItemMenu->setPosition(CCPointZero);

 127:          return;

 128:      }

 129:   

 130:      if (nextPos.y > ((TESTS_COUNT + 1)* LINE_SPACE - VisibleRect::getVisibleRect().size.height))

 131:      {

 132:          m_pItemMenu->setPosition(ccp(0, ((TESTS_COUNT + 1)* LINE_SPACE - VisibleRect::getVisibleRect().size.height)));

 133:          return;

 134:      }

 135:   

 136:      m_pItemMenu->setPosition(nextPos);

 137:      m_tBeginPos = touchLocation;

 138:      s_tCurPos   = nextPos;

 139:  }

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

5. 场景容器

   1:  #ifndef _TEST_BASIC_H_
   2:  #define _TEST_BASIC_H_
   3:   
   4:  #include "cocos2d.h"
   5:  #include "VisibleRect.h"
   6:   
   7:  USING_NS_CC;
   8:  using namespace std;
   9:   
  10:  class TestScene : public CCScene
  11:  {
  12:  public: 
  13:      TestScene(bool bPortrait = false);
  14:      virtual void onEnter();
  15:   
  16:      virtual void runThisTest() = 0;
  17:   
  18:      // The CallBack for back to the main menu scene
  19:      virtual void MainMenuCallback(CCObject* pSender);
  20:  };
  21:   
  22:  typedef CCLayer* (*NEWTESTFUNC)();
  23:  #define TESTLAYER_CREATE_FUNC(className) \
  24:  static CCLayer* create##className() \
  25:  { return new className(); }
  26:   
  27:  #define CF(className) create##className
  28:   
  29:  #endif

   1:  #include "testBasic.h"
   2:  #include "controller.h"
   3:   
   4:  TestScene::TestScene(bool bPortrait)
   5:  {
   6:      
   7:      CCScene::init();
   8:  }
   9:   
  10:  void TestScene::onEnter()
  11:  {
  12:      CCScene::onEnter();
  13:   
  14:      //add the menu item for back to main menu
  15:  //#if (CC_TARGET_PLATFORM == CC_PLATFORM_MARMALADE)
  16:  //    CCLabelBMFont* label = CCLabelBMFont::create("MainMenu",  "fonts/arial16.fnt");
  17:  //#else
  18:      CCLabelTTF* label = CCLabelTTF::create("MainMenu", "Arial", 20);
  19:  //#endif
  20:      CCMenuItemLabel* pMenuItem = CCMenuItemLabel::create(label, this, menu_selector(TestScene::MainMenuCallback));
  21:   
  22:      CCMenu* pMenu =CCMenu::create(pMenuItem, NULL);
  23:   
  24:      pMenu->setPosition( CCPointZero );
  25:      pMenuItem->setPosition( ccp( VisibleRect::right().x - 50, VisibleRect::bottom().y + 25) );
  26:   
  27:      addChild(pMenu, 1);
  28:  }
  29:   
  30:  void TestScene::MainMenuCallback(CCObject* pSender)
  31:  {
  32:      CCScene* pScene = CCScene::create();
  33:      CCLayer* pLayer = new TestController();
  34:      pLayer->autorelease();
  35:   
  36:      pScene->addChild(pLayer);
  37:      CCDirector::sharedDirector()->replaceScene(pScene);
  38:  }

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

6. 加载项目定义

   1:  #ifndef _TESTS_H_
   2:  #define _TESTS_H_
   3:   
   4:  #include "HelloWorld/HelloWorldScene.h"
   5:   
   6:  enum
   7:  {
   8:      HelloWorld = 0,
   9:      // last one
  10:      TESTS_COUNT,
  11:  };
  12:   
  13:  const std::string g_aTestNames[TESTS_COUNT] = {
  14:      "HelloWorld"
  15:  };
  16:   
  17:  #endif

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

7. 第一个hellowold

   1:  #ifndef __HELLOWORLD_SCENE_H__
   2:  #define __HELLOWORLD_SCENE_H__
   3:   
   4:  #include "cocos2d.h"
   5:  #include "../testBasic.h"
   6:   
   7:  class HelloWorld : public cocos2d::CCLayer
   8:  {
   9:  public:
  10:      // Here's a difference. Method 'init' in cocos2d-x returns bool, instead of returning 'id' in cocos2d-iphone
  11:      virtual bool init();  
  12:   
  13:      // there's no 'id' in cpp, so we recommend returning the class instance pointer
  14:      static cocos2d::CCScene* scene();
  15:      
  16:      // a selector callback
  17:      void menuCloseCallback(CCObject* pSender);
  18:      
  19:      // implement the "static node()" method manually
  20:      CREATE_FUNC(HelloWorld);
  21:  };
  22:   
  23:  class ZwHelloWorldScene : public TestScene
  24:  {
  25:  public:
  26:      virtual void runThisTest();
  27:  };
  28:   
  29:  #endif // __HELLOWORLD_SCENE_H__

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

   1:  #include "HelloWorld/HelloWorldScene.h"
   2:   
   3:  USING_NS_CC;
   4:   
   5:  CCScene* HelloWorld::scene()
   6:  {
   7:      // 'scene' is an autorelease object
   8:      CCScene *scene = CCScene::create();
   9:      
  10:      // 'layer' is an autorelease object
  11:      HelloWorld *layer = HelloWorld::create();
  12:   
  13:      // add layer as a child to scene
  14:      scene->addChild(layer);
  15:   
  16:      // return the scene
  17:      return scene;
  18:  }
  19:   
  20:  // on "init" you need to initialize your instance
  21:  bool HelloWorld::init()
  22:  {
  23:      //////////////////////////////
  24:      // 1. super init first
  25:      if ( !CCLayer::init() )
  26:      {
  27:          return false;
  28:      }
  29:      
  30:      CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
  31:      CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin();
  32:   
  33:      /////////////////////////////
  34:      // 2. add a menu item with "X" image, which is clicked to quit the program
  35:      //    you may modify it.
  36:   
  37:      // add a "close" icon to exit the progress. it's an autorelease object
  38:      CCMenuItemImage *pCloseItem = CCMenuItemImage::create(
  39:                                          "CloseNormal.png",
  40:                                          "CloseSelected.png",
  41:                                          this,
  42:                                          menu_selector(HelloWorld::menuCloseCallback));
  43:      
  44:      pCloseItem->setPosition(ccp(origin.x + visibleSize.width - pCloseItem->getContentSize().width/2 ,
  45:                                  origin.y + pCloseItem->getContentSize().height/2));
  46:   
  47:      // create menu, it's an autorelease object
  48:      CCMenu* pMenu = CCMenu::create(pCloseItem, NULL);
  49:      pMenu->setPosition(CCPointZero);
  50:      this->addChild(pMenu, 1);
  51:   
  52:      /////////////////////////////
  53:      // 3. add your codes below...
  54:   
  55:      // add a label shows "Hello World"
  56:      // create and initialize a label
  57:      
  58:      CCLabelTTF* pLabel = CCLabelTTF::create("Hello World", "Arial", 24);
  59:      
  60:      // position the label on the center of the screen
  61:      pLabel->setPosition(ccp(origin.x + visibleSize.width/2,
  62:                              origin.y + visibleSize.height - pLabel->getContentSize().height));
  63:   
  64:      // add the label as a child to this layer
  65:      this->addChild(pLabel, 1);
  66:   
  67:      // add "HelloWorld" splash screen"
  68:      CCSprite* pSprite = CCSprite::create("HelloWorld.png");
  69:   
  70:      // position the sprite on the center of the screen
  71:      pSprite->setPosition(ccp(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));
  72:   
  73:      // add the sprite as a child to this layer
  74:      this->addChild(pSprite, 0);
  75:      
  76:      return true;
  77:  }
  78:   
  79:   
  80:  void HelloWorld::menuCloseCallback(CCObject* pSender)
  81:  {
  82:  #if (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8)
  83:      CCMessageBox("You pressed the close button. Windows Store Apps do not implement a close button.","Alert");
  84:  #else
  85:      CCDirector::sharedDirector()->end();
  86:  #if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
  87:      exit(0);
  88:  #endif
  89:  #endif
  90:  }
  91:   
  92:  void ZwHelloWorldScene ::runThisTest()
  93:  {
  94:      HelloWorld *layer = HelloWorld::create();
  95:   
  96:      // add layer as a child to scene
  97:      this->addChild(layer);
  98:   
  99:      CCDirector::sharedDirector()->replaceScene(this);
 100:  }

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

 

从零开始搭建TestCpp工程的更多相关文章

  1. IDEA下从零开始搭建SpringBoot工程

    SpringBoot的具体介绍可以参看其他网上介绍,这里就不多说了,就这几天的学习,个人理解,简而言之: (1)它是Spring的升级版,Spring容器能做到的事情,它都能做到,而且更简便,从配置形 ...

  2. 从零开始搭建框架SSM+Redis+Mysql(二)之MAVEN项目搭建

    从零开始搭建框架SSM+Redis+Mysql(二)之MAVEN项目搭建 废话不说,直接撸步骤!!! 1.创建主项目:ncc-parent 选择maven创建项目,注意在创建项目中,packing选择 ...

  3. 【运维技术】从零开始搭建开发使用的Kafka环境

    [原创]从零开始搭建开发使用的Kafka环境 入门资料 百度百科: Kafka是一种高吞吐量的分布式发布订阅消息系统,这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决. 对于像Hadoop ...

  4. 高性能流媒体服务器EasyDSS前端重构(一)-从零开始搭建 webpack + vue + AdminLTE 多页面脚手架

    本文围绕着实现EasyDSS高性能流媒体服务器的前端框架来展开的,具体EasyDSS的相关信息可在:www.easydss.com 找到! EasyDSS 高性能流媒体服务器前端架构概述 EasyDS ...

  5. 从零开始搭建一个react项目

    Nav logo 120 发现 关注 消息 4 搜索 从零开始搭建一个react项目 96 瘦人假噜噜 2017.04.23 23:29* 字数 6330 阅读 32892评论 31喜欢 36 项目地 ...

  6. 从零开始搭建口袋妖怪管理系统(4)-借助webpack4.6工程化项目(上)

    "手动是不可能手动的了,这辈子都不可能手动的了." 一.目标 上一章我们借助ngRoute,完成了口袋妖怪SPA系统的多模块导航开发,但是现在引用的东西越来越多,项目文件目录开始变 ...

  7. 15分钟从零开始搭建支持10w+用户的生产环境(四)

    上一篇文章,介绍了这个架构中,WebServer的选择,以及整个架构中扩展时的思路. 原文地址:15分钟从零开始搭建支持10w+用户的生产环境(三)   五.架构实践 前边用了三篇文章,详细介绍了这个 ...

  8. GO学习-(2) 从零开始搭建Go语言开发环境

    从零开始搭建Go语言开发环境 一步一步,从零搭建Go语言开发环境. 安装Go语言及搭建Go语言开发环境 下载 下载地址 Go官网下载地址:https://golang.org/dl/ Go官方镜像站( ...

  9. kotlin+springboot+mybatis-puls+mysql搭建gradle-web工程

    kotlin+springboot+mybatis-puls+mysql搭建web工程 ​ 前段时间研究了spring security及OAuth2系列之后,本来打算研究spring的,但是部门发生 ...

随机推荐

  1. Bash脚本编程基础

    为实现某个任务,将许多命令组合后,写入一个可执行的文本文件的方法,称为Shell脚本编程. 按照应用的Shell环境不同,可以将Shell脚本分为多种类型.其中最常见的是应用于Bash和Tcsh的脚本 ...

  2. 用 Gearman 分发 PHP 应用程序的工作负载

    尽管一个 Web 应用程序的大部分内容都与表示有关,但它的价值与竞争优势却可能体现在若干专有服务或算法方面.如果这类处理过于复杂或拖沓,最好是进行异步执行,以免 Web 服务器对传入的请求没有响应.实 ...

  3. GNU-ARM汇编

    GNU ARM 汇编指令(2008-10-29 00:16:10) 标签:linux gnu arm 汇编指令 it 分类:技术文摘 第一部分 Linux下ARM汇编语法尽管在Linux下使用C或C+ ...

  4. c++ 设计模式5 (Observer / Event 观察者模式)

    3.3 观察者模式 (Observer)/发布-订阅模式 动机: 在软件构建过程中,我们需要为某些对象建立一种“通知依赖关系”——一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都能得 ...

  5. 使用C#实现读取/写入Excel表

    C#实现写入Excel表 using System; using System.Reflection; using System.IO; using Microsoft.Office.Interop. ...

  6. Java对象初始化顺序

    最近我发现了一个有趣的问题,这个问题的答案乍一看下骗过了我的眼睛.看一下这三个类: package com.ds.test;   public class Upper { String upperSt ...

  7. Java学习笔记——双等号和equals的区别

    一.==和equals的区别 1. ==可以用来比较基本类型和引用类型,判断内容和内存地址 2. equals只能用来比较引用类型,它只判断内容.该函数存在于老祖宗类 java.lang.Object ...

  8. 转载:Character data is represented incorrectly when the code page of the client computer differs from the code page of the database in SQL Server 2005

    https://support.microsoft.com/en-us/kb/904803 Character data is represented incorrectly when the cod ...

  9. QQ互联登陆出现(1054) Unknown column “conuintoken” in “field list”

    在dz论坛中打开了QQ互联登录功能之后提示(1054) Unknown column conuintoken in field list 错误 我们看到sql 错误就是说没有conuintoken字了 ...

  10. 各种"居中"

    先看效果 代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> < ...