예제 #1
0
//do initialization here
void LCBattleScene::initView()
{
    backGround = Sprite::create("BackGround.png");
    //backGround->setScale(3);
    this->addChild(backGround);

    Size visibleSize = Director::getInstance()->getVisibleSize();
    Point origin = Director::getInstance()->getVisibleOrigin();

    backGround->setPosition(Point(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));

    lifeObj::setActiveRange(backGround->getContentSize());
    lifeObj::setMap(backGround);

    createHero();

    addMonster(3);

    hero->objList = monsterArr;

    __NotificationCenter::getInstance()->addObserver(this, callfuncO_selector(LCBattleScene::delteMonster), "delteMonster", NULL);

    schedule(schedule_selector(LCBattleScene::followHero), 3.0f, -1, 1);

    scheduleOnce(schedule_selector(LCBattleScene::test), 1);
    scheduleUpdate();
//   schedule(, 2, 2);
}
예제 #2
0
//do initialization here
void LCBattleScene::initView()
{
    createHero();
    
    addMonster(3);
    
    schedule(schedule_selector(LCBattleScene::followHero), 3, kCCRepeatForever, 1);
    //this->schedule();
    
    //schedule(schedule_selector(LCBattleScene::updatess), 2, kCCRepeatForever, 3);
    
    //this->scheduleUpdate();
    //createHero();
    //_root_elf_title->setString(Language("FORMATION$_TITLE"));
    //_root_elf_btn_back_normal_text->setString(Language("GLOBAL$_BTN_RETURN"));
    //_root_elf_btn_back_pressed_text->setString(Language("GLOBAL$_BTN_RETURN"));
    //_root_elf_upgrage_text->setString(Language("FORMATION$_UPGRADE"));
    
    //createTeam();
    //_root_elf_startup->setTarget(this, menu_selector(LCBattleScene::enableClicked));
    //_root_elf_upgrage->setTarget(this, menu_selector(LCBattleScene::upgradeClicked));
    //_root_elf_btn_back->setTarget(this, menu_selector(LCBattleScene::backClicked));
    //_root_walk->setTarget(this, menu_selector(LCBattleScene::actionWalk));
    //_root_walk_des->setString("walk");
    
    //_root_rush->setTarget(this, menu_selector(LCBattleScene::actionRusn));
    //_root_jump->setTarget(this, menu_selector(LCBattleScene::actionJump));
    //_root_attack->setTarget(this, menu_selector(LCBattleScene::actionAttack));
    
    //_root_turn->setTarget(this, menu_selector(LCBattleScene::turnAround));
    
}
예제 #3
0
bool SceneGame::init()
{
	LayerScrollBackGround::init();

	_brainControlShow = BrainControl::create();
	this->addChild(_brainControlShow);
	_brainControlShow->setZOrder(100);

	_nextAsteroid = 0;
	_nextUfo = 0;
	_nextShipLaser = 0;

	//把所有的图片存储在一张图片里面,然后使用这个 BatchNode 
	//就可以仅使用一次 opengl 调用来做所有的绘图操作。
	//使用一张大的图片创建一个 CCSpriteBatchNode 对象来批处理所有的对
	//象的描绘操作。接收的参数是 Sprites.pvr.ccz。
	_batchNode = SpriteBatchNode::create("SceneGame/ShipAsteroidStone.png");
	this->addChild(_batchNode);
	SpriteFrameCache::getInstance()->addSpriteFramesWithFile("SceneGame/ShipAsteroidStone.plist");



	//英雄飞船出场
	createHero();

	//使用粒子系统创建星星
	createGrainStar();

	//初始化星球
	InitAsteroid();

	//初始化陨石
	InitStones();

	InitUFO();

	//初始化激光
	InitShipLasers();

	//加载游戏中需要用到的音乐
	initAudio();

	this->scheduleUpdate();
	this->setAccelerometerEnabled(true);   //设置重力感应

	double curTime = getTimeTick();
	_gameOverTime = curTime + 30000;
	_gameOver = false;
	_lives = _brainControlShow->_lives;

	return true;
}
예제 #4
0
MainHero* ObjectFactory::createMainHero(const char* id)
{
    MainHero* mainHero = MainHero::create();
    HeroDTO* heroDTO = DataCollector::getInstance()->getHeroDTOByKey(id);
    
    if(heroDTO == NULL)
    {
        // NOT FOUND HERO
        assert(0);
    }
    createHero(mainHero, DataCollector::getInstance()->getHeroDTOByKey(id));
    return mainHero;
}
예제 #5
0
파일: main.c 프로젝트: antonmazun/courses
int main(void)
{
	struct Hero mage = {
		"",
		MAGE,
		450,
		0,
		50,
		200,
		30,
		10,
		1,
		1,
		0,
		0, 
		NULL,
		NULL
	};
	struct Hero warrior = {
		"",
		WARRIOR,
		550,
		60,
		0,
		0,
		5,
		25,
		1.3,
		1,
		0,
		0, 
		NULL,
		NULL
	};
	struct Hero thief = {
		"",
		THIEF,
		400,
		60,
		0,
		0,
		10,
		15,
		1,
		1.2,
		5,
		0, 
		NULL,
		NULL
	};
	struct Hero bot1 = {
		"Mage",
		ANY,
		500,
		0,
		45,
		0,
		15,
		15,
		1.4,
		1.5,
		10,
		0, 
		NULL,
		NULL
	};
	struct Hero bot2 = {
		"Guard",
		ANY,
		400,
		65,
		0,
		0,
		15,
		35,
		1.8,
		1,
		0,
		0, 
		NULL,
		NULL
	};
	struct Hero bot3 = {
		"Black knight",
		ANY,
		700,
		100,
		0,
		0,
		25,
		25,
		1,
		1.2,
		5,
		0, 
		NULL,
		NULL
	};
	struct Hero * hero;
	struct Hero * bot = &(bot3);
	COORD posHead;
	int a;
	int b;
	int p = 0;
	int status = 0;
	int true = 0;
	const char * Interface[3] = {
		"New game",
		"Load",
		"Records"
	};
	HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
	metka: a = move (hConsole, 3, Interface, 7, hero, &(mage), &(warrior), &(thief));
	switch (a){
		case 0 : createHero(&(hero), &(mage), &(warrior), &(thief)); true = 1; break;
		case 1 :
			system("cls");
			FILE * fp = NULL;
			printf("enter full name of file what you will open to load\n");
			char str[30];
			gets(str);
			fp = fopen(str, "r");
			if (NULL == fp)
				status = 1;
			if (status == 0)
			{
				fscanf(fp, "%i", &(b));
				switch (b)
				{
					case MAGE: hero = &(mage); break;
					case WARRIOR: hero = &(warrior); break;
					case THIEF: hero = &(thief); break;
				}
				int Weapon_type;
				int Armor_type;
				fscanf(fp, "%i %i %i", &(Weapon_type), &(Armor_type), &(hero->gold));
				switch (Armor_type)
				{
					case -1: status = 1; break;
					case 6: hero->Armor = &(steel_armor); break;
					case 7: hero->Armor = &(mage_robe); break;
					case 8: hero->Armor = &(lether_armor); break;
					case 9: hero->Armor = &(dragon_armor); break;
					case 10: hero->Armor = &(arcgmage_robe); break;
					case 11: hero->Armor = &(elven_armor); break;
				}
				if (status != 1){
					hero->health += hero->Armor->health;
					hero->damage += hero->Armor->damage;
					hero->mag_damage += hero->Armor->mag_damage;
					hero->mana += hero->Armor->mana;
					hero->magic_protect += hero->Armor->magic_protect;
					hero->armor += hero->Armor->armor;
					hero->critical_damage += hero->Armor->critical_damage - 1;
					hero->critical_chanse += hero->Armor->critical_chanse;
				}
				switch (Weapon_type)
				{
					case -1: status = -1; break;
					case 0: hero->Weapon = &(steel_sword); break;
					case 1: hero->Weapon = &(magic_stick); break;
					case 2: hero->Weapon = &(steel_dagger); break;
					case 3: hero->Weapon = &(great_sword); break;
					case 4: hero->Weapon = &(wood_scepter); break;
					case 5: hero->Weapon = &(thief_dagger); break;
				}
				if (status != -1){
					hero->health += hero->Weapon->health;
					hero->damage += hero->Weapon->damage;
					hero->mag_damage += hero->Weapon->mag_damage;
					hero->mana += hero->Weapon->mana;
					hero->magic_protect += hero->Weapon->magic_protect;
					hero->armor += hero->Weapon->armor;
					hero->attack_speed = hero->Weapon->attack_speed;
					hero->critical_damage += hero->Weapon->critical_damage - 1;
					hero->critical_chanse += hero->Weapon->critical_chanse;
				}
				true = 1;
				
			}
			else 
				printf("error input");
			fclose(fp);	
			break;
		case 2 : printRec(); goto metka;break;
		
	}
	
	
	while (true)
	{
		shop(hero, &(mage), &(warrior), &(thief));
		true = battle(hero, &(bot1), &(bot2), &(bot3));
		if (true == 2)
			;
		else if (true)
			printf("WIN\n");
		else
			printf("LOSE\n");
		getchar();
	}
	system("cls");
	posHead.X = 34;
	posHead.Y = 10;
	SetConsoleCursorPosition(hConsole, posHead);
	SetConsoleTextAttribute(hConsole, FOREGROUND_RED);
	puts("GAME OVER");
	posHead.Y = 11;
	SetConsoleCursorPosition(hConsole, posHead);
	printf("your result is %i", hero->gold);
	posHead.Y++;
	SetConsoleCursorPosition(hConsole, posHead);
	printf("enter your nickname\n");
	char nick[20];
	posHead.Y++;
	SetConsoleCursorPosition(hConsole, posHead);
	gets(nick);
	if (nick[0] == '\0')
		strcpy(nick, "noName");
	int record[10];
	char temp[10][20];
	FILE * fp = NULL;
	fp = fopen("reclab4.txt", "r");
	if (NULL == fp)
		return 0;
	for (int i = 0; i < 10; i++){
		fscanf(fp, "%i %s", &record[i], temp[i]);
		//printf("%i. %8i  %s\n", i + 1, record, nick);
		if (record[i] > hero->gold)
			p = i;
	}
	fclose(fp);
	fp = fopen("reclab4.txt", "w");
	for (int i = 0; i < 10; i++){
		if (p == i - 1)
			fprintf(fp, "%i %s\n", hero->gold, nick);
		fprintf(fp, "%i %s\n", record[i], temp[i]);
	}
	SetConsoleTextAttribute(hConsole, FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
	getchar();
	fclose(fp);
	return EXIT_SUCCESS;
}
예제 #6
0
void GameLevel::load(const std::string &levelFile) {
  unload();

  std::string buffer = levelFile.empty() ? sTemplateMap : JsonParser::getBuffer(levelFile);
  if (buffer.empty()) {
    load("");
    return;
  }
  JsonParser parser(buffer);
  if (!parser) {
    CCLOG("%s", buffer.c_str());
    CCLOGERROR("Cannot load the level file: %s", levelFile.c_str());
  }

  CCLOG("Loading level file: %s", levelFile.empty() ? "Template" : levelFile.c_str());

  auto& doc = parser.getCurrentDocument();

  std::string paletteFile = doc[LEVEL_PALETTE_FILE].GetString();
  CC_SAFE_DELETE(mPalette);
  mPalette = new ColorPalette(paletteFile);

  // Shadows.
  if (doc.HasMember(SHADOW_GROUP)) {
    mNumShadowGroup = doc[SHADOW_GROUP].Size();
    parser.parseArray(doc, SHADOW_GROUP, [&](JsonSizeT i, JsonValueT &val) {
      addShadowGroup();
      mShadows[i]->load(val);
      initShadowGroup(i);
    });
  }

  // Sprites.
  CC_ASSERT(mSpriteList.empty());
  if (doc.HasMember(GAME_SPRITES)) {
    parser.parseArray(doc, GAME_SPRITES, [&](JsonSizeT i, JsonValueT &val) {
      mSpriteList.push_back(new GameSprite());
      mSpriteList.back()->load(val);
      mGameLayer->getBlockRoot()->addChild(mSpriteList.back()->getSprite(),
                                           mSpriteList.back()->ZOrder);
    });
  }

  // Effects.
  CC_ASSERT(mEffects.empty());
  if (doc.HasMember(GAME_FX)) {
    parser.parseArray(doc, GAME_FX, [&](JsonSizeT i, JsonValueT &val) {
      mEffects.push_back(val.GetString());
    });
  }
  loadFx();

  // Objects.
  mHeroSpawnPos = doc[LEVEL_SPAWN_POS].GetVec2();
  createHero(mHeroSpawnPos);
  parser.parseArray(doc, LEVEL_BLOCK_ARRAY, [&](JsonSizeT i, JsonValueT& val) {
    mObjectManager->createObject(val);
  });

  // Update shadow right after loading objects.
  for (auto sm : mShadows) {
    sm->update(0);
  }
  
  // Time events.
  CC_ASSERT(mTimeEvents.empty());
  if (doc.HasMember(TIME_EVENTS)) {
    parser.parseArray(doc, TIME_EVENTS, [&](JsonSizeT i, JsonValueT &val) {
      auto timeEvent = new TimeEvent();
      timeEvent->load(val);
      mTimeEvents.push_back(timeEvent);
    });
  }

  updateBounds();
  mBackground->clear();
  mBackground->drawSolidRect({mBounds.getMinX(), mBounds.getMinY()},
                             {mBounds.getMaxX(), mBounds.getMaxY()},
                             Color4F(mPalette->getBackgroundColor()));

  setCurrentFile(levelFile);

  mGameLayer->afterLoad();
}
예제 #7
0
Hero* ObjectFactory::createHero(const char* id)
{
    Hero* hero = Hero::create();
    createHero(hero, DataCollector::getInstance()->getHeroDTOByKey(id));
    return hero;
}
예제 #8
0
Hero* ObjectFactory::createHero(HeroDTO* heroDTO, b2World* world, bool isLocal)
{
    Hero* hero = Hero::create();
    createHero(hero, heroDTO);
    return hero;
}