Практика
На прошлой практике была написана функция для вывода игрового поля и код для хода первого игрока. В рамках этого урока будут реализованы ходы игроков по очереди.
Требования
- игроки должны ходить по очереди
- перед каждым ходом игроку надо выводить сообщение Игрок {имя игрока} делает ход:
- записывать ходы игроков
- после каждого хода выводить игровое поле
Исходный код
С прошлой практики должен был остаться следующий код:
Реализация
Так как игровое поле содержит 9 клеток, то максимальное количество ходов будет 9. Для этого можно использовать цикл
for:Юля ходит первой, значит она будет ходить по четным индексам, а Дима по нечетным:
Ход для Юли уже написан, а для Димы необходимо немного поменять:
Итоговый код
В конце урока должен получиться следующий код:
Программа еще не закончена. Даже если игрок сделал победный ход, игра будет продолжена. Это будет исправлено на следующем шаге.
Упражнения
- Функция
PrintBoard(board);вызывается после хода каждого игрока. Если ее перенести в конец цикла, то логика не измениться, а код станет чище. Поместите ее после блокаelse, и убедитесь, что программа работает по-прежнему.
- Код для ходов игроков очень похож, и отличается лишь именем игрока. Отличная идея, чтобы создать еще одну функцию. Напишите функцию с сигнатурой
void PlayerMakesMove(string name), перенесите в нее код хода игрока, слегка измените и убедитесь, что поведение программы не изменилось. Подсказка: первую букву имени игрока можно получить такname.Substring(0, 1).