ПОИСК Статьи Рисунки Таблицы Компьютерные игры из "Компьютеры Применение в химии" В последнее время щирокое распространение получили компьютерные игры. В больщой группе этих игр игровая ситуация возникает при движении по экрану различных объектов (как правило. [c.315] Общим для всех компьютерных игр является то, что играющие довольно быстро теряют к ним интерес, потому что обычные программы не способны к самообучению, а главное, потому, что в игре с ЭВМ отсутствуют специфика и динамизм живого партнера. Исключение, пожалуй, составляет игра, программу которой мы рассмотрим в этом разделе. В эту игру даже приятней играть с ЭВМ, чем с человеком. Причина довольно проста хотя игра и предполагает наличие двух партнеров, однако в игре фактически участвует только один из них. Второй партнер является хранителем информации, которой он делится по запросу первого. Для первого партнера игра представляет какой-то интерес, а вот у второго довольно скучная задача — поставлять информацию первому. С таким заданием может справиться и так называемый болван . ЭВМ и соответствующая программа прекрасно подходят, чтобы возложить на них такую довольно скучную обязанность. [c.316] Вкратце о правилах нашей версии игры. Из десяти первых букв алфавита выбирают комбинацию из 5 букв, которая неизвестна первому партнеру. Буквы могут повторяться. Первый игрок должен отгадать эту комбинацию за наименьшее число попыток. После каждой попытки второй игрок сообщает, сколько угадано букв, занимающих ту же позицию, что и в заданной комбинации, и сколько, кроме того, угадано букв, стоящих на других местах. Наибольшее число попыток равно 15. [c.316] Ниже приведена программа УГАДАЙ-КОД с игровым примером. [c.316] ЦЕЛЬ ИГРЫ - УГАДАТЬ ПЯТИБУКВЕННУЮ КОМБИНАЦИЮ, СОСТАВЛЕННУЮ ИЗ СЛЕДУЮЩИХ БУКВ А В С D. Е F G И J . ЭВМ УКАЗЫВАЕТ ЧИСЛО БУКВ В ВАШЕЙ КОМБИНАЦИИ, СГОЯЩИХ НА ВЕРНЫХ ПОЗИЦИЯХ. И ДОПОЛНИТЕЛЬНО ЧИСЛО БУКВ. [c.318] В строках 3005—8000 организован цикл по параметру М, текущее значение которого равно номеру попытки. Текущее значение переменной М выводится на экран в строке 3020. На участке программы (строки 3020—3240) в цикле по I пользователь вводит свою комбинацию букв. Эти буквы присваиваются элементам массивов К ( ) и Н ( ). Поскольку по правилам игры количество букв в комбинациях равно 5, начальное и наибольщее значение параметра цикла I равны 1 и 5 соответственно. Ввод организован с помощью рассмотренного выще оператора GET, который вводит буквы, набранные на клавиатуре и хранящиеся в буферной памяти (оператором GET можно вводить данные в процессе вьшолнения программы). Оператор GET является первым оператором строки 3040 (GET G ). Если ни одна клавиша не нажата, то буферная память пуста и второй оператор этой строки — оператор условного перехода — возвращает управление оператору GET, стоящему в той же строке. Этот своеобразный бесконечный цикл продолжается до тех пор, пока буферная память остается пустой, т. е. до тех пор, пока не нажата какая-нибудь клавиша. [c.319] В строках 3070 и 3072 проверяется, является ли буква, хранящаяся в буферной памяти, одной из 10 первых букв латинского алфавита (А—J), и если эта буква входит в число допустимых, то она присваивается соответствующим элементам массивов К ( ) и Н ( ) и одновременно выводится на экран. Если буква, находящаяся в буфере, больше чем J (т. е. К, L,. ..) или меньше чем А (т. е. знак или число), то управление передается строке 3200. Эта строка стирает с экрана всю строчку, в которой встретился ошибочный знак, и управление передается строке 3020, с которой возобновляется М-я попытка играющего. Таким образом, можно умышленно ввести недопустимый знак, чтобы данная попытка не учитывалась. Это может пригодиться, если при наборе комбинации обнаружена ошибка или внезапно в голову пришла новая идея. Если введены все пять допустимых букв, то цикл по I заканчивается (строка 3100). [c.319] Однако набранную комбинацию можно еще исправить, поскольку в строке 3110 для продолжения выполнения программы требуется дополнительное нажатие клавиши. Если набрать одну из так называемых допустимых букв (А—J), то ровным счетом ничего не произойдет и с помощью операторов IF (строки 3114, 3118 и 3120) управление возвращается строке 3110. При наборе какой-либо другой буквы или знака управление передается строке 3200, которая стирает уже набранную комбинацию, и пользователь получает возможность заново набрать комбинацию букв. [c.319] Только когда пользователь нажмет клавишу RETURN, ввод комбинации будет полностью завершен и управление перейдет к строке 4000, с которой начинается анализ введенной комбинации букв. Как проверяется, нажата ли клавиша RETURN) С помощью оператора AS (G ) определяется некоторое целое число, соответствующее значению текстовой переменной G и являющееся характеристикой каждого знака. Таблица кодов всех знаков имеется в руководстве к вашей ЭВМ. [c.320] В может быть текстовой переменной или текстовым выражением . [c.320] Оператор AS можно рассматривать как функцию, которая простой переменной присваивает по первому знаку текста в текстовой переменной В определенное число в соответствии с таблицей кодов. [c.320] С помощью оператора условного перехода проверяется, была ли нажата клавиша (RETURN), и если она была нажата, то управление передается строке 4000, с которой начинается анализ введенной комбинации букв. [c.320] Прежде чем приступить к анализу введенной комбинации, целевая комбинация дублируется, ее буквы присваиваются элементам массивов А ( ) и В ( ). Это делается потому, что в ходе сопоставления обеих комбинаций в искомую комбинацию будут вноситься изменения. [c.320] Если сравнены все пять букв, то в строке 4200 на экран выводится число верных позиций. Определение числа дополнительно угаданных букв происходит на участке программы от строки 4540 до строки 4800. С помощью конструкции из двух циклов, один из которых вложенный, сравнивается каждая буква искомой комбинации с каждой буквой предложенной пользователем комбинации. При совпадении букв счетчик угаданных букв, который перед началом процедуры обнуляется, в строке 4600 увеличивается на единицу, и буквы в обеих комбинациях заменяются нулями и соответственно единицами (как это было при определении числа верных позиций), чтобы уже угаданные буквы повторно не подсчитывались. После окончания этих циклов в строке 4700 число дополнительно угаданных букв выводится на экран. [c.321] В строке 5000 выясняется, угаданы ли все пять позиций искомой комбинации. Если это так, т. е. искомая комбинация найдена, то управление передается строке 9000, в которой на экран выводятся поздравления. В противном случае цикл по М продолжается. В начале этого цикла с помощью оператора В (1) = А (1) восстанавливается исходная искомая комбинация, в которую при анализе вносились некоторые изменения. Если цикл по М после 15 щагов заканчивается обычным образом, т. е. после 15 попыток искомая комбинация еще не найдена, то пользователю сообщается, что на этот раз ему не удалось установить загаданную комбинацию. На экран выводится ответ (строка 8140), и программа заканчивается оператором END (строка 8999). [c.321] Задание 182. Напишите программу для игры Угадай код , в которой для ввода комбинации букв вместо оператора GET использовался бы оператор INPUT. [c.321] Задание 184. Напишите программу для так называемого программированного обучения по следующей довольно простой теме брутто-формулы алканов, алкенов и алкинов (необходимо рассмотреть также соединения с несколькими кратными связями и циклические соединения). [c.322] Программированное обучение состоит в следующем пользователю (обучаемому) задаются различные вопросы по некоторой теме. При правильных ответах он получает положительную оценку. Если обучаемый ошибается, то этот раздел еше раз объясняется и по этой же тематике опять задаются вопросы, но уже другие, и т. д. [c.322] Задание 185. Напишите программу имитации игры в так называемый волшебный (заколдованный) кубик. Для этого вам надо составить таблицу отдельных вращений. Другой проблемой является наглядное и понятное представление результатов. Вы можете закодировать цвета всех шести граней буквами и выводить на экран только изменения, происходящие при вращениях. [c.322] Вернуться к основной статье