Разработка логической игры "Пятнашки"

Тип работы:
Курсовая
Предмет:
Программирование


Узнать стоимость новой

Детальная информация о работе

Выдержка из работы

СОДЕРЖАНИЕ

Введение

1. РАЗВИТИЕ VISUAL BASIC

1. 1Visual Basic: прошлое и настоящее

1.2 Версии Visual Basic

2. ИГРА «ПЯТНАШКИ»

2.1 История создания

2.2 Математическое описание

2.3 Алгоритм

2.4 Разновидности и вариации игры

3. РАЗРАБОТКА ПРОЭКТА

3.1 Постановка задачи

ЗАКЛЮЧЕНИЕ

ВВЕДЕНИЕ

До изобретения кубика Рубика для многих людей знакомство с головоломками начиналось с пятнашек, так часто называют известную игру 15. С пятнашек начинается история игр с дыркой головоломок, в которых фишки перемещаются по игровому полю за счёт того, что одно из мест на поле свободно. У пятнашек есть множество родственников, которые как раз и образовывают целый раздел этих головоломок. Игру 15 придумал в 70-х годах XIX-го века прославленный американский изобретатель головоломок Сэмюэль Лойд. Время появления его игрушки и известного всем кубика Рубика разделяют ровно сто лет. Любопытно, что возраст обоих изобретателей, когда они придумали свои знаменитые головоломки, был одинаков, немногим больше тридцати. До пятнашек никакая другая головоломка таким успехом не пользовалась. Суть игры состоит в том, чтобы расставить все фишки по своим местам, за исключением 14 и 15. Если переставить хотя бы одну фишку, то расклад получится также верным, кроме последних. 14 будет стоять на месте 15, а 15 на месте 14 что также является верным решением. Пятнашки являются третьей по известности и популярности механической головоломкой в мире, уступая только разве что «маститым» кубику Рубика и пазлам.

Пятнашки открывают историю так называемых игр с дыркой -- головоломок, в которых фишки перемещают по игровому полю, т.к. одно из мест на нем свободно. Если присмотреться, то и в пазлах и в кубике четко прослеживаются «пятнашковые» корни. Причем в последнем это заметно в большей степени: в кубике также необходимо серией перемещений восстановить изначальную упорядоченность элементов головоломки. Возьмите кубик Рубика 4×4, нанесите на грани числа от 1 до 15, оставив один сегмент пустым, и вы получите те же пятнашки. Сделайте так со всеми сторонами, и получаться объемные пятнашки сразу на 6 полях. Правда, собираться они будут уже по иному алгоритму.

Сейчас пятнашки уже не вызывают вокруг себя того ажиотажа, который имел место больше века назад. Но если рассматривать ситуацию в целом, то своим грандиозным успехом (и тому, что про них не забыли и до сих пор) пятнашки были обязаны не только пресловутой «штуке баксов», но и тонкому балансу между сложностью головоломки и ее решаемостью (естественно, для вариантов, решение имеющих), которая обеспечивала удовольствие большинству людей, сумевших разгадать ее и радостно прочувствовать свой интеллект. Хотя число различных комбинаций, имеющих решение в игре, достаточно велико (10 461 394 944 000, учитывая пропущенную шестнадцатую плитку), так что наблюдательному и усидчивому человеку ее решение не покажется особо сложным.

Максимальное количество ходов (при оптимальной игре), необходимых для решения головоломки размером 4×4, равно 80.

1. РАЗВИТИЕ VISUAL BASIC

1.1 Visual Basic: прошлое и настоящее

Visual Basic для Windows появился около 10 лет назад. Дебют состоялся 20 марта 1991 года на выставке «Windows World», хотя своими корнями он уходит к программе Ruby, написанной Аланом Купером (Alan Cooper) в 1988 году.

Бесспорно, появление Visual Basic произвело настоящую сенсацию. Стив Гиб-сон (Steve Gibson) в журнале «InfoWorld» назвал Visual Basic «потрясающим новым чудом», которое «радикально изменит подход к программированию для Microsoft Windows». Чарльз Петцольд (Charles Petzold), автор знаменитой книги, посвященной программированию для Windows на языке С, написал в «New York Times»: «Visual Basic представляет настоящую угрозу для благополучия тех, кто зарабатывает себе на жизнь, разъясняя программистам сложности программирования для Windows» (вряд ли к комментарию Петцольда стоит относиться серьезно, поскольку с того знаменательного дня были проданы миллионы книг, посвященных VB). Еще решительнее высказался Стюарт Элсоп (Stewart Alsop): он назвал Visual Basic «идеальной средой программирования для 90-х годов».

Но 90-е годы уже прошли, поэтому никого не удивит тот факт, что Visual Basic. NET отличается от обычного Visual Basic так же сильно, как Visual Basic версии 1 отличается от своего предшественника QuickBasic. Хотя из прежнего опыта использования Visual Basic можно вынести много полезного, переход на платформу. NET и Visual Basic. NET (сокращенно VB. NET) сопровождается такими же основательными изменениями, как и переход с QuickBasic для DOS на VB1 для Windows.

1.2 Версии Visual Basic

Первые две версии Visual Basic для Windows хорошо подходили для создания прототипов программ и демонстрационных приложений -- но этим все и ограничивалось. В обеих версиях отличная среда программирования сочеталась с относительной простотой языка. Сам язык обладал относительно бедными возможностями. С появлением VB3 и новых средств работы с базами данных, требовавших изучения новой модели программирования, первая реакция нередко была обескураживающей: «Зачем они испортили VB?!» Сейчас становится понятно, что включение поддержки баз данных в VB3 было необходимо, чтобы Visual Basic из «игрушечного языка» превратился в серьезный инструмент программирования. В VB4 появились базовые возможности для создания объектов, а следовательно -- базовые средства объектно-ориентированного программирования. В VB5 и VB6 объектно-ориентированные аспекты языка были расширены, появились новые возможности создания элементов и использования интерфейсов. Однако сам язык постепенно утрачивал целостность, поскольку объектно-ориентированные средства строились на базовом фундаменте, в котором их поддержка не предусматривалась. Например, правильность создания объектов в Visual Basic не гарантировалась -- программисту приходилось применять особые синтаксические конструкции вместо конструкторов, используемых практически во всех объектно-ориентированных языках. В итоге разработчики VB пришли к выводу, что поддержка VB на платформе. NET потребует новых изменений -- например, использование. NET Framework требует полноценной объектной ориентации языка.

Вероятно, при знакомстве с изменениями VB основные трудности возникнут не в связи с новшествами в среде IDE или появлением новых ключевых слов, а из-за необходимости радикального пересмотра парадигмы программирования на VB. В частности, чтобы в полной мере использовать преимущества VB5 и VB6, с объектно-базированного подхода, обладавшего весьма ограниченными возможностями создания новых объектов, приходилось переходить на объектно-ориентированный подход, в инструментарии которого, например, важное место занимают интерфейсы. К сожалению, большинство программистов VB, выросших на этом продукте, ранее никогда не использовали принципы объектно-ориентированного программирования. Когда в VB впервые появились классы, многие программисты VB понятия не имели, что это такое и зачем они нужны.

Но даже эти ограниченные возможности, появившиеся в VB5 и VB6, при правильном применении упрощали работу над большими проектами. Например, они позволяли создавать компоненты многократного использования (такие, как элементы управления), а на более прозаическом уровне -- просто приводить код в порядок, упрощая его сопровождение. В некоторых случаях удавалось исключить оператор Select Case, нередко порождавший большие проблемы с сопровождением.

2. ИГРА «ПЯТНАШКИ»

Пятнашки — популярная головоломка. Придуманная в 1878 году Ноем Чемэном. Существует вариант для восьми элементов. Представляет собой набор одинаковых квадратных костяшек с нанесёнными числами, заключённых в квадратную коробку. Длина стороны коробки в четыре раза больше длины стороны костяшек для набора из 15 элементов и в три раза больше для набора в 8 элементов, соответственно в коробочке остаётся незаполненным одно квадратное поле. Цель игры — перемещая костяшки по коробке добиться упорядочивания их по номерам, желательно сделав как можно меньше перемещений.

2.1 История создания

С 1891 года до самой смерти Сэм Ллойд считал, что изобрёл головоломку именно он. Однако существуют доказательства того, что он был непричастен к созданию «пятнашек». Настоящим изобретателем был Ной Палмер Чепмэн, почтмейстер из Канастоты, который ещё в 1874 году показывал друзьям головоломку, состоящую из шестнадцати пронумерованных квадратиков, которые надо было сложить в ряды по четыре штуки так, чтобы сумма чисел в каждом ряду была равна 34. Затем сын Ноя Чепмэна, Фрэнк Чепмэн привёз доработанные головоломки в Сиракузы (штат Нью-Йорк), а затем в Хартфорд (Коннектикут), где слушатели Американской школы для слабослышащих начали производство головоломки. К 1879 году она уже продавалась не только в Хартфорде, но и в Бостоне. Тогда о «пятнашках» узнал художник по дереву Маттиас Райс. В декабре 1879 года он начал бизнес по производству новой головоломки под названием «Драгоценная головоломка» (англ. Gem Puzzle). В начале 1880 года некий Чарльз Певи, дантист из Ворчестера, привлёк внимание общественности, предложил денежное вознаграждение за решение задачи собирания головоломки, что добавило популярности новой забаве. Весной того же года игра достигла Европы. 21 февраля 1880 года Ной Чепмэн попытался оформить патент на своё изобретение (патент назывался «Головоломка из бриллиантовых блоков», «Block Solitaire Puzzle»), однако заявка на патент была отклонена, так как мало отличалась от уже оформленного тремя годами ранее патента «Хитрые блоки», «Puzzle-Blocks»

2.2 Математическое описание

Пятнашки представляют собой классическую задачу для моделирования эвристических алгоритмов. Обычно задачу решают через количество перемещений и поиск манхттенского расстояния между каждой костяшкой и ёё позицией в собранной головоломке. Для решения используются алгоритмы наподобие алгоритма А*

Нерешаемая комбинация, предложенная Ноем Чепменом

Можно показать, что ровно половину из всех возможных 1 307 674 368 000 (=15!) начальных положений пятнашки невозможнопривести к собранному виду: пусть квадратик с числом i расположен до (если считать слева на право и сверху вниз) k квадратиков с числами меньшими i. Будем считать ni = k, то есть если после костяшки с i-м числом нет чисел, меньших i, то k = 0. Также введем чмсло е — номер ряда пустой клетки (считая с 1). Если сумма является нечётной, то решения головоломки не существует.

Для вариантов пятнашек с большим, чем 15, количеством костяшек задача поиска кратчайшего решения является NP-полной

2.3 Алгоритм

Алгоритм ни в коем разе не претендует на оптимальный и самый лучший.

И так по шагам:

1. Ставим «1» на свое место.

2. Ставим «2» на свое место.

3. Ставим «3» на место «4».

4. Ставим «4» на место «8».

Таким образом получаем следующий расклад (рисунок 2. 1).

1

2

_

3

9

12

10

4

6

8

11

5

15

14

13

7

Рисунок2.1 — Шаг 1

5. Ставим «3» и «4» на свое место

6. Ставим «5» и «6» на свое место «7» и «8» аналогично «3» и «4»

1

2

3

4

5

6

_

7

10

12

11

8

15

14

13

9

Рисунок 2.2 — Шаг 2

7. Ставим «7» и «8» на свои места

Выставленные фишки больше никогда не трогаем.

8. Ставим «9» в правый нижний угол, чтобы исключить неопределенную ситуацию

9. Ставим «13» на место «9», «9» на место «10»

Получаем (Рисунок 2. 3)

1

2

3

4

5

6

7

8

13

9

12

14

10

15

11

_

Рисунок 2.3 — Шаг 3

10. Ставим «13» и «9» на свои места и больше их не трогаем.

11. Загоняем «10» сначало на место «14» а затем в правый нижний угол, чтобы выстроить правильную последовательность.

Получаем (Рисунок 2. 4).

1

2

3

4

5

6

7

8

9

15

14

11

13

12

_

10

Рисунок 2.4 — Шга 4

11. Ставим «11» на место «10», чтобы предотвратить неопредленную

ситуацию.

12. Ставим «10» в правый нижний угол.

13. Ставим «11» на «15».

12. Поднимаем «10» на место"12″ под нее ставим «11» и «12» на место «15»

Получаем (Рисунок 2. 5).

1

2

3

4

5

6

7

8

9

15

_

10

13

14

12

11

Рисунок 2.5 — Щаг 5

13. И очевидными шагами достигаем цели.

2.4 Разновидности и вариации игры

Подробно останавливаться на вариациях, в которых только увеличены размеры поля, мы не будем. Собрать головоломку 4×4, 5×5…, 10−10 не столько сложнее, сколько просто дольше. Но есть ряд игр, в основу которых лег игровой механизм пятнашек (или внешняя схожесть с головоломкой), но игровой процесс которых имеет свои нюансы. Часть из них мы и рассмотрим ниже.

RATE YOUR…

Головоломка, разновидность обычных пятнашек 4×4, но с подвохом. На плитки нанесены не числа, а буквы, которые в собранном состоянии образуют фразу RATE YOUR MIND PAL (что можно перевести как: «пораскинь мозгами, приятель»). Собранная головоломка показывается «жертве», и затем буквы перемешиваются. На первый взгляд бессистемно. На самом деле, «тасующий» загоняет букву R из слова YOUR в верхний угол, на место буквы R слова RATE. Большинство людей оставит букву R на «ее месте» -- в левом верхнем углу, и будет пытаться расположить по порядку остальные буквы. Эта задача безнадежна, потому что, такая перестановка букв R, изменяет четность композиции и «жертва» решает ее фрагмент с нечетным параметром беспорядка. В лучшем случае у нее получится фраза «RATE YOUR MIND PLA». В русском варианте используется фраза (без знаков препинания) «СЛОН СПИТ СТОЯ. А ВЫ?». Для расстановки ловушки следует поменять местами буквы С в словах СЛОН и СПИТ (Рисунок 2. 6).

Рисунок 2.6 — RATE YOUR

Broken heart («Разбитое сердце»).

Эту головоломку недавно придумали в Японии. Доска в ней имеет размеры 17×17. Играют восемью плитками 6×5. Половина из них уложена горизонтально, а вторая половина -- вертикально. В собранном состоянии на фишках виден рисунок сердечка. Перед игрой фишки перемешивают, а цель игры в том, чтобы переставить прямоугольники так, чтобы собрать сердце заново. Сделать это не так просто, как может показаться, ведь три «горизонтальных» прямоугольника не помещаются в одной строке, а три «вертикальных» -- в одном столбце. (Рисунок 2. 7).

Рисунок 2.7 — Broken heart («Разбитое сердце»)

Genius.

Автором головоломки является Милтон Бредли, запатентовавший ее в 1982 году. На поле 3×3 необходимо перемещать (по «пятнашечному» принципу) 8 плиток, подсвеченных светодиодами. Как только плитка занимает свое место, ее светодиод загорается. Цель игры -- «зажечь» все плитки (Рисунок 2. 8).

Рисунок 2.8 — Genius

Virus.

Разновидность пятнашек с полем 4×4, запатентованная Довом Несисом в 1998 году. Плитки под пауком необходимо выстроить так, чтобы получился рисунок паутины. Сложности игре добавляет то, что оказавшись на своем месте, плитка, располагающаяся под одной из 6 лапок паука, блокируется и не принимает участие в дальнейшем перемещении (Рисунок 2. 9).

Рисунок 1.9 — Virus

Sokoban («кладовщик», «грузчик»).

Не стану утверждать, что игра явилась первой компьютерной вариацией пятнашек, но то, что она была (и есть) одной из самых известных, это совершенно точно. Автором (японец Хироуки Имабаячи (Hiroyuki Imabayashi) придумал ее в 1980 году. Суть классической игры в перемещении коробок по складу с тем, чтобы расставить их на отмеченные места. В игре есть ряд ограничений -- коробки перемещать можно только по одной и нельзя их тянуть, а можно только толкать перед собой. Загнанная в угол коробка там и останется, а игру придется начинать заново (Рисунок 1. 10).

Рисунок 1. 10 — Sokoban («кладовщик», «грузчик»)

Магический квадрат.

Головоломка с клетками и числами для любителей математики, не требующая для решения ничего, кроме листочка с бумагой и карандаша. В квадрате заданного размера необходимо расставить все числа так, чтобы сумма чисел, стоящих по вертикали, горизонтали и главным диагоналям была одинакова. Например, в квадрате 3×3 необходимо расставить цифры от 1 до 9, а в квадрате 4×4 числа от 1 до 16 и т. д. В первом случае сумма решения равна 15, во втором 34.
Интересно, что в первоначальном варианте пятнашек почмейстера Чепмена как раз необходимо было сложить такой квадрат со сторонами 4×4. «Довел до ума» игру его сын Фрэнк Чепмен (Рисунок 1. 11).

Рисунок 1. 11 — Магический квадрат

Минус-кубик.

Объемный вариант пятнашек, изобретенный М. И. Зубряевым и выпускаемый в СССР. В прозрачную коробку уложены 7 двуцветных кубиков. Одно место остается пустым. Перемещая кубики, необходимо сложить их так, чтобы каждая сторона «недокуба» была окрашена в свой цвет. Интересно, что головоломка выпускалась в двух вариантах, московском и свердловском. И при внешнем сходстве (игрушки различались только цветами), собрать свердловский вариант оказывалось гораздо труднее. Дело тут в различиях в начальном расположении кубиков в коробке, которое влияет на число доступных верных решений. У московского варианта таких решений было в 12 раз больше (Рисунок 2. 12).

Рисунок 2. 12 — Минус-кубик.

Минус-шарик.

Головоломка Минус-шарик напоминает вышеописанный минус-куб. Тот же прозрачный куб, но заполненный не кубиками, а шариками трех цветов. Для обеспечения возможности перемещения шариков одного шарика не хватает. Цель игры заключается в том, чтобы расставить шарики так, чтобы образовалось три слоя, окрашенных каждый в свой цвет.

Существовал западный аналог головоломки, называющийся «Mad Marbles», в котором на месте центрального шарика располагалась крестовина (Рисунок 2. 13).

Рисунок 2. 13 — Минус шарик

Sliding Piece Puzzle (головоломки с подвижными блоками).

Большой и очень популярный на Западе пласт головоломок, к которому можно отнести и пятнашки, и большинство других головоломок из данной статьи. Игровой механизм головоломки уже знаком нам -- существует ряд плиток (обычно различного размера и формы), которые надо упорядочить определенным образом, используя свободное место на игровом поле. (Рисунок 2. 14).

Рисунок 2. 14 — Sliding Piece Puzzle

3. РАЗРАБОТКА ПРОЭКТА

3.1 Постановка задачи

Требуется разработать проект в Visual BASIC, который будет представлять собой игру пятнашки, имеющую несколько разных картинок.

3.2 Описание Проекта «собери картинку»

visual basic пятнашки

Сразу при запуске приложения «15. exe» можно увидеть специфический интерфейс (Рисунок 3. 1).

Рисунок 3.1 — Окно запуска программы

Окно содержит две кнопки «<» и «>» они служат для выбора картинок заложенных в программу (Рисунок 3. 2).

Рисунок 3.2 — Кнопки смены картинок

Если картинка не выбрана, программа выдаёт сообщение о том что надо выбрать картинку (Рисунок3. 3).

Рисунок 3.3 — Ошибка

В данной версии игры представлены три картинки (Рисунок 3. 4).

Рисунок 3.4 — Предоставленный выбор картинок

Когда картинка выбрана нажимаем кнопку «СТАРТ!!!», иначе, если вы передумали играть, можно нажать кнопку «выход» и приложение закроется (Рисунок 3. 5).

Рисунок 3.5 — Картинка выбрана, нажимаем «СТАРТ!!! «

После нажатия кнопки «СТАРТ!!!» открывается новое окно в котором мы видим с левой стороны образец картинки, а справа эта же картинка только разбитая на 16 частей, которые нам и предстоит собрать (Рисунок 3. 5).

Рисунок 3.5 — Основное игровое окно

Рисунок 3.6 — Выбор режима игры

В игре существует два режима игры:

Таймер — вы сами вводите определённое время и за это время вы должны выставить картинку.

Секундомер — отображает время игры.

Когда время игры выбрано, нажимаете кнопку «СТАРТ!!!» (Рисунок 3. 7).

Рисунок 3.7 — Нажимаем кнопку «СТАРТ!!!»

Когда кнопка старт нажата, в соответствии с режимом игры, выбранным, вами время будет, или отсчитываться, или прибавляться.

При выборе режима игры «Таймер», если ваше время заканчивается, то приложение выдаёт ошибку и выводит нас на первое окно (рисунок 3. 8).

Рисунок 3.8 — Ошибка

Когда картинка собрана нажимаете кнопку «Готово» и приложение, добавляет 16 квадрат и выдает сообщение (Рисунок 3. 9).

Рисунок 3.9 — Картинка полностью собрана

Можете нажать кнопку «Назад» и попробовать собрать ещё одну картинку.

ЗАКЛЮЧЕНИЕ

Все поставленные цели, по разработке проекта «Собери картинку» были выполнены полностью. Этот проект может заменить стандартную игру пятнашки придуманную в 1874 году Ноем Палмер Чемпмэном. Она состояла из шестнадцати пронумерованных квадратиков, которые надо было сложить в ряды по четыре штуки так, чтобы сумма чисел в каждом ряду была равна 34. Затем сын Ноя Чепмэна, Фрэнк Чепмэн привёз доработанные головоломки в Сиракузы (штат Нью-Йорк), а затем в Хартфорд (Коннектикут), где слушатели Американской школы для слабослышащих начали производство головоломки.

Данный проект имеет замес-то стандартных фишек с цифрами, фишки с нарезками картинок, которые надо собрать воедино.

ПоказатьСвернуть
Заполнить форму текущей работой