Практика

На прошлой практике была написана функция для вывода игрового поля и код для хода первого игрока. В рамках этого урока будут реализованы ходы игроков по очереди.

Требования

  • игроки должны ходить по очереди
  • перед каждым ходом игроку надо выводить сообщение Игрок {имя игрока} делает ход:
  • записывать ходы игроков
  • после каждого хода выводить игровое поле

Исходный код

С прошлой практики должен был остаться следующий код:

Реализация

Так как игровое поле содержит 9 клеток, то максимальное количество ходов будет 9. Для этого можно использовать цикл for:
Юля ходит первой, значит она будет ходить по четным индексам, а Дима по нечетным:
Ход для Юли уже написан, а для Димы необходимо немного поменять:

Итоговый код

В конце урока должен получиться следующий код:

Упражнения

  1. Функция PrintBoard(board); вызывается после хода каждого игрока. Если ее перенести в конец цикла, то логика не измениться, а код станет чище. Поместите ее после блока else, и убедитесь, что программа работает по-прежнему.
  1. Код для ходов игроков очень похож, и отличается лишь именем игрока. Отличная идея, чтобы создать еще одну функцию. Напишите функцию с сигнатурой void PlayerMakesMove(string name), перенесите в нее код хода игрока, слегка измените и убедитесь, что поведение программы не изменилось. Подсказка: первую букву имени игрока можно получить так name.Substring(0, 1).