Chutes & Ladders - Void & Int Problem

Hi! So I am trying to make a chutes & ladders game that has two players and the positions go up to 100. I am having trouble with the whoWon void. On the section with the "resetting game variables" (line 32) I have been told that the whoWon cannot == 0 when it's a void and has to be an integer?

If someone could help me understand what I would do to make the code run, that would be awesome!

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
#include <iostream>
#include <cctype>
#include <string>
#include <cstdlib>

using namespace std;

void RollDiceAndMove(); //game rolls dice, and moves the player
void CheckChutes(); // game checks to see if player landed on chutes
void CheckLadders(); // game checks to see if player landed on ladders
void whoWon(); // game checkes to see if anyone has won yet
void welcomeMessage(); // shows display message, ans asks if they want to play
void goodbyeMessage(); // tells user goodbye after game

int main()
{
	bool player1Turn = 0; //switches between player1 and player2's turns
	string player1Name, player2Name; // gets names from both players
	int answer = 'y'; // answer when asked if players want to play
	int Player1Loc = 0, Player2Loc = 0; // location of the players

	void welcomeMessage(int answer);

	cout << "please enter your names: " << endl;
	cout << "Player1: ";
	cin >> player1Name;
	cout << "Player2: ";
	cin >> player2Name;

	while(answer == 'y'){
		//reset game variables
		while(whoWon ( ) == 0){
			if(Player2Loc != 100 && Player2Loc != 100){
				cout << player1Name << ": Its your turn." << endl;
				void RollDiceAndMove();
				void CheckChutes();
				void CheckLadders();
				//number they are on
				player1Turn = false;
			}
			else{
				cout << player2Name << ": Its your turn." << endl;
				void RollDiceAndMove();
				void CheckChutes();
				void CheckLadders();
				player1Turn = true;
			}
		}
	}
	void goodbyeMessage();

	return 0;
}

void welcomeMessage(int choice)
{
	// shows welcome message, and asks if they want to play
    // IN: choice
	cout << "Welcome to the chutes and ladders game. Both " << endl;
	cout << "players start at 0, and the first one to 100 " << endl;
	cout << "wins the game. However, if you land on a chute," << endl;
	cout << "your player will move down, but a ladder " << endl;
	cout << "will move you up. Do you want to play?" << endl;
	cout << "press 'y' to play, or 'n' to quit." << endl;
	cin >> choice;
}

void goodbyeMessage()
{
	// shows the goodbye message
	cout << "Thanks for playing!" << endl;
}

void RollDiceAndMove (int Playerpos, int NewPos = 0, int RollDie = 0)
{
	// rolls dice, and moves the player
	switch(NewPos = 0)
	{
		for (int Player1pos = 0; Player1pos < 100; Player1pos++)
		{
			RollDie = rand() % 6 + 1; 
			Player1pos = 1;
			NewPos = Player1pos + RollDie;
			CheckChutes();
			CheckLadders();
			cout << "Your new location is: " << NewPos << endl;
			break;
		}
		for (int Player2pos = 0; Player2pos < 100; Player2pos++)
		{
			RollDie = rand() % 6 + 1;
			Player2pos = 1;
			NewPos = Player2pos + RollDie;
			CheckChutes();
			CheckLadders();
			cout << "Your new location is: " << NewPos << endl;
			break;
		}
	}
}
void whoWon(int NewPos)
{
	// determines if user has won, when their location is at 100
	int RollDiceAndMove();
	if (NewPos == 100){
		cout << "You won!!" << endl;
	}
}
void CheckChutes (int NewPos)
{
	//checks if chutes, if yes, then moves player backwards
	if (NewPos == 98)
		NewPos = 78;
	else if (NewPos == 95)
		NewPos = 75;
	else if (NewPos == 93)
		NewPos = 70;
	else if (NewPos == 87)
		NewPos = 24;
	else if (NewPos == 64)
		NewPos = 60;
	else if (NewPos == 62)
		NewPos = 19;
	else if (NewPos == 56)
		NewPos = 53;
	else if (NewPos == 49)
		NewPos = 11;
	else if (NewPos == 48)
		NewPos = 26;
	else if (NewPos == 16)
		NewPos = 6;
	else
		NewPos = NewPos;
	cout << "You landed on chutes, and have to move down" << endl;
}

void CheckLadders (int NewPos)
{
	// checks if ladders. if yes, moves player forwards
	if (NewPos == 1)
		NewPos = 38;
	else if (NewPos == 4)
		NewPos = 14;
	else if (NewPos == 9)
		NewPos = 21;
	else if (NewPos == 23)
		NewPos = 44;
	else if (NewPos == 28)
		NewPos = 84;
	else if (NewPos == 36)
		NewPos = 44;
	else if (NewPos == 51)
		NewPos = 66;
	else if (NewPos == 71)
		NewPos = 90;
	else if (NewPos == 80)
		NewPos = 100;
	else
		NewPos = NewPos;
	cout << "You landed on ladders, and get to move up the board!" << endl;
}
Last edited on
@ChrisH10

You have most of your functions declared with empty function calls, but have the actual functions receiving ints in the call. They are not the same.

@whitenite1

What should I do to fix this issue? Create new integers?
On line 8, you state that RollDiceAndMove is a function that returns nothing and takes no arguments. Then on line 74 you define a new function (also called RollDiceAndMove, overloading the previous one), that takes several ints as parameters. These are different; if you want them to refer to the same function, the parameters and return values must match.

Also, on lines 35, etc, you aren't calling any functions, you are just creating another prototype like lines 8, etc. Go re-read a tutorial or guide on functions to figure out how to call them.
Topic archived. No new replies allowed.