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



         

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


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

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

Совет 2 (QBasic)

Обратите внимание на оператор LOCATE. Во-первых, в нем, в отличие от процедуры gotoxy, координаты х и у переставлены местами (у — строка, х — столбец). Во-вторых, кроме местоположения курсора, здесь добавлен третий параметр, определяющий видимость курсора. Если этого не сделать, то игрок не будет видеть позицию, в которой он намеревается поставить нолик.

Совет 3 (Си, Паскаль)

Некоторая экономия в объеме программы отображения игрового поля достигнута за счет использования окна вывода (window). Задавая нужные значения констант (х0, у0), можно переместить игровое поле в другое место экрана.

Программа 4_12.bas

DECLARE SUB STEP345()

DECLARE SUB RESULT(s$)

DECLARE SUB CURIND(cur%,porog%,dcur%,dind%)

DECLARE SUB SHOW(k%,c%)

DECLARE SUB USER()

  • линия 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, каждая тройка элементов которого соответствует одной из игровых линий.




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