CSCI 131 Techniques of Programming--Spring 2014

    Home | | Syllabus | | Assignments | | Lectures | | Resources

    Solution to Project 2

    //********************************************************
    // proj2.cc
    //    Author: A good solution writer
    //    Date: February 24, 2014
    //    Class: CSCI 131 project2, Professor Royden
    //    Purpose: Plays the children's game: Rock, Paper, Scissors
    //             Each player independently chooses a "weapon"
    //                Rock beats Scissors.
    //                Scissors beat Paper.
    //                Paper beats Rock.
    //                The same option ties and no one wins.
    //    Input: (from proj2.dat file) Inputs decision of each of two playerss
    //    Output: (to proj2.out file) Outputs the winner of the game 
    //*******************************************************
    #include <iostream>  //iostream libraries
    #include <fstream>
    using namespace std;
    
    int main(void) {
    
        char player1;      //Players weapons.  Characters "R"/"P"/"S"
        char player2;
        ofstream outFile;  //File streams for opening files
        ifstream Labin;
    
        Labin.open("proj2.dat");   //open the input file
        if (!Labin ) {             //check for errors
            cout << "** Can't open proj2.dat **" << endl;
            return 1;
        } //if no input file
    
        outFile.open ("proj2.out"); //open the output file
    
        Labin >> player1 >> player2;
        cout << "player1 = " << player1 << ";  player2 = " << player2 << endl;
    
        Labin.close();  //done with input file, so close it
    
        // convert the players choices to upper case.
    
        player1 = toupper(player1);
        player2 = toupper(player2);
    
        if ((player1 != 'R') && (player1 != 'S') && (player1 != 'P')){
            cout << "\"" << player1  << "\"" 
                 << ", an illegal option! Exiting Program." << endl;
            return 1;
        }
        if ((player2 != 'R') && (player2 != 'S') && (player2 != 'P')){
            cout << "\"" << player2  << "\"" 
                 << ", an illegal option! Exiting Program." << endl;
            return 1;
        }
    
        outFile << endl << "---------------------------------------------------------"
     			<< endl;
    
    
        // Check player one and then check all the possible choices
        // for player two and determine the winner.
    
         if (player1 == 'R') {                          //PLAYER ONE CHOOSES ROCK
            outFile << "Player 1 plays Rock ";
            if (player2 == 'R') {
                outFile << "and Player 2 plays Rock." << endl;
                outFile << "It's a tie! Neither wins; neither loses." << endl;
            } //if player two has a rock and ties
            else if (player2 == 'S') {
                outFile << "and Player 2 plays Scissors." << endl;
                outFile << "Player 1 wins! Rock smashes Scissors." << endl;
            } //elsif player two has scissors and loses
            else if (player2 == 'P') {
    	   /*Note: can use just else here */
                outFile << "and Player 2 plays Paper." << endl;
                outFile << "Player 2 wins! Paper covers Rock." << endl;
            } //elsif player two has paper and wins
        } //player one has a ROCK
    
        else if (player1 == 'S') {          //PLAYER ONE CHOOSES SCISSORS
            outFile << "Player 1 plays Scissors ";
            if (player2 == 'S') {
                outFile << "and Player 2 plays Scissors." << endl;
                outFile << "It's a tie! Neither wins; neither loses." << endl;
            } //if player two has scissors and ties
            else if (player2 == 'R') {
                outFile << "and Player 2 plays Rock." << endl;
                outFile << "Player 2 wins! Rock smashes Scissors." << endl;
            } //elsif player two has rock and wins
            else if (player2 == 'P') {
    	   /*Note: can use just else here */
                outFile << "and Player 2 plays Paper." << endl;
                outFile << "Player 1 wins! Scissors cuts Paper." << endl;
            } //elsif player two has paper and loses
    
        } //player one has SCISSORS
    
        else if (player1 == 'P') {             //PLAYER ONE CHOOSES PAPER
           /*Note: can use just else here */
            outFile << "Player 1 plays Paper ";
            if (player2 == 'P') {
                outFile << "and Player 2 plays Paper." << endl;
                outFile << "It's a tie! Neither wins; neither loses." << endl;
            } //if player two has paper and ties
            else if (player2 == 'S') {
                outFile << "and Player 2 plays Scissors." << endl;
                outFile << "Player 2 wins! Scissors cuts paper." << endl;
            } //elsif player two has scissors and wins
            else if (player2 == 'R') {
    	   /*Note: can use just else here */
                outFile << "and Player 2 plays Rock." << endl;
                outFile << "Player 1 wins! Paper covers Rock." << endl;
            } //elsif player two has a rock and loses
        } //player one has PAPER
    
        outFile << "---------------------------------------------------------" 
        		<< endl;
        outFile << endl;
    
        outFile.close();
    
        cout << "All Done!\n";
        return 0;
    
    } //end of ROCK, PAPER, SCISSORS game
    
    

    Home | | Syllabus | | Assignments | | Lectures | | Resources


    Constance Royden--croyden@cs.holycross.edu
    CSCI 131: Techniques of Programming
    Last Modified: February 23, 2014
    Page Expires: October 12, 2014