int main()
{
	//Creates the window
    sf::RenderWindow window(sf::VideoMode(WIDTH, HEIGHT), "My window");
    //Seeds random
	std::srand(time(NULL));	
	//Initialize important variables
	int done = 0;
	clock_t timerStart;

    //Run the program as long as the window is open
    while (window.isOpen() && done != 1)
    {
		//Gets time at the start of the game
		timerStart = clock();
		//Game loop
		done = game(&window);

		if (done == 0)
			//Finds out whether the player wants another round
			done = endOfGame(&window, timerStart);
    }

    return 0;
}
Exemple #2
0
void Board::marked(int x, int y) {
  // make sure that the last arrow is correctly undrawn
  undrawArrow();

  if(getField(x, y) == EMPTY)
    return;
  
  if(x == mark_x && y == mark_y) {
    // unmark the piece
    mark_x = -1;
    mark_y = -1;
    updateField(x, y);
    return;
  }

  if(mark_x == -1) {
    mark_x = x;
    mark_y = y;
    updateField(x, y);
    return;
  } else {
    int fld1 = getField(mark_x, mark_y);
    int fld2 = getField(x, y);
    
    // both field same?
    if(fld1 != fld2) {
      emit markError();
      return;
    }
    
    // trace    
    if(findPath(mark_x, mark_y, x, y)) {
      emit madeMove(mark_x, mark_y, x, y);
      drawArrow(mark_x, mark_y, x, y);
      setField(mark_x, mark_y, EMPTY);
      setField(x, y, EMPTY);
      mark_x = -1;
      mark_y = -1;

      int dummyx;
      History dummyh[4];

      // game is over?      
      if(!getHint_I(dummyx,dummyx,dummyx,dummyx,dummyh)) {
	time_for_game = (int)time((time_t)NULL) - starttime;
	emit endOfGame();
      }
      
    } else {
      clearHistory();
      emit markError();
    }
  }
}
Exemple #3
0
void Board::undrawConnection()
{
	if(grav_col_1 != -1 || grav_col_2 != -1)
	{
		gravity(grav_col_1, true);
		gravity(grav_col_2, true);
		grav_col_1 = -1;
		grav_col_2 = -1;
	}

	// is already undrawn?
	if(connection.empty())
		return;

	// Redraw all affected fields

	Path oldConnection = connection;
	connection.clear();

	// Path.size() will always be >= 2
	Path::const_iterator pathEnd = oldConnection.end();
	Path::const_iterator pt1 = oldConnection.begin();
	Path::const_iterator pt2 = pt1;
	++pt2;
	while(pt2 != pathEnd)
	{
		if(pt1->y == pt2->y)
		{
			for(int i = std::min(pt1->x, pt2->x); i <= std::max(pt1->x, pt2->x); i++)
				updateField(i, pt1->y);
		}
		else
		{
			for(int i = std::min(pt1->y, pt2->y); i <= std::max(pt1->y, pt2->y); i++)
				updateField(pt1->x, i);
		}
		++pt1;
		++pt2;
	}

	Path dummyPath;
	// game is over?
	if(!getHint_I(dummyPath))
	{
		time_for_game = (int)difftime( time((time_t)0), starttime);
		emit endOfGame();
	}
}
Exemple #4
0
void
Tetris::generate()
{
	if (field->generateFallingBlock())
	{
		field->putBlockInField(false);
		preview->previewBlock(blocknr_next, rot_next, color_next);
		gtk_widget_queue_draw(preview->getWidget());
		onePause = true;
	}
	else
	{
		g_source_remove(timeoutId);
		timeoutId = 0;
		blocknr_next = -1;

		endOfGame();
	}
}
Exemple #5
0
int main()
{

    int  massS[9];
    int prov;
    int x;
    int CorZ=1;
    for(int i=0;i<9;i++) massS[i]=-1;

    //massS[8]=0;
    //massS[3]=0;
    //massS[8]=1;
    funField(massS);
    while (!endOfGame(massS))
    {
        x=step(massS,prov);
        if (x==-1)
        {
            printf("\nVi pitalis postavit v zanyatuy yacheiku\nSdelaite hod eshe raz");
            step(massS,prov);
        }
        else
        {
            massS[x]=CorZ;
            funField(massS);
        }

        if (CorZ==1) CorZ=0;
        else CorZ=1;
    }

    if (whoiswinner() == 1)
            printf("Player 2 Win!!!");
    if (whoiswinner() == 2)
            printf("Player 1 Win!!!,player 2 looooooooooser!!!!");

	return 0;
}
Exemple #6
0
void TcpServer::incomingConnection(qintptr socketDescriptor) {

    if (threadPool.size() < maxConnections) {
        QThread *thread = new QThread;
        Client *client = new Client(socketDescriptor);
        client->moveToThread(thread);

        connect(thread, SIGNAL(started()), client, SLOT(run()));

        connect(client, SIGNAL(newGame(QString, QString, QList<QString>)),this,SLOT(newGame(QString, QString, QList<QString>)));
        connect(client, SIGNAL(startGame(QString)),this,SLOT(readyToStart(QString)));
        connect(this, SIGNAL(sendData(QList<QPair<QString,Snake*> >,QList<Food*>)), client, SLOT(sendData(QList<QPair<QString,Snake*> >,QList<Food*>)));

        connect(this, SIGNAL(transmit(Client*,QList<QString>)), client, SLOT(transmit(Client*,QList<QString>)));

        connect(client, SIGNAL(changeDirect(int,QString)), this, SLOT(setDirect(int,QString)));
        connect(client, SIGNAL(disconnected(Client*)), this, SLOT(removeClient(Client*)));
        connect(this, SIGNAL(endOfGame(QString,QString)), client, SLOT(gameOver(QString,QString)));                  //end of the game

        thread->start();

        WRITELOCK(threadPool.insert(client,thread));
    }
Exemple #7
0
// slots
void Widget::change_cards(void) 
{
	int c=0;
	unsigned int i;

run++;
qDebug() << "run" << run;
if( run >= MAX_RUN ) { endOfGame();}

/*! \todo automatiszer lees autres modes de jeux*/
else {
  while (!chg.isEmpty()) 
	 { c=chg.takeLast();
	   for (i=0;i < nbElementsPaquet(&joueur.main);i++)
	    if (c == conventionCarte(&joueur.main, i+1))
	    {
	      popMain(&joueur , i+1, &jeu);
	      pushMain(&joueur , &jeu);
	      switch_cards(c,-1);
	    }
	   }
  recup_cards();
}
}
Exemple #8
0
void Nim::playNim() {
	if (_vm->_wonNim) { // Already won the game.
		_vm->_dialogs->displayScrollChain('Q', 6);
		return;
	}

	if (!_vm->_askedDogfoodAboutNim) {
		_vm->_dialogs->displayScrollChain('Q', 84);
		return;
	}

	_vm->_dialogs->displayScrollChain('Q', 3);
	_playedNim++;
	
	_vm->_graphics->saveScreen();
	_vm->fadeOut();

	CursorMan.showMouse(false);
	setup();
	board();
	//CursorMan.showMouse(true);

	do {
		
		startMove();
		if (_dogfoodsTurn)
			dogFood();
		else {
			CursorMan.showMouse(true);
			takeSome();
			CursorMan.showMouse(false);
		}
		_stones[_row] -= _number;
		showChanges();
	} while (_stonesLeft != 0);

	endOfGame(); // Winning sequence is A1, B3, B1, C1, C1, btw.

	_vm->fadeOut();
	_vm->_graphics->restoreScreen();
	_vm->_graphics->removeBackup();
	_vm->fadeIn();
	CursorMan.showMouse(true);

	if (_dogfoodsTurn) {
		// Dogfood won - as usual.
		if (_playedNim == 1)   // Your first game.
			_vm->_dialogs->displayScrollChain('Q', 4); // Goody! Play me again?
		else
			_vm->_dialogs->displayScrollChain('Q', 5); // Oh, look at that! I've won again!
		_vm->decreaseMoney(4); // And you've just lost 4d!
	} else {
		// You won - strange!
		_vm->_dialogs->displayScrollChain('Q', 7);
		_vm->_objects[kObjectLute - 1] = true;
		_vm->refreshObjectList();
		_vm->_wonNim = true;
		_vm->_background->draw(-1, -1, 0); // Show the settle with no lute on it.
		
		// 7 points for winning!
		_vm->incScore(7);
	}

	if (_playedNim == 1) {
		// 3 points for playing your 1st game.
		_vm->incScore(3);
	}
}
Exemple #9
0
void insertaObstaculos()
{

	// Update the games sprite objects		
	spriteManager->update();
	chuletasStep++;
	if (chuletasStep >16)
		chuletasStep = 1;
	chuletas->update(chuletasStep);
	tankStep++;
	if (tankStep >16)
		tankStep = 1;
	tank->update(tankStep);

	switch(g_Input.part)
	{
	case 1:
		generaHearth();
		generaMaxiCoin();
		generaClaws(50);
		generaMiniCoins(30);
		//generaTank(40);
		break;
	case 2:
		generaHearth();
		generaMaxiCoin();
		generaClaws(40);
		generaMiniCoins(30);
		//generaChuletas(40);
		break;
	case 3:
		generaHearth();
		generaMaxiCoin();
		generaClaws(50);
		generaMiniCoins(30);
		generaTnts(50);
		break;
	case 4:
		generaHearth();
		generaMaxiCoin();
		generaClaws(40);
		generaMiniCoins(20);
		generaTnts(40);
		generaTank(50);
		break;
	case 5:
		generaHearth();
		generaMaxiCoin();
		generaClaws(40);
		generaMiniCoins(20);
		generaTnts(40);
		generaTank(40);
		break;
	case 6:
		generaHearth();
		generaMaxiCoin();
		generaClaws(50);
		generaMiniCoins(20);
		generaTnts(50);
		generaTank(30);
		break;
	case 7:
		generaHearth();
		generaMaxiCoin();
		generaClaws(40);
		generaMiniCoins(10);
		generaTnts(40);
		generaTank(30);
		break;
	case 8:
		generaHearth();
		generaMaxiCoin();
		generaClaws(50);
		generaMiniCoins(10);
		generaTnts(50);
		generaChuletas(70);
		g_Input.corazonReady = true;
		break;
	case 9:
		generaHearth();
		generaMaxiCoin();
		generaClaws(40);
		generaMiniCoins(10);
		generaTnts(40);
		generaChuletas(30);
		g_Input.corazonReady = true;
		break;
	case 10:
		generaHearth();
		generaMaxiCoin();
		generaClaws(40);
		generaMiniCoins(10);
		generaTnts(40);
		generaChuletas(20);
		g_Input.corazonReady = true;
		break;
	default:
		endOfGame();
		break;
	}

	//check for collitions
	//claw collition
	for (int j=0; j<10; j++)
	{
		if (garras[j]!= NULL && garras[j]->animXLeft > 0)
		{
			if(BaconCollide(garras[j]->animXLeft+20, garras[j]->animXRight, garras[j]->animYTop, garras[j]->animYBottom))
			{
				g_Input.setLifes(g_Input.getLifes()-1);
				BaconBlend();
				if (g_Input.getSound())
					g_Input.playClash();
				garras[j]->animXLeft = garras[j]->animXLeft - 400;
				garras[j]->animXRight = garras[j]->animXRight - 400;
				
			}
		}
	}
	//miniCoins collition
	for (int j=0; j<20; j++)
	{
		if (miniCoins[j]!= NULL && miniCoins[j]->animXLeft > 0)
		{
			if(BaconCollide(miniCoins[j]->animXLeft, miniCoins[j]->animXRight, miniCoins[j]->animYTop, miniCoins[j]->animYBottom))
			{
				if (g_Input.getSound() && miniCoins[j]->s_MaterialCel->GetAnimCelID()==0)
					g_Input.playCoin();
				miniCoins[j]->setPause(false);
			}
		}
	}
	//heart collition
	if (corazon->animXLeft > 0)
	{
		if (BaconCollide(corazon->animXLeft, corazon->animXRight, corazon->animYTop, corazon->animYBottom))
		{
			g_Input.setLifes(g_Input.getLifes()+1);
			if (g_Input.getSound())
				g_Input.playLife();
			corazon->animXLeft = corazon->animXLeft - 400;
			corazon->animXRight = corazon->animXRight - 400;
		}
	}
	//tnt collition
	for (int j=0; j<10; j++)
	{
		if (tnts[j]!= NULL && tnts[j]->animXLeft > 0)
		{
			if(BaconCollide(tnts[j]->animXLeft, tnts[j]->animXRight, tnts[j]->animYTop, tnts[j]->animYBottom))
			{
				g_Input.setLifes(g_Input.getLifes()-1);
				BaconBlend();
				//s3eAudioPlay(CRASH_SONG);
				if (g_Input.getSound())
					g_Input.playClash();
				tnts[j]->animXLeft = tnts[j]->animXLeft - 400;
				tnts[j]->animXRight = tnts[j]->animXRight - 400;
			}
		}
	}
	//coin 200 collition
	if (maxiCoin->animXLeft > 0)
	{
		if(BaconCollide(maxiCoin->animXLeft, maxiCoin->animXRight, maxiCoin->animYTop, maxiCoin->animYBottom))
		{
			//g_Input.setLifes(g_Input.getLifes()-1);
			//BaconBlend();
			if (g_Input.getSound())
				g_Input.playMaxiCoin();
			g_Input.setCoins(g_Input.getCoins()+200);
			maxiCoin->animXLeft = maxiCoin->animXLeft - 400;
			maxiCoin->animXRight = maxiCoin->animXRight - 400;
		}
	}
	//tank collition
	if (tank->animXLeftT > 0)
	{
		if (BaconCollide2(tank->animXLeftT, tank->animXRightT, tank->animYTopT, tank->animYBottomT, 20))
		{
			g_Input.setLifes(g_Input.getLifes()-1);
			BaconBlend();
			if (g_Input.getSound())
				g_Input.playClash();
			tank->animXLeftT = tank->animXLeftT - 600;
			tank->animXRightT = tank->animXRightT - 600;
		}
	}
	//chuletas collition
	if (chuletas->animXLeft > 0)
	{
		if (BaconCollide2(chuletas->animXLeft, chuletas->animXRight, chuletas->animYTop, chuletas->animYBottom, 90))
		{
			g_Input.setLifes(g_Input.getLifes()-1);
			BaconBlend();
			if (g_Input.getSound())
				g_Input.playClash();
			chuletas->animXLeft = chuletas->animXLeft - 800;
			chuletas->animXRight = chuletas->animXRight - 800;
		}
	}
}