Beispiel #1
0
void clickedButton(GtkWidget *widget, GtkWidget **buttons) {
    if(strlen(gtk_button_get_label(GTK_BUTTON(widget))) != 1) {
        gtk_button_set_label(GTK_BUTTON(widget), "X");

        GtkWidget *i = 0;
        whoWon(buttons);

        while(1) {
            i = moveComputer(buttons);
            if(strlen(gtk_button_get_label(GTK_BUTTON(i))) != 1) {
                gtk_button_set_label(GTK_BUTTON(i), "O");
                break;
            }
        }
    }
    whoWon(buttons);
}
Beispiel #2
0
int main() {
	char playAgain;

	do {
		nodes_expanded = 0;
		//initialize the board.
		char *board = newBoard();

		//get player and computer characters.
		char playerPiece = askUser("\nPlease choose your character (x or o): ", X, O);
		char computerPiece = getOpponentPiece(playerPiece);

		//check if player wants to play first.
		char ch = askUser("\nDo you want to play first ? (y or n): ", 'y', 'n');
		if(ch == 'y') {
			makePlayerMove(board, playerPiece);			
		}
		else if(ch == 'n') {
		}

		char winner;
		int turn = COMPUTER;

		//game loop.
		while(!isFilled(board) && (winner = whoWon(board)) == NONE) {

			if(turn == COMPUTER) {
				makeComputerMove(board, computerPiece);
				turn = PLAYER;
			}
			else {
				makePlayerMove(board, playerPiece);
				turn = COMPUTER;
			}
		}

		printBoard(board);

		//print results.
		if(winner == playerPiece) {
			printf("\n$ Congratulations! you have won. $\n");
		}
		else if(winner == NONE) {
			printf("\n* The game is a draw. *\n");
		}
		else {
			printf("\n@ You Lose!! @\n");
		}

		printf("\nNumber of nodes expanded: %d", nodes_expanded);

		//ask if user wants to play again.
		playAgain = askUser("\n Do you want to play again? (y or n): ", 'y', 'n');
	}while(playAgain == 'y');

	return 0;
}
void GameManager::runda( int zaczyna ) {
	//BEGGINER_INDEX JEST INDEXEM Z GRAJACYCH!
	std::vector<Gracz> *pgracze;
	int zaczyna_pierw = zaczyna;
	if( stol.cardsOnTable.size() == 0 && stol.pool == 0 ) { ///pierwszy ziomek licytuje w ciemno
		zmienWlasnosci( zaczyna, grajacych(0).at( zaczyna ).player->odzywka( stol ) );
		zaczyna++;
	}
	else if( stol.cardsOnTable.size() == 0 && stol.pool != 0 ) { ///drugi ziomek licytuje w ciemno
		zmienWlasnosci( zaczyna, grajacych(0).at( zaczyna ).player->odzywka( stol ) );
		zaczyna++;
		//
		rozdajKarty(); //rozdaj gracza
		//
		int z = 0; //index tych sprawdzanych od dolu (po przekroczeniu indexow)
		if( grajacych(0).size() > 2 ) {
			pgracze = &grajacych(0);
			for( unsigned int i = 0; i < pgracze->size() - 2; i++ ) { ///reszta licytuje w pol ciemno xd
				if( zaczyna < pgracze-> size() ) {
					zmienWlasnosci( zaczyna, pgracze->at( zaczyna ).player->odzywka( stol ) );
					zaczyna++;
				}
				else if( zaczyna >= pgracze->size() - 1 ) {
					zmienWlasnosci( z, pgracze->at( z ).player->odzywka( stol ) );
					z++;
				}
			}
		}
		rozdajKarty(); //rozdaje na stol pierwsze 3
	}
	///licytacja ponownie
	//nwm co jesli jest tlk 2 licytujacych
	if( stol.cardsOnTable.size() == 3 ) {
		pgracze = &grajacych(0);
		for( unsigned int i = 0; i < pgracze->size(); i++ ) {
			zmienWlasnosci( i, pgracze->at( i ).player->odzywka( stol ) );
		}
	}
	
	if( stol.cardsOnTable.size() == 5 ) {
		Gracz *gracz_ptr = &whoWon();
		std::cout << "Wygral gracz ";
		gracz_ptr->player->przedstawSie();
		std::cout << " jego bilans " << gracz_ptr->money << std::endl << std::endl;
		gracz_ptr->wygrane++;

			//metoda wskazuje tego dobrego a reszte pasuje;
	}
}
Beispiel #4
0
int minimax(char *board, char playerPiece, char computerPiece, int isMaximizer, int alpha, int beta) {

	nodes_expanded ++;

	char winner = whoWon(board);

	/* Handle leaf node cases */

	//if i won.
	if(winner == playerPiece) {
		return 1;
	}
	//if my opponent won.
	else if(winner == computerPiece) {
		return -1;
	}
	//if it is a draw.
	else if(isFilled(board)) {
		return 0;
	}

	/* Minmax backtracking */

	int i, move, max, min;

	max = -2;
	min = 2;
	move = -1;

	for(i = 0; i < 9; i ++) {	
		if(board[i] == NONE) {			/* for each empty cell */

			if(isMaximizer)
				board[i] = playerPiece;
			else
				board[i] = computerPiece;

			int val = minimax(board, playerPiece, computerPiece, 1 - isMaximizer, alpha, beta);

			board[i] = NONE;

			if(isMaximizer) {

				if(val > max) {
					max = val;
					beta = max;
				}

				// 1 is the maximum possible value so break the search.
				// or max maybe greater than alpha.
				if(val == 1 || max >= alpha) {
					break;
				}
			}
			else {
				if(val < min) {
					min = val;
					alpha = min;
				}

				// -1 is the manimum possible value so break the search.
				if(val == -1 || min <= beta) {
					break;
				}
			}
		}
	}	
	if(isMaximizer)
		return max;
	else
		return min;
}
Beispiel #5
0
int main(void){
  printf("WELCOME TO HENRYS BLACKJACK\n");
  //player1
  struct player player1;
  printf("Type name for player1: ");
  scanf("%s",player1.name);
  getchar();
  player1.playerHand = NULL;
  player1.cardValue = 0;
  player1.startCards = 2;
  printf("utan ptr: %d\n", player1.startCards);
  //player2
  struct player player2;
  printf("Type name for player2: ");
  scanf("%s",player2.name);
  getchar();
  player2.playerHand = NULL;
  player2.cardValue = 0;
  player2.startCards = 2;
  //computer
  struct player comp;
  strcpy(comp.name, "the dealer");
  comp.playerHand = NULL;
  comp.cardValue = 0;
  comp.startCards = 1;

  int cardCounter = 0;
  struct card *deck = NULL;
  deck = createDeck(deck);    // deck created
  int i;
  for(i=0; i<20; i++)
    shuffleDeck(deck);   // deck shuffled

  /* Name giving and first cards dealing  */
  printf("\n\nHand of %s:\n", player1.name);
  dealCards(&player1, deck, &cardCounter);
  printCards(player1.playerHand, player1.startCards);
  printf("\n\nHand of %s: \n", player2.name);
  dealCards(&player2, deck, &cardCounter);
  printCards(player2.playerHand, player2.startCards);

  printf("\n\nHand of %s: \n", comp.name);
  dealCards(&comp, deck, &cardCounter);
  printCards(comp.playerHand, comp.startCards);


  /* Hit or stay face  */
 printf("------------------------------------------------------\n");
 player1.cardValue = actDealer(player1,deck, &cardCounter,22);
 printf("------------------------------------------------------\n");
 player2.cardValue = actDealer(player2,deck, &cardCounter,22);
 printf("------------------------------------------------------\n");
    if(player1.cardValue  == -1 && player2.cardValue == -1){  // if both loses dealer does not have to continue
        printf("Both players lost!\n");
        printf("--------------------Game-finished---------------------\n");
        goto masteJagKompletteraNufragetecken;
    }
 comp.cardValue = actDealer(comp,deck,&cardCounter,17);
 printf("------------------------------------------------------\n");
 whoWon(player1, player2, comp);
 printf("--------------------Game-finished---------------------\n");

masteJagKompletteraNufragetecken:
/* Freeing memory */
free(deck);
free(player1.playerHand);
free(player2.playerHand);
free(comp.playerHand);
return 0;
}