c++将用户输入的值赋给另一个变量,并在get循环中交换值



我想我可以从你们那里得到一点帮助,所以我试图交换我从用户输入中得到的玩家的名字。我尝试将其中一个玩家的名字分配到变量current_name_turn中。所以,每次它得到循环,current_name_turn将改变值为其他玩家的名字,无论是使用if条件或交换,我可以使用两者。但这里似乎我的current_name_turn的值没有被抛出。或者我没有把值传递给它。所以,我需要一个更正或建议:)

#include <iostream>
using namespace std;
bool game_is_playing = true;
string name[] = {"x","o"};
string player_1, player_2;
string current_name_turn = player_1;
string ask_player_name_1(string player_1){
cout << " Player 1's name: ";
cin >> name[0];
player_1 = name[0];
return player_1;
}
string ask_player_name_2(string player_2){
cout << " Player 2's name: ";
cin >> name[1];
player_2 = name[1];
return player_2;
}
void display_board(){
cout << player_1 + " (X) - (O) " + player_2 << endl;
}
void player_turn(){
int position;
cin.clear();
cout << current_name_turn << "'s turn." << endl;
cout << "Enter something: " << endl;
cin << position;
}
void switch_player_turn(){
if (current_name_turn == player_1){
current_name_turn = player_2;
} else if (current_name_turn == player_2){
current_name_turn = player_1;
}
}
void play_the_game(){
display_board();
while(game_is_playing){
player_turn();
switch_player_turn();
}
}
int main()
{
player_1 = ask_player_name_1(player_1);
player_2 = ask_player_name_2(player_2);
play_the_game();
return 0;
}

这是在输入的名称之间切换的工作代码:

#include <iostream>
using namespace std;
bool game_is_playing = true;
string name[] = {"x","o"};
string player_1, player_2;
string current_name_turn = player_1;
string ask_player_name_1(string player_1){
cout << " Player 1's name: ";
cin >> name[0];
player_1 = name[0];
current_name_turn = player_1;//added this line to set the current_name_turn
return player_1;
}
string ask_player_name_2(string player_2){
cout << " Player 2's name: ";
cin >> name[1];
player_2 = name[1];
return player_2;
}
void display_board(){
cout << player_1 + " (X) - (O) " + player_2 << endl;
}
void player_turn(){
int position;
cin.clear();
cout << current_name_turn << "'s turn." << endl;
cout << "Enter something: " << endl;
cin >> position;
}
void switch_player_turn(){
if (current_name_turn == player_1){
current_name_turn = player_2;
} else if (current_name_turn == player_2){
current_name_turn = player_1;
}
}
void play_the_game(){
display_board();
while(game_is_playing){
player_turn();
switch_player_turn();
}
}
int main()
{
player_1 = ask_player_name_1(player_1);
player_2 = ask_player_name_2(player_2);
play_the_game();
return 0;
}

下面我删除了一些不必要的代码重复,所以现在你会有一个更紧凑的版本。在这个精简版本中,你只需要传递播放器的索引。

<<p>紧凑版本/strong>
#include <iostream>
using namespace std;
bool game_is_playing = true;
string name[] = {"x","o"};
string player_1, player_2;
string current_name_turn = player_1;
//now we have one ask_player_name function instead of two which reduces the size of the program
string ask_player_name(int playerNumber){
cout << " Player " <<playerNumber<<"'s name: ";
cin >> name[playerNumber];
current_name_turn = name[playerNumber];
return name[playerNumber];
}
void display_board(){
cout << player_1 + " (X) - (O) " + player_2 << endl;
}
void player_turn(){
int position;
cin.clear();
cout << current_name_turn << "'s turn." << endl;
cout << "Enter something: " << endl;
cin >> position;
}
void switch_player_turn(){
if (current_name_turn == player_1){
current_name_turn = player_2;
} else if (current_name_turn == player_2){
current_name_turn = player_1;
}
}
void play_the_game(){
display_board();
while(game_is_playing){
player_turn();
switch_player_turn();
}
}
int main()
{
player_1 = ask_player_name(0);
player_2 = ask_player_name(1);
play_the_game();
return 0;
}

相关内容

最新更新