PROGRAM WILL NOT COMPILE

I need to compose a rock, paper, scissor program but when I try to compile I get a error that reads rockPaperScissors.cpp:(.text+0x111): undefined reference to `displayRules()' can someone help with this?

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
#include<iostream>
#include<cstdlib>
#include<iomanip>
using namespace std;
enum objectType {ROCK, PAPER, SCISSORS};
//Function prototypes 
void displayRules(); 
objectType retrievePlay(char selection);
bool validSelection(char selection); 
void convertEnum(objectType object); 
objectType winningObject(objectType play1, objectType play2); 
void gameResult(objectType play1, objectType play2, int& winner); 
void displayResults(int gCount, int wCount1, int wCount2);
int main() 
{ 
							
						    
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; 
gameCount = 0;
winCount1 = 0;
winCount2 = 0;



displayRules(); 
cout << "Enter Y/y to play the game: "; 
cin >> response; 
cout << endl; 
while (response == 'Y' || response == 'y') 
{ 
cout << "Player 1 enter your choice: "; 
cin >> selection1; 
cout << endl;
cout << "Player 2 enter your choice: ";  
cin >> selection2; 
cout << endl;

if (validSelection(selection1) && validSelection(selection2)) 
{ 
play1 = retrievePlay(selection1); play2 = retrievePlay(selection2); 
gameCount++; 
gameResult(play1, play2, gamewinner); 
if (gamewinner == 1) 
winCount1++; 
else if 
(gamewinner == 2) 
winCount2++; 
}//end if

cout << "Enter Y/y to play the game: "; 
cin >> response; 
cout << endl; 
}//end while
displayResults(gameCount, winCount1, winCount2); 
return 0; 
}
Last edited on
You declare some functions up top (displayRules, retrievePlay, etc.), but they're not defined anywhere in the code you posted. Do you have more code you haven't posted? If not, you need to write the actual code for those functions, not just their headers.
Thank you, I got it to work I had to finish writing the code
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
#include<iostream>
#include<cstdlib>
#include<iomanip>
using namespace std;
enum objectType {ROCK, PAPER, SCISSORS};
//Function prototypes 
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 select 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; 
	cout << "Enter R or r to select Rock, P or p to select Paper, and S or s to select Scissors." << endl;


}
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;
}
}

bool validSelection(char selection)
{
	switch (selection)
	 { 
	 case 'R': 
	 case 'r': 
	 case 'P': 
	 case 'p': 
	 case 'S': 
	 case 's': 
	 return true; 
	 	default: 
	 return false;
	  }
	
	
 } 
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;

}
int main() 
{ 
							
						    
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; 
gameCount = 0;
winCount1 = 0;
winCount2 = 0;



displayRules(); 
cout << "Enter Y/y to play the game: "; 
cin >> response; 
cout << endl; 
while (response == 'Y' || response == 'y') 
{ 
cout << "Player 1 enter your choice: "; 
cin >> selection1; 
cout << endl;
cout << "Player 2 enter your choice: ";  
cin >> selection2; 
cout << endl;

if (validSelection(selection1) && validSelection(selection2)) 
{ 
play1 = retrievePlay(selection1); play2 = retrievePlay(selection2); 
gameCount++; 
gameResult(play1, play2, gamewinner); 
if (gamewinner == 1) 
winCount1++; 
else if 
(gamewinner == 2) 
winCount2++; 
}//end if

cout << "Enter Y/y to play the game: "; 
cin >> response; 
cout << endl; 
}//end while
displayResults(gameCount, winCount1, winCount2); 
return 0; 
}
Topic archived. No new replies allowed.