В настоящее время я работаю над игрой tic tac toe. Мне нужно сделать плату Tic Tac Toe, которая обновляет (показывает «X» и «O».) Каждый раз, когда игрок или компьютер совершают движение. До сих пор мне удалось создать доску, но я не знаю, как эффективно превращать вход пользователя в «X». Первое, что я сделал, это спам:C++: как взять пользовательский ввод и поместить его в плату Tic Tac Toe
if(playerChoice == 1)
block[0][0] = "X";
if(playerChoice == 2)
block[0][1] = "X";
if(playerChoice == 3)
block[0][2] = "X";
if(playerChoice == 4)
block[1][0] = "X";
if(playerChoice == 5)
block[1][1] = "X";
if(playerChoice == 6)
block[1][2] = "X";
if(playerChoice == 7)
block[2][0] = "X";
if(playerChoice == 8)
block[2][1] = "X";
if(playerChoice == 9)
block[2][2] = "X";
Хотя он работает, возможно, это самый худший формат. (Сейчас это фактически ставит выбор игрока в правильные квадраты.)
Вот полный код (Это не завершено и не может даже работать.):
#include <iostream>
#include <ctime>
#include <cstdio>
#include <cstdlib>
using namespace std;
int main()
{
//random starting turn chooser
int turnFirst; //variable to decide whoever goes first
int computerRandomPick; //variable to decide which grid the computer will place "O"
srand(time(0));
turnFirst = rand()% (2 - 1 + 1)+1;//generates starting person.
computerRandomPick = rand()% (9 - 1 + 1)+1;//computer first random pick
//board arrays
string block[3][3];
block [0][0] = {" "};
block [0][1] = {" "};
block [0][2] = {" "};
block [1][0] = {" "};
block [1][1] = {" "};
block [1][2] = {" "};
block [2][0] = {" "};
block [2][1] = {" "};
block [2][2] = {" "};
//player interaction
int playerChoice;
//BEGIN OF PROGRAM
cout << "Welcome to Tic Tac Toe!" <<endl<< endl;
if(turnFirst == 1)//player first
{
cout << "Please choose a grid to place (X): "<<endl<<endl;
cout << " 1 | 2 | 3"<< endl;
cout << " -----+-----+-----" << endl;
cout << " 4 | 5 | 6" << endl;
cout << " -----+-----+-----" << endl;
cout << " 7 | 8 | 9" << endl;
cout << " -----+-----+-----" << endl<<endl;
cin >> playerChoice;
system("CLS");
}
if(playerChoice == 1)
block[0][0] = "X";
if(playerChoice == 2)
block[0][1] = "X";
if(playerChoice == 3)
block[0][2] = "X";
if(playerChoice == 4)
block[1][0] = "X";
if(playerChoice == 5)
block[1][1] = "X";
if(playerChoice == 6)
block[1][2] = "X";
if(playerChoice == 7)
block[2][0] = "X";
if(playerChoice == 8)
block[2][1] = "X";
if(playerChoice == 9)
block[2][2] = "X";
if(turnFirst == 2)//computer first
{
system("CLS");
cout << "The computer picked: " <<endl<<endl;
}
if(computerRandomPick == 1)
block[0][0] = "O";
if(computerRandomPick == 2)
block[0][1] = "O";
if(computerRandomPick == 3)
block[0][2] = "O";
if(computerRandomPick == 4)
block[1][0] = "O";
if(computerRandomPick == 5)
block[1][1] = "O";
if(computerRandomPick == 6)
block[1][2] = "O";
if(computerRandomPick == 7)
block[2][0] = "O";
if(computerRandomPick == 8)
block[2][1] = "O";
if(computerRandomPick == 9)
block[2][2] = "O";
//Game Board.
cout << " " << block[0][0] << " | " << block [0][1] << " | " << block [0][2] << endl;
cout << " -----+-----+-----" << endl;
cout << " " << block [1][0] << " | " << block [1][1] << " | " << block [1][2] << endl;
cout << " -----+-----+-----" << endl;
cout << " " << block [2][0] << " | " << block [2][1] << " | " << block [2][2] << endl;
cout << " -----+-----+-----" << endl;
return 0;
}
Если ваш код работает, и вы просто хотите знать, как вы можете улучшить его, рассмотреть вопрос о принятии его [codereview.stackexchange.com] (Http: //codereview.stackexchange. ком). Есть миллион способов улучшить это; и нет недостатка в примерах Tic-Tac-Toe на C и C++, чтобы учиться там. Но самое главное, вам нужно подумать об удалении повторения; зачем писать один и тот же код для размещения x и O, заданного числом два раза, когда вы можете сделать метод или функцию, которые вы передаете, и «X» или «O» в качестве параметра? Начинает резать вещи пополам прямо там ... – HostileFork
Используйте больше функций. Общее правило состоит в том, что если у вас есть функция более 25 строк, вы, вероятно, делаете что-то неправильно. (Это не жесткое правило, но у вас должно быть очень сильное оправдание для любой функции дольше) – o11c
Обратите внимание, что есть много вопросов с тегами [tag: tic-tac-toe] здесь, чтобы просмотреть, если вы хотите получить идеи (а теперь ваш - один из них). – HostileFork