I have a C++ program that I can not get to run. Can you
please help me find the problem. The code is listed below.
*************************************/
Code:#include <iostream> using namespace std; // Let's define constants to identify the sides const bool HUMAN_PLAYER = true; const bool COMPUTER_PLAYER = false; // Function Prototypes - Messages to the player void welcomeMessage(); void congratulateWinner( bool theWinner ); void gameStatus( int pileSize ); // Function Prototypes - User Interface // Decide who gets to play first bool pickFirstPlayer(); // Function Prototypes - Moves int getHumanPlayerMove( int pileSize ); int getComputerPlayerMove( int pileSize ); // Function Prototypes - Predicates bool isGameOver( int pileSize ); // The main NIM Program int main() { // Start by saying hello to the player welcomeMessage(); // Now, let's ask the human player who goes first bool currentPlayer = pickFirstPlayer(); // Now that we know who plays first, we can start // the game by initializing the heap of sticks int nimSticks = 22; // CORE GAME LOOP: as long as there are sticks left, // we'll need to get moves from the opponents while( !isGameOver( nimSticks) ) { // Show the status of the game gameStatus( nimSticks ); // Let's get a move from the current player int currentPlayerMove; if( currentPlayer == HUMAN_PLAYER ) currentPlayerMove = getHumanPlayerMove( nimSticks ); else currentPlayerMove = getComputerPlayerMove( nimSticks ); // Now that we know how many sticks the current // player wants to take, we remove them from the // pile nimSticks -= currentPlayerMove; // Do we have a winner? if( isGameOver( nimSticks ) ) congratulateWinner( currentPlayer ); // If there are sticks left in the pile, it is // now the other player's turn else currentPlayer = !currentPlayer; } // And we're done! return 0; } // welcomeMessage() - Say Hi to the player void welcomeMessage() { cout << "Welcome to the Game of Single-Pile Nim!" << endl; cout << "---------------------------------------" << endl << endl; return; } // congratulateWinner() - Tell the player who won void congratulateWinner( bool theWinner ) { // If so, who has just taken the last stick? if( HUMAN_PLAYER == theWinner ) { cout << "You win. Congratulations!" << endl; } else { cout << "I win! Better luck next time..." << endl; } return; } // gameStatus() - Tell the player how many sticks // are left in the pile before a turn void gameStatus( int pileSize ) { int stickStatus = pileSize; cout << "There are/is " <<stickStatus << " stick(s) left." <<endl<<endl; return; } // pickFirstPlayer() - Ask the user who goes first bool pickFirstPlayer() { int count = 2; int compTurn; char start; cout << "IT'S NIM TIME!!!!!!" <<endl<<endl; while(count >= 0) { cout << "Who starts? [H]uman or [C]omputer?" <<endl; cin >> start; switch(start) { case 'C': case 'c':cout << "Computer start." <<endl; count = -1; compTurn = true; break; case 'H': case 'h':cout << "Human start." <<endl; count = -1; true;compTurn = true; break; default:cout << count << " try(s)left" <<endl; } if(count == 0) cout << "NO GO!!!!! Sorry." <<endl<<endl; --count; } //return(compTurn); return true; } // getHumanPlayerMove() - Ask the player for a number // of sticks to take out of the pile int getHumanPlayerMove( int pileSize ) { int pickstick; int no = 3; int nimSticks = pileSize; while(no != 0) { cout << "Take how many sticks?: "; cin >> pickstick; cout << endl; if(1 <= pickstick && pickstick <= 4) { nimSticks -= pickstick; cout<< "Number of sticks left: " << nimSticks << endl << endl; /*if(winner() == 1) { cout << "The hu-man wins!" <<endl; exit(0); }*/ no = 0; } else { no--; cout << "Error. " << no << " trys left. " <<endl; } } return 0; } // getComputerPlayerMove() - Let the machine play int getComputerPlayerMove( int pileSize ) { int nimSticks = pileSize; int pick = nimSticks - nimSticks % (1 + 4); int just = nimSticks - pick; if (just == 0) { just = 1 + rand() % (4 - 1 + 1); pick -= just; } nimSticks -= just; cout << "Computer takes " << just <<" stick(s)." <<endl; cout << "Their are " << pick << " left." <<endl; /*if(winner() == 1) { cout << "The COMPUTER wins!" <<endl; exit(0); }*/ return 0; } // isGameOver() - Have we reached endgame conditions? // if there are no sticks left, yes bool isGameOver( int pileSize ) { if(int nimSticks = true) cout<< "The game is over." <<endl<<endl; return true;



LinkBack URL
About LinkBacks


