Beispiel #1
0
void SceneGame::doRegret()
{
	
	if (_steps->size() == 0)
		return;

	
	Step* step = *_steps->rbegin();
	_steps->pop_back();

	Chess* s = _c->at(step->moveid);
	s->_row = step->rowFrom;
	s->_col = step->colFrom;
	s->setPosition(s->fromPlate());

	Chess* kill;
	if (step->killid != -1)
	{
		kill = _c->at(step->killid);
		kill->_dead = false;
		kill->setVisible(true);
	}

	_bRedTurn = !_bRedTurn;
	delete step;

	
	_selectid = -1;
	_selectSprite->setVisible(false);
}
Beispiel #2
0
void SceneGame::ComputerMove(float dt)
{
	Step* step = AI::getStepByAlphaBetaSearch(this, 2);

	Chess* moveChess = _c->at(step->moveid);
	moveChess->_row = step->rowTo;
	moveChess->_col = step->colTo;
	_bRedTurn = !_bRedTurn;
	moveChess->setPosition(moveChess->fromPlate());

	if (step->killid != -1)
	{
		Chess* killChess = _c->at(step->killid);
		killChess->_dead = true;
		killChess->setVisible(false);
	}
	
	_steps->push_back(step);
}
Beispiel #3
0
void SceneGame::CheckRecv(float)
{
	if (NetBattle::isRecvComplete())
	{
		unschedule(schedule_selector(SceneGame::CheckRecv));

		int len;
		char* data = NetBattle::RecvData(len);

		if (data[0] == 4)
		{
			_bRedSide = !_bRedSide;

			restartInit();
		}
		else if (data[0] == 3)
		{
			doRegret2();
		
			NetBattle::RecvStart();
			schedule(schedule_selector(SceneGame::CheckRecv));
		}
		else if (data[0] == 1)
		{
			
			_selectid = data[1];
			_selectSprite->setPosition(_c->at(_selectid)->fromPlate());
			_selectSprite->setVisible(true);

		
			NetBattle::RecvStart();
			schedule(schedule_selector(SceneGame::CheckRecv));
		}
		else if (data[0] == 2)
		{
			
			Chess* s = _c->at(data[1]);
			int row = 9 - data[2];
			int col = 8 - data[3];
			int killid = getChessFromRowCol(row, col);

			recordStep(_selectid, killid, _c->at(_selectid)->_row, _c->at(_selectid)->_col, row, col);

			
			s->_row = row;
			s->_col = col;
			//s->setPosition(s->fromPlate());

			MoveTo* moveto = MoveTo::create(1.0f, s->fromPlate());
			//    CCCallFuncN* callfuncN = CCCallFuncN::create(this, callfuncN_selector(SceneGame::setChessZOrder));
			CallFuncN* callfuncN = CallFuncN::create(CC_CALLBACK_1(SceneGame::AfterMove,this,(void*)(intptr_t)killid));

			s->runAction(Sequence::createWithTwoActions(moveto, callfuncN));

			FadeOut* fadeout = FadeOut::create(1.0f);
			MoveTo* SelectMoveto = MoveTo::create(1.0f, s->fromPlate());
			Spawn* spawn = Spawn::createWithTwoActions(fadeout, SelectMoveto);
			_selectSprite->runAction(spawn);

			if (killid != -1)
			{
				Chess* ks = _c->at(killid);
				ks->_dead = true;
				ks->setVisible(false);
			}

			_selectid = -1;
			_selectSprite->setVisible(false);
			_bRedTurn = !_bRedTurn;
		}
	}
}