Морской бой (TI-89)

Эту игрушку писал сначала для Casio fx-9750G PLUS. Приблизительно за неделю придумал основные компоненты игры, а отлаживал работу между блоками и вносил некоторые усовершенствования несколько месяцев. Когда по работе нужно было много считать удалял ее, а потом в течение 3-4 часов :-) набивал ее снова (кабеля для подключения к ПК нет). Купил TI-89T и переписал программу для него без существенных изменений. Ускорилась прорисовка действий. Для начала игры запустите файл waronsea.

Игровое поле выглядит как на листочке в клеточку, два игровых поля 10 на 10. Слева поле калькулятора (C), а справа ваше (G). Для игры используются клавиши с цифрами и буквами (горизонтали и вертикали на экране подписаны), причем для того чтобы набрать 10 нужно нажать ноль. Для информирования программы о результате ее хода нажимайте клавиши M (мимо), R (ранен), U (убит).

Программа не подглядывает расположение ваших кораблей, поэтому нужно играть очень внимательно, чтобы не ответить "мимо" тогда, когда ваш корабль "ранен". Иначе в процессе игры баланс подбитых кораблей не сойдется и игра не завершится (зависнет; нажать "ON", "ESC" и запустить программу снова). В одной из версий реализовывал защиту от таких случайных нажатий, но когда игроки узнавали, что для реализации этой функции программа подсматривает, единодушно высказывались "это нечестно". Пришлось убрать (хотя программа подглядывала лишь для контроля случайных нажатий, но не для генерации хода).

Программа состоит из следующих частей
1) Блок рисования поля;
2) Блок расстановки кораблей калькулятора;
3) Блок контроля ручной или автоматической расстановки кораблей игрока;
4) Блок анализа хода игрока и генерации ответа;
5) Блок генерации хода калькулятора и обработки ответа игрока;
6) Блок добивания раненого корабля игрока;
7) Вывод сообщения о завершении игры.

После запуска программы можно наблюдать следующее:
- Рисуется игровое поле, подписываются горизонтали и вертикали;
- Появляется окно с предложением выбрать игровой набор (по умолчанию используется классический 1, 1, 1, 1, 2, 2, 2, 3, 3, 4). Можно выбрать некоторые другие наборы, а если разобрались с программированием, то можно добавить свои дополнительные наборы в текст самой программы. При повторном запуске они будут доступны в этом окне.
- Появляется окно с информацией о том, что калькулятор расставляет свои корабли (осуществляется секунд за 20);
- Появляется окно с предложением вручную или автоматически расставить ваши корабли (по умолчанию подсвечивается поле AUTO). При выборе поля MANUAL окно исчезает. Нажимаете букву и цифру, т.е. координаты поля с которого начинается корабль и продолжается либо вверх (нажать стрелку вверх), либо вправо (нажать стрелку вправо). Правильность расстановки кораблей автоматически контролируется как при автоматической, так и при ручной расстановке. Нельзя поставить корабль углом или так, чтобы они соприкасались сторонами или углами.
- После завершения расстановки кораблей всегда ваша очередь хода; Нажимаете букву и цифру. Они отображаются над вашим полем со знаком вопроса. Над полем калькулятора высвечивается ответ MIMO (на указанном поле ставится крестик), RANEN (на соответствующей клеточке корабля появляется дырка) или UBIT (точки корабля инверсируют, после чего вокруг убиенного автоматически расставляются знаки мимо [крестики]). В последних двух случаях очередь хода опять переходит к вам.
- Ход калькулятора. Над его полем появляются координаты поля с вопросом. Вы должны нажать M (мимо), R (ранен) или U (убит). Над вашим полем будет выведено соответствующее сообщение. Далее последует автоматическая расстановка соответствующих значков.
- И т.д. и т.п.
- Если количество битых кораблей у кого-либо из игроков равно количеству кораблей выбранного в начале игры набора, то игра завершается. Над игровым полем победителя выводится соответствующее сообщение.

Калькулятор генерирует свой ход с помощью генератора случайных чисел. Поэтому если даже последним небитым кораблем будет четырехклеточный корабль, он (калькулятор) все равно будет называть произвольные поля, даже одноклеточные (старый алгоритм). Для устранения этого недостатка я добавил подпрограмму "Решето", хотя правильнее было бы назвать ее "Делитель". Но думает долго, если хотите играть быстрее, в начале основной программы присвойте переменной vykl (выключатель) значение ноль.

Файлы с игрой нужно установить в отдельную папку и защитить их блокировкой или архивированием. Делать это нужно до запуска игры иначе заблокируете созданные игрой переменные и не сможете играть (пока не разблокируете их).

Не добавлял удаление ненужных переменных в конце игры, добавьте сами в конце основного файла. Какие именно переменные узнаете сыграв полностью один раз.

Будет отпуск перепишу эту программу для HP-50G

:-]

Прикрепленный файлРазмер
new_war.rar6.99 кб

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".
"Пятнашки" ? Автор: Дима Масалов
Зона Автор: Дима Масалов
А зуду находить Автор: basvic