Как сделать так, чтобы символы X и O отображались в игре «Крестики-нолики» на C#?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как сделать так, чтобы символы X и O отображались в игре «Крестики-нолики» на C#?

Сообщение Anonymous »

Я пытаюсь создать игру в крестики-нолики. Мне удалось создать пустую доску и запросить ввод данных пользователем, но мои символы не отображаются на доске.

Код: Выделить всё

    private class Player
{

public  bool IsSquareTaken { get => GetsSquareAndVerifies(); }
public char Symbol { get; set; }
public int Row { get; set; }
public int Column { get; set; }

// creates a player and gives them a symbol
public Player(char symbol)
{
Symbol = symbol;
}
public Player()
{

}

public bool GetsSquareAndVerifies()
{

TicTacToeGame game = new TicTacToeGame();

while (true)
{

Console.WriteLine($"It is {Symbol}'s turn.\nWhich square would you like to play in? (1-9)");
if ((!int.TryParse(Console.ReadLine(), out int userInput) || userInput < 1 || userInput > 9))
{
Console.WriteLine("Please enter a valid number!");
return true;

}
Row = (userInput - 1) / 3;
Column = (userInput - 1) % 3;

if (game.Board[Row, Column] != '\0')
{
Console.WriteLine("Halt! That square is taken.");
return true;
} else if (game.Board[Row, Column] == '\0')
{
game.Board[Row, Column] = Symbol;
return false;
}

}

}
}
}

Код: Выделить всё

 private class TicTacToeGame()
{
private char[,] board = new char[3, 3];
Player player = new('X');
Player player2 = new('O');
public char[,] Board { get => board; set => board = value; }

public void InitializeBoard()
{
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
Board[i, j] = '\0';
}
}

for (int r = 0; r < 3; r++)
{

Console.WriteLine("  {0}  |  {1}  |  {2}  ", Board[r, 0], Board[r, 1], Board[r, 2]);
if (r < 2)
{
Console.WriteLine("----+----+-----");
}
}

}
public void DisplayPlacedSymbol()
{

while (true)
{

if (player.IsSquareTaken == false)
{
for (int r = 0; r < 3; r++)
{

Console.WriteLine("  {0}  |  {1}  |  {2}  ", board[r, 0], board[r, 1], board[r, 2]);
if (r < 2)
{
Console.WriteLine("----+----+-----");
}
}
Console.WriteLine($"Symbol {player.Symbol} is placed at {player.Row}, {player.Column}");
}

if (player2.IsSquareTaken == false)
{
for (int r = 0; r < 3; r++)
{

Console.WriteLine("  {0}  |  {1}  |  {2}  ", board[r, 0], board[r, 1], board[r, 2]);
if (r < 2)
{
Console.WriteLine("----+----+-----");
}
}
Console.WriteLine($"Symbol {player.Symbol} is placed at {player.Row}, {player.Column}");
}

}

}
}

Код: Выделить всё

  internal partial class Program
{
static void Main(string[] args)
{

TicTacToeGame game = new TicTacToeGame();
game.InitializeBoard();
game.DisplayPlacedSymbol();

}
}
Я ожидал, что символы появятся, и тогда я смогу исправить любое дурацкое форматирование. Раньше мне удавалось без проблем отображать символы, но они стирались после каждого нового хода. После этого я внес некоторые изменения в функциональность своего кода, выполнив этот код:

Код: Выделить всё

Row = (userInput - 1) / 3;
Column = (userInput - 1) % 3;
До этого все было гораздо сложнее из-за большого количества операторов if else. Раньше у меня также было отдельное поле для UserSymbol, и я напечатал его вместо доски, но мне показалось, что это мешает мне проверять, пуст ли текущий квадрат... Я действительно не понимаю, что делать дальше. Я хочу это исправить, прежде чем переходить к коду победы, ничьи и проигрыша.

Подробнее здесь: https://stackoverflow.com/questions/787 ... -game-in-c
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как сделать так, чтобы символы X и O отображались в игре «Крестики-нолики» на C#?
    Anonymous » » в форуме C#
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Как сделать так, чтобы символы X и O отображались в игре «Крестики-нолики» на C#?
    Anonymous » » в форуме C#
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Проблема с отображением «X» при первом клике в игре «Крестики-нолики»
    Anonymous » » в форуме CSS
    0 Ответы
    58 Просмотры
    Последнее сообщение Anonymous
  • Компьютерный счет не обновляется в игре в крестики-нолики [закрыто]
    Гость » » в форуме C++
    0 Ответы
    22 Просмотры
    Последнее сообщение Гость
  • Крестики-нолики Минимакс не приводят к непобедимой игре [закрыто]
    Anonymous » » в форуме C#
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»