На главную страницу
Форум txt.version   



Статья :: Программирование игр и головоломок Jeux et casse-t?te ? programmer : Жак Арсак

Рассматриваются способы программирования различных занимательных игр и головоломок с числами, геометрическими фигурами и др. Изложение большинства игр и головоломок ведется в несколько этапов. Сначала разъясняется сама постановка задачи и требования, предъявляемые к алгоритму ее решения.

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

В конце книга по многим играм и головоломкам даются наброски их программной реализации. Используемый при этом язык типа Паскаля допускает перевод на другие широко распространенные языки программирования.

Для начинающих программистов, студентов вузов и техникумов.

У вас возникли затруднения, — вы не знаете, как приступить к игре или головоломке. Я не хочу предлагать вам готовое решение, иначе в чем будет удовольствие? Но, вероятно, нижеследующие указания наведут вас на правильный путь. Если бы я мог использовать дискетку вместо книги, я разложил бы эти указания на как можно большее число уровней, чтобы вы были в состоянии брать из них тот строгий минимум, который позволит вам продолжать решение. Но и в книге вы всегда можете прочесть только начало и — как только искра вспыхнет — отложить книгу и завершить решение самостоятельно. Некоторые упражнения кажутся мне настолько очевидными, что я ничего про них не скажу. Но, конечно, это субъективная точка зрения: они могут не казаться очевидными вам. Может быть, потому, что вы не видите, в чем задача: разберите простые случаи вручную, В любом случае старайтесь сформулировать задачу с максимальной возможной полнотой, Если и после этого вы по- прежнему не видите, как вам ее охватить, поговорите с друзьями или с приятелями, Я умышленно не собираюсь сообщать вам все. Эта книга написана для того, чтобы вы стали программировать. Вам играть…

Предисловие

«Играйте с компьютером, это захватывает…»

«Нет ничего увлекательнее создания собственных компьютерных игр»…

Это — два привлекательных лозунга, взятые из рекламы микрокомпьютеров. Поэтому самое существенное — это создавать игру.

КТО САМ ПРОГРАММИРУЕТ СВОИ КОМПЬЮТЕРНЫЕ ИГРЫ, НАСЛАЖДАЕТСЯ ДВАЖДЫ[1]

Я уже проводил небольшое расследование в SICOB в 1984 году. Во многих торговых предприятиях я представлялся как отец, который хочет подарить своему сыну микрокомпьютер. Мне объяснили, что именно нужно купить и во сколько это мне обойдется. Затем я спрашивал об играх. И вот что, приблизительно, там происходило.

«—Так он сможет со всем этим играть?

— Да нет же, месье. Чтобы он мог играть с компьютером, он должен покупать кассеты с играми.

— Кассеты с играми? Я думал, что компьютер… А сколько стоит кассета?»

Продавец называет мне цену, которую вы, должно быть, знаете. Я отвечаю:

«— И сколько игр на кассете?

— Одна, месье.

— Но тогда двадцать игр стоят дороже самой машины! А я слышал от сведущих людей, что на компьютере интереснее всего создавать игры самому.

— Для этого, месье, нужно уметь программировать.

— Но по телевизору твердят, что это очень просто. Мой сын, должно быть, может научиться?

— Да, месье. У нас есть кассета с Бейсиком.

— Кассета с Бейсиком! Бейсик — это и есть программирование?

— Нет, месье. Чтобы уметь программировать, нужна еще вот эта кассета с языком ассемблера…»

Я удалялся, исполненный отвращения, жалкий истец отцов семейств! В другом торговом заведении я отважился утверждать, что я слышал от сведущих людей, что некоторые журналы публикуют совершенно готовые игровые программы.

«— Да, это так. Но эти игры плохо сделаны. Они не являются профессиональной работой, как наши кассеты, где вывод изображения на экран тщательно отработан. Кроме того, очень неприятно набирать тексты этих игр на клавиатуре. Так что все это не очень серьезно, что бы об этом ни говорили…»

На этот раз я поверил, что мне говорят правду. Опубликованные таким образом игры весьма посредственны по качеству. Я не поленился внимательно прочесть некоторые из них (см., например, головоломку 28). Чаще всего они плохо составлены и так плохо прокомментированы, как будто автор хочет помешать читателю понять их. Стратегия этих игр иногда более чем примитивна: я видел игру ТИК—ТАК—ТОК, где компьютер случайным образом выбирал свой игровой ход… Это издевательство над читателями!

Во всем этом совершенно отсутствует творчество. Реклама трубит: «Создавать — это увлекательно!». Но на практике все делается так, как будто подростки неспособны что-либо создавать. И им не помогают начать делать что-нибудь творческое.

Чтобы восполнить этот пробел, я и написал эту книгу. Многие подростки обучены программированию — в лицее (причем не только в таких лицеях, которые официально предоставляют обучение со специализацией по информатике, устраивая курсы по программированию), в клубах и на каникулах — с родителями, с друзьями, по книгам… Но вот что программировать на компьютере? Игры? Какие? Примеры, публикуемые в журналах и книгах, непонятны. Как они могут хоть на что-то вдохновить? А если и посмотреть вокруг, что можно найти? Шахматы, Отелло, вошек? Это слишком трудно…

Поэтому я собрал здесь описания некоторых игр, которые есть в продаже, чаще всего на Бейсике, для которых не нужны графические возможности компьютера. Я сам все эти игры реализовал на микрокомпьютере, имеющем только алфавитно-цифровой черно-белый экран и не имеющем ни светового пера, ни мыши, ни планшета. Трудность программирования обозначается звездочками «*». Начинайте с игр без звездочек. К остальным вы перейдете позже. Каждая игра допускает многочисленные вариации, которые вы легко изобретете.

Для того чтобы менее мужественные читатели могли избежать искушения сразу же читать все подробности изготовления программ, в первой части книги условие игры обычно излагается вместе с некоторыми указаниями. Если этих указаний вам недостаточно, иначе говоря, если после размышления и возможных обсуждений с товарищами вы не видите, как тронуться с места, вас выведет из затруднений «первая помощь». Если же вы опять упретесь в какую-нибудь трудность, то третья часть книги должна позволить вам достичь цели. Смелее вперед: СОЗДАВАЙТЕ.

Игры привлекательны не только для молодых людей от 14 до ? (а до скольких?). Я знаю многих взрослых, любящих играть (и сам люблю). У меня много коллег, для которых программирование и есть игра — как для меня. Я написал эту книгу для всех молодых людей от 14 до 77 лет, которые любят играть с компьютером или которые любили бы это делать, если бы средство для этого им было предоставлено.

Серьезные журналы публикуют математические развлечения для «порядочных людей». Продаются книги с логическими головоломками. Продаются обзоры стратегий. Применение компьютеров полностью обновило весь этот круг вопросов. Всем тем, кто интересуется головоломками, я предлагаю здесь новую форму головоломок: задача, решение которой нужно найти на компьютере, — это настоящая головоломка. Они бывают трех основных типов:

некоторые головоломки интересно программировать (например, зашифрованные операции, господин S и господин P, пентамино…);

некоторые задачи имеют очень простой вид, но доведение решения до программы является настоящей головоломкой (например, переставить две части вектора, найти наибольший белый прямоугольник в решетке кроссворда). Это — совершенно новый тип задач, тесно связанный с компьютером;

наконец, последний тип — настолько трудный, что я уменьшил набор его примеров, выбрав их из поистине неисчислимого множества, — связан с тем, что я говорил в начале. Вам дана программа (в нашей книге — написанная настолько хорошо, насколько это возможно), но без комментариев. Скажите, что она делает.

Трудность головоломки обозначается вопросительными знаками. Есть головоломки с довольно простыми решениями, но деликатным программированием: «?***», и есть ужасные головоломки с легким программированием: «???». Выбирайте!

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

Я не привожу никаких решений, за исключением нескольких настолько классических случаев, что их решение исследовано всюду, или задач, решение которых является образцом, который часто встречается и который нужно знать. Изучите сначала их.

Первый раздел — немного особенный. Каковы бы ни были ваши склонности — начните с него; он даст вам инструмент, необходимый для почти всех игр и немалого числа головоломок (формирование ситуаций случайным образом).

Если вы уже перелистали книгу, то вы, может быть, заметили в ней и кое-что, похожее на математику, Признаюсь! Несколько головоломок в ней — арифметические, и их решение требует вычислений. В большей части эта книга доступна и людям, не имеющим никакой специальной математической подготовки, даже тем, кому вся эта математика внушает страх и отвращение.

Я сказал все. Теперь — вам ИГРАТЬ, вам СОЗДАВАТЬ…




Программирование игр и головоломок Jeux et casse-t?te ? programmer : Жак Арсак

страницы в данном разделе 
Программирование игр и головоломок Jeux et casse-t?te ? programmer : Жак Арсак Обозначения : Жак Арсак
Часть I. Условия задач : Жак Арсак Генерация случайного числа : Жак Арсак
Непредсказуемые числовые последовательности : Жак Арсак Азартные игры : Жак Арсак
Воспроизводимая непредсказуемая последовательность : Жак Арсак Другие азартные игры : Жак Арсак
2. Игры с числами : Жак Арсак Числовые последовательности : Жак Арсак
Зашифрованные операции : Жак Арсак Доказательства теорем : Жак Арсак
Простые числа : Жак Арсак Таинственные программы : Жак Арсак
3. Игры без стратегии : Жак Арсак Общие предложения : Жак Арсак
4. Игры со стратегией : Жак Арсак 5. Стратегия без игры (выигрывающие стратегии) : Жак Арсак
6. Комбинаторные задачи : Жак Арсак 7. Обо всем понемногу : Жак Арсак
1. Случайные числа : Жак Арсак Непредсказуемые числовые последовательности : Жак Арсак
Азартные игры : Жак Арсак Воспроизводимая непредсказуемая последовательность : Жак Арсак
Другие азартные игры : Жак Арсак Генерация случайного числа : Жак Арсак
Непредсказуемые числовые последовательности : Жак Арсак Азартные игры : Жак Арсак
Воспроизводимая непредсказуемая последовательность : Жак Арсак Другие азартные игры : Жак Арсак
Числовые последовательности : Жак Арсак Зашифрованные операции : Жак Арсак
Доказательства теорем : Жак Арсак Простые числа : Жак Арсак
Таинственные программы : Жак Арсак Числовые последовательности : Жак Арсак
Зашифрованные операции : Жак Арсак Доказательства теорем : Жак Арсак
Простые числа : Жак Арсак Таинственные программы : Жак Арсак
3. Игры без стратегии : Жак Арсак Общие предложения : Жак Арсак
4. Игры со стратегией : Жак Арсак 5. Стратегия без игры (выигрывающие стратегии) : Жак Арсак
6. Комбинаторные задачи : Жак Арсак 7. Обо всем понемногу : Жак Арсак
Часть II. Первая помощь : Жак Арсак 2. Игры с числами : Жак Арсак
Зашифрованные операции : Жак Арсак 3. Игры без стратегии : Жак Арсак
4. Игры со стратегией : Жак Арсак 5. Стратегия без игры (выигрывающие стратегии) : Жак Арсак
6. Комбинаторные задачи : Жак Арсак 7. Обо всем понемногу : Жак Арсак
1. Случайные числа : Жак Арсак 2. Игры с числами : Жак Арсак
Зашифрованные операции : Жак Арсак 3. Игры без стратегии : Жак Арсак
4. Игры со стратегией : Жак Арсак 5. Стратегия без игры (выигрывающие стратегии) : Жак Арсак
6. Комбинаторные задачи : Жак Арсак 7. Обо всем понемногу : Жак Арсак
Часть III. И если вы все еще не нашли решения : Жак Арсак 2. Игры с числами : Жак Арсак
3. Игры без стратегии : Жак Арсак 4. Игры со стратегией : Жак Арсак
5. Стратегия без игры (выигрывающие стратегии) : Жак Арсак 6. Комбинаторные задачи : Жак Арсак
7. Обо всем понемногу : Жак Арсак 1. Случайные числа : Жак Арсак
2. Игры с числами : Жак Арсак 3. Игры без стратегии : Жак Арсак
4. Игры со стратегией : Жак Арсак 5. Стратегия без игры (выигрывающие стратегии) : Жак Арсак
6. Комбинаторные задачи : Жак Арсак 7. Обо всем понемногу : Жак Арсак
Использовалась литература : Программирование игр и головоломок Jeux et casse-t?te ? programmer    

Разделы
Околокомпьютерная литература (375)
Программирование (102)
Программы (75)
ОС и Сети (49)
Интернет (29)
Аппаратное обеспечение (16)
Базы данных (6)


Microsoft Office Журнал Компьютерра № 32 от 5 сентября 2006 года Журнал Компьютерра № 34 от 18 сентября 2006 года