Практика программирования (Бейсик, Си, Паскаль)



         

Задачи, советы и ответы - часть 22


Нумерация позиций игрового поля, привязка к экрану и хранение информации о ходах. Пронумеруем клетки рабочего поля слева направо и сверху вниз от 1 до 9 и сопоставим содержимое центра каждой клетки с элементом целочисленного массива а:

  • a[i] = 0, если клетка свободна;

  • a[i] = 2, если клетка занята "крестиком";

  • а [i] =-2, если клетка занята "ноликом".

    Центры клеток в относительных номерах столбцов (х) и строк (у) имеют следующие координаты:

  • клетка 1 (х=3, у=2) клетка 4 (х=3, у=4) клетка 7 (х=3, у=6)

  • клетка 2 (х=7, у=2) клетка 5 (х=7, у=4) клетка 8 (х=7, у=6)

  • клетка 3 (х=11 ,у=2) клетка 6 (х=11, у=4) клетка 7 (х=11, у=6)

    В программе массив роз заполнен элементами, соответствующими экранным координатам позиций игрового поля.

    Нумерация игровых линий.

    Пронумеруем линии числами от 1 до 8 следующим образом:

  • линия 1 (верхняя горизонталь) проходит через клетки (1,2,3);

  • линия 2 (средняя горизонталь) проходит через клетки (4,5,6);

  • линия 3 (нижняя горизонталь) проходит через клетки (7,8,9);

  • линия 4 (левая вертикаль) проходит через клетки (1,4,7);

  • линия 5 (средняя вертикаль) проходит через клетки (2,5,8);

  • линия 6 (правая вертикаль) проходит через клетки (3,6,9);

  • линия 7 (1-я диагональ) проходит через клетки (1,5,9);

  • линия 8 (2-я диагональ) проходит через клетки (3,5,7).

    Обратите внимание на массив lines, каждая тройка элементов которого соответствует одной из игровых линий.

    Отображение игрового поля. Воспроизведение контуров игрового поля осуществляется выводом семи строковых констант, состоящих из нужной цепочки символов псевдографики. Для отображения сделанных ходов организуем цикл перебора элементов массива а и выводим в центрах каждой клетки символ, соответствующий значению элемента a[j]. В программе для этой цели использована процедура show(j, k), которая совмещает описанные выше действия с предварительной засылкой числа k в элемент а [ j ] (параметр k может принимать значения +2 или -2, в зависимости от того, кем был сделан текущий ход). После отображения игрового поля курсор переводится в центр, т. к. из него можно добраться до любой игровой клетки самым быстрым способом.




    Содержание  Назад  Вперед