Rock, Paper, Scissors Program Help

Hey guys,
I am very new to C++, just started learning it and I'm trying to build a program that plays against you in a game of rock, paper, scissors. To start, when I run the game, the player needs to enter their name. There is a 4 option menu, start game, change name, view scoreboard(naturally this stores the players scores and rank). This is the code I am going to alter, obviously getting rid of the player 2 option and some how randomly generating an outcome against the player. I am very confused as to where to start and more over, how to actually go about creating this program. Currently learning HTML as well so I'm doing a lot of work on the side, any help is appreciate,thanks guys.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
  #include <iostream>
 
using namespace std;

enum objectType{ROCK, PAPER, SCISSORS};

	// Define prototypes for the following functions

// prototype for displayRules function
void displayRules();
// prototype for retrievePlay function
objectType retrievePlay(char selection);
// prototype for validSelection function
bool validSelection(char selection);
// prototype for convertEnum function 
void convertEnum(objectType object);
// prototype for winningObject function 
objectType winningObject(objectType play1, objectType play2);
// prototype for gameResult function 
void gameResult(objectType play1, objectType play2, 
                int& winner);
// prototype for displayResults function 
void displayResults(int gCount, int wCount1, int wCount2);


void displayResults(int gCount, int wCount1, int wCount2);

int main()
{
        //Step 1
    int gameCount; //variable to store the number of 
                   //games played
    int winCount1; //variable to store the number of games 
                   //won by player 1
    int winCount2; //variable to store the number of games 
                   //won by player 2
    int gamewinner;
    char response;  //variable to get the user's response to 
                    //play the game
    char selection1;
    char selection2;
    objectType play1;  //player1's selection
    objectType play2;  //player2's selection

        //Initialize variables; Step 2
    gameCount = 0;
    winCount1 = 0;
    winCount2 = 0;
  
    displayRules();                               //Step 3
	
    cout << "Enter Y/y to play the game: ";       //Step 4
    cin >> response;                              //Step 5
    cout << endl;
  
    while (response == 'Y' ||  response == 'y')   //Step 6
    {
        cout << "Player 1 enter your choice: ";   //Step 6a
        cin >> selection1;                        //Step 6b
        cout << endl;

        cout << "Player 2 enter your choice: ";   //Step 6c
        cin >> selection2;                        //Step 6d
        cout << endl;

            //Step 6e
        if (validSelection(selection1) 
               && validSelection(selection2))
        {
            play1 = retrievePlay(selection1);
            play2 = retrievePlay(selection2);
            gameCount++;                          //Step 6e.i
            gameResult(play1, play2, gamewinner); //Step 6e.ii

            if (gamewinner == 1)                  //Step 6e.iii
                winCount1++;
            else if (gamewinner == 2)
                winCount2++;
        }//end if

        cout << "Enter Y/y to play the game: ";   //Step 6f
        cin >> response;                          //Step 6g
        cout << endl;
    }//end while

    displayResults(gameCount, winCount1, 
                   winCount2);                    //Step 7

    return 0;
}//end main

void displayRules()
{
    cout << "  Welcome to the game of Rock, Paper, " 
         << "and Scissors." << endl;
    cout << "  This is a game for two players. For each "
         << "game, each" << endl;   
    cout << " player selects one of the objects, Rock, "
         << "Paper or Scissors." << endl;
    cout << " The rules for winning the game are: " << endl;
    cout << "1. If both players selects the same object, it "
         << "is a tie." << endl;
    cout << "2. Rock breaks Scissors: So player who selects "
         << "Rock wins." << endl;
    cout << "3. Paper covers Rock: So player who selects " 
         << "Paper wins." << endl;
    cout << "4. Scissors cuts Paper: So player who selects "
         << "Scissors wins." << endl << endl;
    cout << "Enter R or r to select Rock, P or p to select "
         << "Paper, and S or s to select Scissors." << endl;
}

bool validSelection(char selection)
{
    switch (selection)
    {
    case 'r': 
    case 'R':
    case 'p': 
    case 'P':
    case 's': 
    case 'S': 
        return true;
    default: 
        return false;
    }
}

objectType retrievePlay(char selection)
{
    objectType object;

    switch (selection)
    {
    case 'R': 
    case 'r': 
        object = ROCK;
        break;
    case 'P': 
    case 'p': 
        object = PAPER;
        break;
    case 'S': 
    case 's': 
        object = SCISSORS;
    }

    return object;
}

void convertEnum(objectType object)
{
    switch (object)
    {
    case ROCK: 
        cout << "Rock";
        break;
    case PAPER: 
        cout << "Paper";
        break;
    case SCISSORS:
		cout << "Scissors";
    }				
}

objectType winningObject(objectType play1, objectType play2)
{
    if ((play1 == ROCK && play2 == SCISSORS)
          || (play2 == ROCK && play1 == SCISSORS))
        return ROCK;
    else if ((play1 == ROCK && play2 == PAPER)
              || (play2 == ROCK && play1 == PAPER))
        return PAPER;
    else
        return SCISSORS;
}

void gameResult(objectType play1, objectType play2, 
                int& winner)
{
    objectType winnerObject;

    if (play1 == play2)
    {
        winner = 0;
        cout << "Both players selected ";
        convertEnum(play1);
        cout << ". This game is a tie." << endl;
    }	
    else
    {
        winnerObject = winningObject(play1, play2);

            //Output each player's choice
        cout << "Player 1 selected ";
        convertEnum(play1);
        cout << " and player 2 selected ";
        convertEnum(play2);
        cout << ". ";
     
            //Decide the winner
        if (play1 == winnerObject)
            winner = 1;
        else if (play2 == winnerObject)
            winner = 2;

            //Output the winner
        cout << "Player " << winner << " wins this game."
             << endl;
    }
}

void displayResults(int gCount, int wCount1, int wCount2)
{
    cout << "The total number of plays: " << gCount 
         << endl;
    cout << "The number of plays won by player 1: " 
         << wCount1 << endl;
    cout << "The number of plays won by player 2: " 
         << wCount2 << endl;
}
By trying to alter code you need to understand it, have you watched any videos or anything on C++ yet. Looked at a book or whatever? It's a complicated language to learn from scratch.

Edit: I think you should start with your own project, by making the console do things simpler. Rock Paper Scissors is a simple game but I think that you would benifit from making your own program so you can understand most of this code
Last edited on
I've been taking some online classes. I can understand segments of code, but not entire programs.
closed account (48T7M4Gy)
1
2
3
// Ashleigh Armstrong
// 1-15-2015
// CH 7, pg 477, Rock Paper Scissors 


Looks like you might need to 'beg, borrow, buy or steal' Ashleigh's book. Chapter 7 more than likely does a good job of explaining it. :)

http://ideone.com/jO7XF8

PS Best not pinch the book.
Topic archived. No new replies allowed.