Программное игровое приложение "Тетрис"

Характеристика предметной области. Назначение электронной системы, постановка задачи на ее разработку. Описание логической структуры. Используемые технические средства. Входные и выходные данные. Особенности разработки прикладного приложения "Тетрис".

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 24.05.2020
Размер файла 1,2 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Главное управление по образованию

Минского областного исполнительного комитета

Учреждение образования

«Новопольский государственный аграрно-экономический колледж»

Пояснительная записка к курсовому проекту

по учебной дисциплине «Основы алгоритмизации и программирования»

Программное игровое приложение «Тетрис»

Учащегося группы 21 по

И.Г. Колосовский

Руководитель

Е.П. Мишкевич

д. Новое Поле, 2019

Содержание

Введение

1. Назначение и области применения

1.1 Характеристика предметной области

1.2 Назначение электронной системы

1.3 Описание алгоритмов

2. Технические характеристики

2.1 Постановка задачи на разработку электронной системы

2.2 Описание электронной системы

2.2.1 Общие сведения

2.2.2 Функциональное назначение

2.2.3 Описание логической структуры

2.2.4 Используемые технические средства

2.2.5 Вызов и загрузка

2.2.6 Входные данные

2.2.7 Выходные данные

2.2.8 Рекомендации по использованию

Заключение

Список используемых источников

Приложения

Введение

электронный прикладной приложение тетрис

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

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

Объект исследования - игровые приложения.

Предмет исследования - программное игровое приложение «Тетрис».

Цель курсового проекта - разработать логическое приложение «Тетрис».

Из цели вытекают следующие задачи:

изучить особенности разработки прикладного приложения «Тетрис»;

разработать структуру приложения;

разработка и тестирование приложения;

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

В введение определена актуальность курсового проекта, объект и предмет исследования, цель и задачи курсового проекта.

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

В заключении проведен анализ проделанной работы.

1. Назначение и области применения

1.1 Характеристика предметной области

Темтрис (производное от «тетрамино» и «теннис»[2]) - компьютерная игра, первоначально изобретённая и разработанная советским программистом Алексеем Пажитновым. Игра была выпущена 6 июня 1984 года - в это время Пажитнов работал в Вычислительном центре Академии наук СССР.

Интерес к фигурам домино, тримино, тетрамино и пентамино в СССР возник благодаря книге С.В. Голомба «Полимино» (издательство «Мир», 1975 год). В частности, пентамино было настолько популярно, что в «Науке и жизни» начиная с 1960-х годов был постоянный раздел, посвящённый составлению фигурок из набора пентамино, а пластмассовые наборы пентамино иногда продавались в магазинах.

«Тетрис» был впервые написан Алексеем Пажитновым в июне 1984 года на компьютере Электроника-60. Работая в ВЦ Академии наук СССР, Пажитнов занимался проблемами искусственного интеллекта и распознавания речи, а для обкатки идей применял головоломки, в том числе и классическое пентамино. Пажитнов пытался автоматизировать укладку пентамино в заданные фигурки. Однако вычислительных мощностей тогдашнего оборудования для вращения пентамино не хватало, приходилось отлаживать на тетрамино, что и определило название игры.

Рисунок 1. 7 «кирпичиков-тетрамино» тетриса: I, J, L, O, S, T, Z

В тех опытах и родилась основная идея «Тетриса» - чтобы фигурки падали, а заполненные ряды исчезали.

Для IBM PC игра была переписана на Turbo Pascal 16-летним школьником Вадимом Герасимовым.

Игра быстро распространилась по Москве и далее по всему миру. Несколько месяцев спустя про игру узнал импортёр программного обеспечения из Венгрии -- Роберт Стейн. Стейн поехал в Москву, где встретился с Алексеем Пажитновым и договорился о лицензии на выпуск игры. По какой-то неизвестной для Стейна причине Пажитнов подарил ему тетрис. Роберт Стейн сразу решил, что игру можно было свободно издавать.

Стейн продал права на «Тетрис» компании Mirrorsoft (и её дочерней компании Spectrum HoloByte), принадлежащей британскому медиа-магнату Роберту Максвеллу. Стейн приехал договариваться о покупке прав у реальных правообладателей спустя несколько месяцев после заключения сделки. Русские отказались продавать Стейну права на «Тетрис» на его условиях. Тем временем две компании Максвелла -- британская Mirrorsoft и американская Spectrum Holobyte -- выпускают свой вариант «Тетриса». У игры появляются качественные по меркам того времени графика и звук, а также «русский колорит» -- в фоновых заставках программы появляются Юрий Гагарин, Матиас Руст, незадолго до этого совершивший посадку своего спортивного самолёта на Красной площади, и другие подобающие случаю персонажи. На глазах рождается сенсация -- первая игра из-за «железного занавеса».

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

Пока Стейн тратит попусту время на уговоры руководителей «Электроноргтехники», Spectrum Holobyte и Mirrorsoft на условиях сублицензирования продают права на разработку консольных версий «Тетриса» соответственно фирмам Bullet-Proof Software и Atari Games. При этом первая получает возможность разрабатывать программы только для систем, продающихся на японском рынке. Условия второй гораздо выгоднее -- её «зона ответственности» включает Японию и США.

В 1989 году в Nintendo полным ходом идёт разработка карманной игровой приставки Game Boy. Глава американского отделения фирмы Минору Аракава (Minoru Arakawa) убеждает президента Bullet-Proof Software Хенка Роджерса (Henk Rogers) вступить в переговоры со Стейном по поводу возможности разработки версии «Тетриса» для Game Boy. Тот согласен, однако Стейн не отвечает на попытки войти с ним в контакт. Тогда Роджерс летит в Москву. Чувствуя неладное, следом за ним в столицу СССР отправляется и Стейн. Туда же летит и Кевин Максвелл - сын медиа-магната.

Первым в «Электроноргтехнике» встречают Роджерса. Президент Bullet-Proof Software уже знает Пажитнова и Владимира Похилко, который до того, как присоединиться к разработке компьютерных игр, был профессором психологии МГУ. Роджерс производит благоприятное впечатление на собеседников и заключает контракт, согласно которому его компания теперь может разрабатывать версии «Тетриса» для карманных устройств. После этого он с гордостью демонстрирует своим новоявленным партнерам версию «Тетриса» для Famicom.

Роджерс пытается объяснить природу своих взаимоотношений с Spectrum Holobyte, Mirrorsoft и Tengen - подразделением Atari Games, занимающимся разработкой консольных игр. Ему-то пришлось приобретать права на свой японский «Тетрис» ещё и у Tengen. А та в свою очередь, имея лицензию на разработку программ для Nintendo Entertainment System, сделала специальный чип, позволяющий обходить защитные механизмы Nintendo и создавать картриджи для этой игровой системы фирмам, не являющимся лицензиатами Nintendo. Противоречия между Nintendo и Atari (с Atari Games и Tengen) настолько глубоки, что практически никто не сомневается в длительном судебном противостоянии этих фирм. Разбирательства между Nintendo и Atari продолжались вплоть до 1993 года.

В «Электроноргтехнику» прибывает Кевин Максвелл и там ему демонстрируют картридж с «Тетрисом» для Famicom. Будучи совершенно неосведомлённым о действиях компании, основанной его отцом, Кевин поначалу отказывается верить своим собеседникам. Однако на картридже явственно видна надпись - Mirrorsoft. Младшему Максвеллу ничего не остаётся, кроме как заявить, что это, по всей вероятности, подделка.

В итоге к началу 1989 года до полудюжины различных компаний заявили о своих правах на версии «Тетриса» для разных компьютеров, игровых консолей и карманных игровых систем. «ЭЛОРГ» заявила, что эти компании не имеют никаких прав на версии для игровых автоматов, и предоставила эти права компании Atari. Права же на версии для игровых консолей (видеоприставок) и портативных игровых систем, в острой и драматичной конкурентной борьбе с Atari (в которой могли быть замешаны самые высокие лица советского государства) - компании Nintendo. Сумма сделки с Nintendo составила 450 тыс. долларов США, плюс 50 центов с каждого проданного картриджа.

Tengen (подразделение компании Atari, занимающееся программным обеспечением для игровых консолей) выпустила свой вариант игры для консоли Nintendo NES, игнорируя соглашение, и многие игроки сочли версию Tengen лучше версии Nintendo. Игру назвали TETRIS. Но Nintendo подала на Tengen в суд и выиграла. Всего через несколько месяцев после выпуска TETЯIS игру пришлось отозвать, после продажи около 50 тысяч экземпляров.

В марте 1989 года Роджерс вновь в Москве, куда следом за ним прилетают Аракава и главный исполнительный директор американского отделения Nintendo Говард Линкольн (Howard Lincoln). В «Электроноргтехнике» их заверяют, что если тема «Тетриса» будет в судебном разбирательстве между Atari и Nintendo, то в Nintendo могут рассчитывать на «помощь Москвы». Встреча завершается подписанием контракта, сумма которого различными источниками оценивается от 3 до 5 млн дол.

Nintendo официально уведомляет Atari Games, что у той нет прав на легальный выпуск «Тетриса» для Nintendo Entertainment System. Лишь две недели спустя Tengen подаст заявку на получение авторских прав на этот продукт.

Несмотря на то, что игра Tetris родом из СССР и появилась ещё в середине 80-х, многие жители уже бывшего Союза впервые познакомились с ней лишь десятилетие спустя - благодаря портативной игровой консоли Brick Game E9999 in 1.

Но в западных странах игра Tetris в различных модификациях активно распространялась и до того. Кстати, Tetris стал первой советской компьютерной игрой, вышедшей на Западе, а вопросом её лицензирования занимались на высшем государственном уровне, в том числе опосредствованно в этом принимал участие и генеральный секретарь ЦК КПСС Михаил Горбачёв.

Роберт Максвелл в ярости - позиции Mirrorsoft и Atari нужно срочно укреплять. Пытаясь переломить ситуацию, он задействует ресурсы своей империи, в которую входят газетный концерн Mirror Newspaper Group (в Англии) и издательство Macmillan (в США). Связи Максвелла обширны -- недаром его в то время называли «вероятно, не только советским агентом». Правительства Великобритании и СССР вступают в диалог с магнатом. Из Москвы Максвеллу приходит уверение в том, что ему «не нужно беспокоиться по поводу японской компании». Сообщение было послано лично Михаилом Горбачёвым. Но на стороне Роджерса был Пажитнов, а также щедрые обещания от Nintendo. Через 4 дня переговоров они наконец согласились. Было подписано соглашение, и Пажитнов с Роджерсом отпраздновали это в единственном японском ресторане в Москве.

Говард Линкольн ещё раз прилетает в Москву и убеждается в том, что «Электроноргтехника» не желает уступать властным структурам. В мае выходит «Тетрис» для Nintendo Entertainment System от Tengen. В июне начинаются слушания по делу Nintendo против Tengen и Atari Games. 15 июня судья Ферн Смит (Fern Smith) принимает решение в пользу Nintendo - Tengen запрещены производство и продажа «Тетриса». Проходит ещё немного времени, и Nintendo представляет Game Boy, в комплект поставки которого входит «Тетрис».

Nintendo от продажи игры получила очень неплохие прибыли, но сам Алексей Пажитнов смог воспользоваться плодами своего детища только в 1996 году, когда истёк срок первоначальной лицензии, и он начал получать первые (весьма небольшие) отчисления от продаж.

В 1996 году он с Хенком Роджерсом создал компании The Tetris Company LLC и Blue Planet Software, пытаясь получить прибыль от бренда Tetris. The Tetris Company LLC (TTC) зарегистрировала слово Tetris как торговую марку. С тех пор несколько компаний купили у TTC лицензию на торговую марку, но законность игр тетрамино, которые не используют название Tetris, не оспаривалась в суде. По американским законам, игру нельзя защитить авторским правом (только запатентовать), поэтому основным имуществом компании является торговая марка Tetris. Несмотря на это, TTC преследует клоны игры под именами, непохожими на Tetris. В мае 2010 года юрист TTC послал письмо в Google с требованием убрать с рынка Android Market все 35 клонов данной игры, хотя их имена не схожи с именем «Tetris».

В 1996 году Алексей Пажитнов устроился на работу в Microsoft, где под его руководством был выпущен набор головоломок Pandora's Box. Сейчас непосредственно программированием Алексей Пажитнов уже давно не занимается, он работал в подразделении Microsoft разработчиком компьютерных игр с 1996 по 2005 год.

Однако 29 июня 2010 года в интервью журналистам одного из игровых порталов Алексей Пажитнов сказал, что последние десять лет он работал над многопользовательским режимом для своего детища. Но самое интересное, что он ещё не закончил.

Он сказал: «Главная проблема кроется в динамичности Тетриса. На последних уровнях всё ваше внимание сосредоточено на игре, любое неосторожное движение и вы проиграете. Так что у вас просто не будет времени смотреть, что делают другие игроки».

В 2019 году многопользовательский тетрис всё-таки появился на консоли Nintendo Switch под названием Tetris 99. Многопользовательским элементом стала возможность во время набора очков «подбрасывать» неполные ряды клеток в стаканы другим 98 участникам, пока не проиграют все, кроме одного.

«Для меня это универсальная вещь, которая случается со всем искусством и художниками», - сказал Браун. «Вы делаете что-то для людей, и это становится популярным. Как только это выходит в мир, оно может быть переопределено другими людьми и стать чем-то совершенно другим. Это то, что случилось с« Тетрисом ». В крайнем случае, я думаю об этом как об объективе, чтобы рассмотреть эту тему во всем искусстве и коммерции ".

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

1.2 Назначение электронной системы

«Тетрис» представляет собой головоломку, построенную на использовании геометрических фигур «тетрамино» - разновидности полимино, состоящих из четырёх квадратов. Полимино в том или ином виде использовались в настольных играх и головоломках задолго до создания «Тетриса». Идею «Тетриса» Пажитнову подсказала игра в пентамино. Первоначальная версия игры была написана Пажитновым на языке Паскаль для компьютера «Электроника-60».

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

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

Коммерческая версия игры - первая из многих последующих - была выпущена американской компанией Spectrum HoloByte в 1987 году. В последующие годы «Тетрис» во множестве различных версий был портирован на великое множество устройств, включая все возможные компьютеры и игровые консоли, а также такие устройства, как графические калькуляторы, мобильные телефоны, медиа-плееры, КПК и - в качестве «пасхального яйца» - устройства, вовсе не предназначенные для воспроизведения медиа-контента, такие, как осциллограф и паяльник.

Игра реализована практически на всех современных компьютерах, включая КПК, мобильные телефоны, игровые видеоприставки, телевизоры (как доп. функция), множество карманных игровых устройств. Есть варианты игры для всех сколько-нибудь распространённых ОС, а также для Java. Есть порт даже для осциллографа. Трудно, если вообще возможно, назвать такую вычислительную платформу, где бы не было этой игры.

Особую известность в США, Европе и Японии приобрела версия для портативной консоли GameBoy, выпускавшаяся японской компанией Nintendo - игра поставлялась с каждой консолью; в России и Китае большой популярностью пользовались более примитивные устройства Brick Game со встроенной игрой. По количеству проданных коммерческих версий «Тетрис» превосходит любую другую компьютерную игру в истории - лишь для одной GameBoy было продано 35 миллионов копий; в 2014 году Хэнк Роджерс, глава The Tetris Company, утверждал, что количество платных загрузок игры для мобильных телефонов превысило 425 миллионов.

Существует и более сложная версия игры Pentix («Пентикс»), которая использует все фигуры от 1х1 до пентамино (18 пентамино, 7 фигур тетриса, и 4 фигуры из меньшего числа клеток).

Также есть реализация игры, где элементами фигур являются треугольники - Crazy Tetris от Astatix Software, Amazing Tetris.

Один из новейших примеров - игра Dwice, разработанная в 2006 году самим изобретателем Тетриса, Алексеем Пажитновым.

1.3 Описание алгоритмов

Программа состоит из блоков двумерных массивов. Массив - это индексированный набор объектов одного типа (tetramino: Array [1..7, 1..4] of TTetr - создание блоков, из которых строятся фигуры, где указывается количесиво фигур (как мы помним, их всего 7) и их размеры).

Рисунок 2. Массив блоков

В создании алгоритма использовался массив как математический аналог поля "Тетриса". Каждая ячейка массива соответствует определенной области поля игры. Каждая область поля игры может быть заполнена фигурой или быть пустой. Соответственно, каждая область поля может принимать два значения. Для этих целей можно использовать логические переменные.

Сама фигура - это элемент 2 мерного массива. Каждая фигура имеет определенную форму и занимает несколько областей поля игры. Следовательно, в массиве, ячейки, соответствующие заполненным областям поля, будут иметь логическое значение true. Для ячеек, соответствующих пустым областям, будет присвоено логическое значение false.

Во многих реализациях стакан изначально не пуст. Есть реализации (например, бесплатная Gravytris для Microsoft Windows) с более реалистичными правилами гравитации: например, при пропадании горизонтального ряда блоки, которые выше его, соединяются в связные области и каждая область падает, пока не наткнётся на блок; это может привести к заполнению новых рядов и новым падениям, и так далее.

Были написаны трёх- (Blockout фирмы California Games, 1989 год), четырёх- (HyperTetris, 1996 год) и даже n-мерный (Polytope Tetris, 2003 год) варианты тетриса, а также модификации для двух и более игроков.

Существуют также версии игры, в которых игра ведётся не на очки, а на открытие спрятанного изображения. Для облегчения игры есть варианты без сложных S- и Z-образных фигур и без увеличения скорости игры.

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

Равные промежутки времени можно обеспечить с помощью обсчета ресурсоёмкого алгоритма или использовать элемент языка Delphi таймер (который был использован в данной программе). Каждый тик таймера будет происходить повторение алгоритма движения фигуры. Это представлено как последовательное изменение значений в ячейках массива.
Чтобы игра была работоспособной, необходимо каждой ячейки массива каждый тик таймера присваивать значения, соответствующие областям поля. Т.к. количество ячеек, удобно было использовать циклические конструкции. Это позволило сократить программный код и количество ошибок в нем. Для этих целей был использован оператор for.

Игра тетрис требует изображение областей поля в виде в квадратов. Для этого была использована структура canvas (прямоугольник). Для ее описания необходимы координаты верхнего левого угла прямоугольника (что соответствует значениям вертикали и горизонтали поля игры), а также его размеры. Структура Region позволяет объединять разные изображения в одно.

Вернемся к игре. Одними из главных частей (по моему мнению) являются:

Движение влево - процедура moveleft;

Движение вправо - процедура moveright;

Движение вниз - процедура movedown;

Переворот - процедура rotatefigure.

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

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

2. Технические характеристики

2.1 Постановка задачи на разработку электронной системы

В соответствии с целью работы были поставлены и решены следующие основные задачи:

Обследование и разработка технического задания

Построение блок-схемы программы

Разработка программы.

Тестирование и устранение ошибок.

Информационной базой исследования является учебная литература по дисциплине «Программирование на языках высокого уровня», методическое пособие по написание курсовых работ по дисциплине “Программирование на языке высокого уровня”.

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

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

Составление алгоритма программы (блок-схема);

Анализ исходных данных;

Выбор компонентов, которые будут использоваться для реализации программы;

Разработка интерфейса программы;

Программирование процедур и событий для компонентов программы

Отладка программного проекта и устранение ошибок и недочетов.

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

При разработке программы, предназначенной для работы в Windows, требования к ней могут включать пункты о желаемом виде диалоговых окон программы.

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

Этап 1. Определение целей программы.

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

Этап 2. Проектирование программы.

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

Этап 3. Написание кода.

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

Иначе говоря, проект программы переводится на язык Lazarus. Именно на этой стадии требуются знания языка Lazarus.

Механика этого процесса зависит от среды программирования, в которой идёт работа. На этом этапе можно также добавить комментарии к программе.

Этап 4. Компиляция.

Следующим этапом разработки является компиляция исходного кода. И в этом случае детали зависят от среды программирования. Компилятор представляет собой программу, в обязанности которой входит преобразование исходного кода в исполняемый код.

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

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

Этап 5. Запуск программы на выполнение.

Как правило, исполняемый файл представляет собой программу, которую можно запускать на выполнение. Чтобы запустить программу, во многих известных средах, включая консоли MS-DOS, Unix, Linux, необходимо ввести с клавиатуры имя исполняемого файла. Другие среды, такие как система VMS на миникомпьютерах VAX, могут требовать ввода команды запуска или использования какого-либо другого механизма.

Среды IDE (Integrated development environments - интегрированная среда разработки), подобные тем, что поставляются для Windows и Macintosh, позволяют редактировать и выполнять программы на Lazarus внутри среды, выбирая соответствующие пункты меню или нажимая специальные клавиши. Полученная программа может быть запущена на выполнение непосредственно из операционной системы путем одиночного или двойного щелчка на соответствующей пиктограмме;

Этап 6. Тестирование и отладка программы.

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

Достаточно часто в программах можно обнаружить ошибки. Отладка - это процесс обнаружения и исправления программных ошибок.

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

Можно допустить ошибки при наборе кода с клавиатуры. Можно неправильно расставить скобки. Способов много. Компилятор отслеживает многие виды ошибок;

Этап 7. Сопровождение и модификация программы.

Часто появляются причины для внесения в готовую программу изменений. Это объясняется наличием ошибок в программе, либо желанием разработчика добавить в программу новые функциональные возможности, либо необходимостью адаптировать программу для выполнения в различных компьютерных системах. Решение задач подобного рода существенно упрощается, при четком документировании программы.

Для того, чтобы игровое приложение функционировало на компьютере, ПК должен поддерживать расширение .exe.

Данный курсовой проект написан на языке программирования Delphi.

Delphi - прекрасная система визуального объектно-ориентированного проектирования, одинаково радующая и новичков в программировании, и профессионалов. Delphi позволяет сразу, с небольшими затратами времени и сил создавать прикладные программы, которые внешне неотличимы от программ, созданных профессионалами. А для опытного программиста Delphi открывает неограниченные возможности для создания сколь угодно сложных программ любого типа, в том числе, распределённых приложений, работающих с любыми базами данных.

2.2 Описание электронной системы

2.2.1 Общие сведения

Игровое приложение «Тетрис» является всем известным прототипом обычной головоломки, изготовляемой из природных материалов. Данная программа состоит из тех же элементов, как самый простой лабиринт, и выполняет такие же функции.

Для разработки программы использовалась среда программирования Delphi 10.0 под управлением Windows 7. Данная среда программирования позволяет создавать программы, состоящие из неограниченного количества модулей, поддерживает все современные технологии в области программирования, отвечает принципам объектно-ориентированного программирования.

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

Работа проведена с целью разработки тестирующей программы в среде Delphi, соответствующей заданным условия.

2.2.2 Функциональное назначение

Данная программа является игровой, она применяется для развлечения пользователей, совершенствования их координации движения и логического мышления, а также решает такие классы задач, как:

способ развития мелкой моторики, координации движений;

развитие сосредоточенности, внимания;

развитие азарта и поднятие адреналина;

способ отвлечься от дел.

Возрастное ограничение на использование данного программного продукта не предусматривается, так как игра подходит для детей раннего возраста и для взрослых.

Также еще более интересной игры с каждой линей увеличивается скорость падения фигур.

По программным, ограничений не присутствует, так как программа стабильно работает, благодаря более-менее рациональному написанию кода для программы.

2.2.3 Описание логической структуры

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

Из выше перечисленных заданий к разработке программного средства относится:

разработка функции генерации рандомных фигур;

прорисовка каждого элемента;

разработка передвижения игроком фигуры и их вращение по игровому полю с помощью клавиш клавиатуры;

создание и разработка дизайна и удобного интерфейса для игрового приложения «Лабиринт»;

Main.pas - главный модуль программы. Содержит основной код приложения, включая ресурсы;

Для прорисовки каждого элемента использовался стандартный элемент Canvas Delphi - это холст, который позволяет программисту иметь доступ к каждой своей точке (пикселу), и словно художнику отображать то, что требуется. После зоздания холста прорисовываем текстуры:

Рисунок 3. Прорисовка текстур квадратов

Обратите внимание, что мы заполняем весь прямоугольник, а потом еще дорисовываем контуры

Рисунок 4. Пример прорисовки фигуры «Т»

2.2.4 Используемые технические средства

Курсовой проект разработан на ноутбуке с операционной системой Windows 7 (процессор - Intel Core i7-33717 1.9 GHz, ОЗУ - 8ГБ)

Название

Dell Inspiron 15z 5523 (5523-7071)

Вид

Персональный

Процессор

Intel Core i5 3317U

Видеокарта

NVIDIA GeForce GT 630M

Оперативная память

8 ГБ

Вид оперативной памяти

DDR3

Экран

1366 x 768

Количество USB 2.0

2 шт

Количество USB 3.0

2 шт

VGA

Нету

HDMI

Есть

Установленная OC

Windows 7

Количество динамиков

2 шт

Количество памяти HDD

256 ГБ

Также для функционирования данного программного средства необходимо:

IBM-совместимый компьютер под управлением операционной системы семейства Windows (не ниже XP);

монитор с разрешением экрана не ниже 1024х768 (рекомендуемое 1280х720);

около 2-3 МБ свободного места на жёстком диске для установки и работы программы;

манипулятор типа «мышь», для ориентирования по главному меню;

Средство для передвижения фигур - клавиатура.

Операционная система Windows 7 - это производительная и надежная система с возможностями управления компьютером и файлами, которая помогает выполнять на персональном компьютере привычные задачи намного быстрее и проще.

Что касается приложений, разработанных для ранних версий Win, то здесь возникают некоторые проблемы. Так некоторые приложения, работающие под Win XP, не запускаются в среде Windows 7, а множество программ, созданных под Win XP и предыдущих версий ОС, запускаются в Windows 7 только в режиме совместимости. Совместимость программ - это режим, который позволяет выполнять программы, написанные для предыдущих версий Win.

Для написания курсового проекта было использовано программное средство DelphiXE3.

Программа позволяет достаточно несложно переносить Delphi-программы с графическим интерфейсом в различные операционные системы: Linux, FreeBSD, Mac OS X, Microsoft Windows, Android.

Delphi - это среда быстрой разработки, в которой в качестве языка программирования используется ObjectPascal. В основе идеологии Delphi лежит технология визуального проектирования и методология объектно-ориентированного языка программирования. Благодаря уникальной совокупности простоты языка и генерации машинного кода, позволяет достаточно низкоуровнево взаимодействовать с операционной системой, а также с библиотеками, написанными на C/C++.

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

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

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

Таким образом, преимущества Delphi по сравнению с аналогичными программными продуктами:

Быстрота разработки приложения (RAD);

Высокая производительность разработанного приложения;

Низкие требования к системе;

Удачная проработка иерархии объектов.

Тестовый контроль -- оперативная проверка качества усвоения знаний, немедленное исправление ошибок и восполнение пробелов.

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

Программа iSpringQuizMaker 8 -- программа, предназначенная для быстрого создания качественных тестов и опросов. Программа предлагает расширенные возможности по настройке правил тестирования и подсчета баллов.

Тесты и опросы, созданные в программе, можно легко опубликовать в любой системе дистанционного обучения, поддерживающей стандарты SCORM или AICC, отправить по электронной почте, сгенерировать в виде пригодном для публикации в сети интернет и использовании локально или просто экспортировать в Word для создания бумажной версии теста.

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

2.2.5 Вызов и загрузка

Запуск программы осуществляется так же, как и запуск любой другой программы в среде Windows, для этого необходимо щелкнуть мышью по пиктограмме запускающего файла.

Вызов программы производится с жесткого диска. Объем программы составляет 56 байт.

После запуска программы перед пользователем появляется окно игрового поля, начинается сама игра. Также есть такие элементы меню как:

Game - при нажатии данной кнопки появляется список с элементами:

New - начинает игру заново. После нажатия вылезет предупреждающее сообщение:

Рисунок 5. Предупреждающее сообщение

Pause - ставит игру на паузу;

Exit - выход из игры.

Score - вывод количества очков;

Speed - уровень скорости;

Line - сколько линий было составленно игроком;

Time - сыгранное время.

Рисунок 6. Главное поле

Во вкладке About находится вкладки:

About author - про автора

Рисунок 7. Вкладка об авторе

2.2.6 Входные данные

Входными данными являются коды клавиш со стрелками на клавиатуре, такие как: клавиши: «RIGHT», «LEFT», «UP», «DOWN» или «ESC» - вводимые в процессе игры в режиме реального времени. Данные переменные организованы в виде символьных переменных.

Также для навигации по меню используется мышка, ПКМ.

2.2.7 Выходные данные

Информация, выводимая на экран в графическом режиме: рисунок «коробки», падающие и лежащие на дне фигуры, поле с выводом следующей фигуры.

В правой части происходит вывод пользователю количества набранных очков и количество линий пользователя. Вывод осуществляется с помощью компонента Delphi TLabel.

Delphi компонент Label предназначен для отображения статического текста, то есть надписей и меток на Форме, которые не меняются в течение всего времени работы программы. Конечно, текст надписи, отображаемый компонентом Label можно изменить, но не непосредственно, а только программно. Свойством компонента Label, которое используется для задания отображаемого текста, является Caption.

2.2.8 Рекомендации по использованию

Для запуска игрового приложения «Тетрис», которое находится на компакт-диске либо на флэш накопителе, нужно найти папку с данной программой, где будет приложение с расширением .exe, под названием «Tetris». При нажатии на данную иконку, игровое приложение начнёт запускаться и на мониторе экрана, появится главная форма игрового приложения, а также начнется игра.

Рисунок 8. Запуск игрового приложения

Во вкладках выше формы находятся:

Начать новую игру;

Пауза;

Об авторе;

Выход.

При выборе первого пункта игра начнётся сначала, сбросив счетчик очков, очистит поле от фигур, после чего пользователь может начать игру.

Заключение

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

Несмотря на то, что с момента выхода Tetris прошло уже 35 лет, вычислительная мощность компьютером и игровых консолей возросла на порядки, пользователям предлагаются всё более фотореалистичные игры с продуманным сюжетом, эта головоломка всё ещё остаётся популярной. Она доступна на многих современных игровых платформах и продолжает привлекать внимание игроков, пожирая время часами.

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

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

Для реализации данного проекта использовался язык программирования Delphi, тем самым, при изучении новой среды программирования были изучены различные свойства реализации, создания и проектирования компьютерных игр.

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

Список используемых источников

1. Немнюгин, С. Изучаем Turbo Pascal. / С. Немнюгин, Л. Перколаб - СПб.: Питер, 2008. - 320 с.

2. Тетрис / Википедия. [Электронный ресурс]. - 2019. - Режим доступа: https://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D1%82%D1%80%D0%B8%D1%81 - Дата доступа: 17.05.2019.

3. Тетрис / И-Игрушки. [Электронный ресурс]. - 2019. - Режим доступа: https://www.i-igrushki.ru/otdykh-dosug/igrushkapedia/tetris.html - Дата доступа: 17.05.2019.

4. Тетрис / QaruSite. [Электронный ресурс]. - 2019. - Режим доступа: http://qaru.site/questions/122792/tetris-piece-rotation-algorithm - Дата доступа: 17.05.2019.

5. Форум программистов / CyberForum. [Электронный ресурс]. - 2019 - Режим доступа: http://www.cyberforum.ru/delphi/thread1854675 - Дата доступа: 16.04.2019.

6. Уроки Delphi для начинающих с нуля. [Электронный ресурс]. - 2019 - Режим доступа: http://www.delphi-manual.ru. - Дата доступа: 06.05.2019.

7. Основы алгоритмизации и программирования. [Электронный ресурс]. - 2019 - Режим доступа: https://studfiles.net/preview/5715184 - Дата доступа: 30.03.2019

8. Филиппова, Г.Т. Информатика в школе: создание веб-страниц в теории и на практике / Г.Т. Филиппова, В.А. Терещук, М.В. Садилова. - 3-е изд. - Минск: Аверсев, 2010. - 108 с.

9. Батхизин, В.В. Технология разработки программного обеспечения: учеб. пособие / В.В. Бахтизин, Л.А. Глухова. - Минск: БГУИР, 2010. - 267 с.

10. Адрианов В.И. Быстрый и правильный набор текстов на ПК. Самоучитель / В.И. Адрианов - СПб.: Питер, 2006. - 96 с.

11. Форум программистов / CyberForum. [Электронный ресурс]. - 2019 - Режим доступа: http://www.cyberforum.ru/delphi-beginners/thread614316.html - Дата доступа: 16.04.2019.

12. Культин, Никита Основы программирования в Delphi 7 / Никита Культин. - М.: БХВ-Петербург, 2013. - 640 c.

13. Культин, Н. Программирование в Turbo Pascal 7.0 и Delphi / Н. Культин. - М.: БХВ-Петербург, 2011. - 400 c.

14. Программирование в Delphi / kpolyakov.spb.ru [Электронный ресурс]. - 2019 - Режим доступа: http://kpolyakov.spb.ru/school/delphi.htm - Дата доступа: 16.04.2019.

15. Delphi для начинающих / YouTube. [Электронный ресурс]. - 2019 - Режим доступа: https://www.youtube.com/playlist?list=PLDDB9D4A0E37B4953 - Дата доступа: 16.04.2019.

16. Д. Ушаков, Т. Юрков / Паскаль для школьников. 2-е изд. - СПб.: Пиптер, 2013. - 320 с.: ил.

Приложения

Canmovedown

Canmoveleft

Canmoveright

Canrotate

Checkstakan

Drawsquare

Erasesquare

Fixfigure

Gameover

Gennextfigure

Hidefigure

Movedown

Moveleft

Moveright

Rotatefigure

Nextfigure

Newgame

Setspeed

Showfigure

Stopmove

unit Main;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

Menus, ExtCtrls, StdCtrls, Registry;

type

TForm1 = class(TForm)

MainMenu1: TMainMenu;

mnuGame: TMenuItem;

mnuNew: TMenuItem;

mnuS1: TMenuItem;

mnuExit: TMenuItem;

Timer1: TTimer;

Label1: TLabel;

Panel1: TPanel;

Image1: TImage;

Panel2: TPanel;

Image2: TImage;

Label2: TLabel;

Label3: TLabel;

mnuHelp: TMenuItem;

mnuAbout: TMenuItem;

Help1: TMenuItem;

procedure Pause1Click(Sender: TObject);

procedure mnuNewClick(Sender: TObject);

procedure Timer1Timer(Sender: TObject);

procedure FormKeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

procedure FormCreate(Sender: TObject);

procedure mnuExitClick(Sender: TObject);

procedure mnuAboutClick(Sender: TObject);

procedure Help1Click(Sender: TObject);

private

public

end;

TTetr = Array [1..4, 1..4] of Byte;

const

stakw = 10;

stakh = 20;

sqrs = 15;

tetramino: Array [1..7, 1..4] of TTetr = // массив блоков

(

(((1,1,0,0),(0,1,1,0),(0,0,0,0),(0,0,0,0)),

((0,1,0,0),(1,1,0,0),(1,0,0,0),(0,0,0,0)),

((1,1,0,0),(0,1,1,0),(0,0,0,0),(0,0,0,0)),

((0,1,0,0),(1,1,0,0),(1,0,0,0),(0,0,0,0))),

(((0,1,1,0),(1,1,0,0),(0,0,0,0),(0,0,0,0)),

((1,0,0,0),(1,1,0,0),(0,1,0,0),(0,0,0,0)),

((0,1,1,0),(1,1,0,0),(0,0,0,0),(0,0,0,0)),

((1,0,0,0),(1,1,0,0),(0,1,0,0),(0,0,0,0))),

(((0,1,0,0),(1,1,1,0),(0,0,0,0),(0,0,0,0)),

((0,1,0,0),(0,1,1,0),(0,1,0,0),(0,0,0,0)),

((0,0,0,0),(1,1,1,0),(0,1,0,0),(0,0,0,0)),

((0,1,0,0),(1,1,0,0),(0,1,0,0),(0,0,0,0))),

(((0,0,0,0),(1,1,1,1),(0,0,0,0),(0,0,0,0)),

((0,1,0,0),(0,1,0,0),(0,1,0,0),(0,1,0,0)),

((0,0,0,0),(1,1,1,1),(0,0,0,0),(0,0,0,0)),

((0,1,0,0),(0,1,0,0),(0,1,0,0),(0,1,0,0))),

(((1,1,0,0),(1,1,0,0),(0,0,0,0),(0,0,0,0)),

((1,1,0,0),(1,1,0,0),(0,0,0,0),(0,0,0,0)),

((1,1,0,0),(1,1,0,0),(0,0,0,0),(0,0,0,0)),

((1,1,0,0),(1,1,0,0),(0,0,0,0),(0,0,0,0))),

(((1,1,0,0),(0,1,0,0),(0,1,0,0),(0,0,0,0)),

((0,0,1,0),(1,1,1,0),(0,0,0,0),(0,0,0,0)),

((1,0,0,0),(1,0,0,0),(1,1,0,0),(0,0,0,0)),

((1,1,1,0),(1,0,0,0),(0,0,0,0),(0,0,0,0))),

(((1,1,0,0),(1,0,0,0),(1,0,0,0),(0,0,0,0)),

((1,1,1,0),(0,0,1,0),(0,0,0,0),(0,0,0,0)),

((0,1,0,0),(0,1,0,0),(1,1,0,0),(0,0,0,0)),

((1,0,0,0),(1,1,1,0),(0,0,0,0),(0,0,0,0)))

);

colors : Array [1..6] of Integer = (clAqua, clBlue, clGreen, clPurple, clRed, clYellow);

var

Form1: TForm1;

tetr, nexttetr : TTetr;

num, nextnum, gen, nextgen, fcl,nextfcl, speed, scoretospeed, lines : Integer;

x,y : Integer;

scores : Integer;

stakan : Array [-3..stakh, 1..stakw] of Integer;

reg : TRegistry;

implementation

{$R *.DFM}

uses About, Unit3, Unit4;

procedure setspeed(lvl : Integer);

begin

Form1.Label2.Caption := 'Speed: ' + IntToStr(lvl);

Form1.Timer1.Interval := 700 - (lvl-1) * 100;

end;

procedure drawsquare(i,j,c : Integer; cnv : TCanvas);

var

x,y : Integer;

begin

x := (j-1)*sqrs;

y := (i-1)*sqrs;

with cnv do

begin

Brush.Color := c;

FillRect(Bounds(x+2,y+2,sqrs-4,sqrs-4));

Pen.Color := clLtGray;

MoveTo(x,y);

LineTo(x+sqrs,y);

MoveTo(x,y);

LineTo(x,y+sqrs);

Pen.Color := clWhite;

MoveTo(x+1,y+1);

LineTo(x+sqrs-2,y+1);

MoveTo(x+1,y+1);

LineTo(x+1,y+sqrs-2);

Pen.Color := clBlack;

MoveTo(x+sqrs-1,y+sqrs-1);

LineTo(x,y+sqrs-1);

MoveTo(x+sqrs-1,y+sqrs-1);

LineTo(x+sqrs-1,y);

MoveTo(x+sqrs-2,y+sqrs-2);

LineTo(x+1,y+sqrs-2);

MoveTo(x+sqrs-2,y+sqrs-2);

LineTo(x+sqrs-2,y+1);

end;

end;

procedure showfigure;

var

i,j : Integer;

begin

for i:=1 to 4 do

for j:=1 to 4 do

if tetr[i,j]=1 then drawsquare(i+y-1,j+x-1,fcl,Form1.Image1.Canvas);

end;

procedure erasesquare(i,j : Integer);

var x,y : Integer;

begin

Form1.Image1.Canvas.Brush.Color := clGray;

x := (j-1)*sqrs;

y := (i-1)*sqrs;

Form1.Image1.Canvas.FillRect(Bounds(x,y,sqrs,sqrs));

end;

procedure hidefigure;

var

i,j: Integer;

begin

for i:=1 to 4 do

for j:=1 to 4 do

if tetr[i,j]=1 then erasesquare(i+y-1,j+x-1);

end;

function canrotate : Boolean;

var i,j,k : Integer; t : TTetr;

begin

result := true;

k := num;

if k < 4 then inc(k) else k := 1;

t := tetramino[gen,k];

for i := 1 to 4 do

for j := 1 to 4 do

if (t[i,j]=1) and ((stakan[i+y-1,j+x-1]>0)

or (j-1+x-1<0) or (j+x>stakw+1) or (i+y>stakh+1)) then

begin

result := false;

exit;

end;

end;

procedure rotatefigure;

begin

hidefigure;

if num < 4 then inc(num) else num := 1;

tetr := tetramino[gen,num];

showfigure;

end;

procedure gennextfigure;

begin

nextgen := random(7)+1;

nextnum := random(4)+1;

nexttetr := tetramino[nextgen,nextnum];

nextfcl := colors[random(6)+1];

end;

procedure nextfigure;

var i,j : Integer;

label go;

begin

gen := nextgen;

num := nextnum;

tetr := nexttetr;

fcl := nextfcl;

for i := 4 downto 1 do

for j := 1 to 4 do

if tetr[i,j]=1 then begin y := -3+(4-i); goto go; end;

go:

x := 4;

gennextfigure;

Form1.Image2.Canvas.Brush.Color := clGray;

Form1.Image2.Canvas.FillRect(Bounds(0,0,sqrs*4,sqrs*4));

for i := 1 to 4 do

for j := 1 to 4 do

if nexttetr[i,j]=1 then drawsquare(i,j,nextfcl,Form1.Image2.Canvas);

end;

procedure newgame;

var i,j : Integer;

begin

for i := -3 to stakh do

for j := 1 to stakw do

stakan[i,j] := 0;

Form1.Image1.Canvas.Brush.Color := clGray;

Form1.Image1.Canvas.FillRect(Bounds(0,0,sqrs*stakw,sqrs*stakh));

scores := 0;

Form1.Label1.Caption := 'Score: ' + IntToStr(scores);

lines:=0;

Form1.Label3.Caption := 'Lines: ' + IntToStr(lines);

speed:= 1;

randomize;

gennextfigure;

nextfigure;

showfigure;

Form1.Timer1.Enabled := True;

end;

function canmoveleft : Boolean;

var i,j : Integer;

begin

result := true;

for i := 1 to 4 do

for j := 1 to 4 do

if (tetr[i,j]=1) and ((stakan[i+y-1,j-1+x-1]>0) or (j-1+x-1=0)) then

begin

result := false;

exit;

end;

end;

function canmoveright : Boolean;

var i,j : Integer;

begin

result := true;

for i := 1 to 4 do

for j := 1 to 4 do

if (tetr[i,j]=1) and ((stakan[i+y-1,j+x]>0) or (j+x=stakw+1)) then

begin

result := false;

exit;

end;

end;

function canmovedown : Boolean;

var i,j : Integer;

begin

result := true;

for i := 4 downto 1 do

for j := 1 to 4 do

if (tetr[i,j]=1) and ((stakan[i+y,j+x-1]>0) or (i+y=stakh+1)) then

begin

result := false;

exit;

end;

end;

function gameover : Boolean;

var

i : Integer;

begin

Result := False;

for i := 1 to stakw do

if stakan[0,i]>0 then

begin

Result := True;

Exit;

end;

end;

procedure checkstakan;

var i,j,k,l,c : Integer;

begin

with Form1.Image1.Canvas do

begin

l := 0;

for i := 1 to stakh do

begin

c := 0;

for j := 1 to stakw do if stakan[i,j]>0 then inc(c);

if c = stakw then

begin

Inc(l);

for k := 1 to stakw do erasesquare(i,k);

for k := 1 to i-1 do

for j := 1 to stakw do

begin

stakan[i-k+1,j] := stakan[i-k,j];

if stakan[i-k+1,j]>0 then

drawsquare(i-k+1,j,stakan[i-k+1,j],Form1.Image1.Canvas);

stakan[i-k,j] := 0;

erasesquare(i-k,j);

end;

end;

end;

scoretospeed:= 500 * speed + scoretospeed ;

scores := scores + l * 100;

if scores >= scoretospeed then speed:=speed + 1;

setspeed(speed);

lines:= scores div 100;

Form1.Label3.Caption := 'Lines: '+IntToStr(lines);

Form1.Label1.Caption := 'Score: '+IntToStr(scores);

end;

end;

procedure fixfigure;

var i,j : Integer;

begin

for i := 1 to 4 do

for j := 1 to 4 do

if tetr[i,j]=1 then stakan[y+i-1,x+j-1] := fcl;

end;

procedure stopmove;

begin

fixfigure;

checkstakan;

if not gameover then

begin

nextfigure;

showfigure;

end

else

begin

Form1.Timer1.Enabled := False;

Application.MessageBox(PChar('Score: '+IntToStr(scores)),PChar('Game Over'),

MB_OK);

end;

end;

procedure moveleft;

begin

hidefigure;

dec(x);

showfigure;

end;

procedure moveright;

begin

hidefigure;

inc(x);

showfigure;

end;

procedure movedown;

...

Подобные документы

  • Проектирование приложения "Тетрис", осуществляющего вывод различных фигур на экран случайным образом и их падение. Описание логической структуры программы, ее тестирование. Требования к аппаратной и программной средам. Функции для работы с приложением.

    курсовая работа [343,7 K], добавлен 20.01.2015

  • Теоретические основы разработки Windows-приложений с использованием библиотеки MFC. Создание приложения с помощью Visual C++. Описание логической структуры приложения. Установка и запуск программы. Входные и выходные данные. Преимущество MFC библиотек.

    курсовая работа [563,2 K], добавлен 21.06.2011

  • Разработка информационно-поисковой системы "Музыкальный магазин". Характеристика языка Delphi 7. Функциональное назначение, область применения, используемые технические средства. Описание логической структуры. Вызов, загрузка, входные и выходные данные.

    курсовая работа [6,4 M], добавлен 07.04.2014

  • Основные этапы разработки игровой системы "Тетрис", создание игр "Стройка" и "Гонки" на основе тетриса в трех режимах сложности: сложный, средний, легкий. Особенности контейнеров, итераторов, обработка исключений, описание основных классов и алгоритмов.

    курсовая работа [1,4 M], добавлен 22.06.2012

  • Общие сведения о языке ассемблера. Назначение команды прерывания INT число. Описание логической структуры программы: алгоритм работы, используемые методы, входные и выходные данные. Структура и тестирование программы. Руководство оператора программы.

    курсовая работа [90,0 K], добавлен 01.12.2009

  • Средства программирования, описание языка С++. Назначение программы, требования к документации. Стадии разработки, виды испытаний. Используемые технические, программные средства. Вызов и загрузка, входные и выходные данные. Программа и методика испытаний.

    контрольная работа [205,3 K], добавлен 23.07.2013

  • Создание игровой системы "Тетрис": количество игр, режимы сложности, интерфейс пользователя, игровая статистика, обработка исключений. Структура входных и выходных данных. Диаграммы и описание классов. Блок-схема алгоритма программы, результаты ее работы.

    курсовая работа [1,9 M], добавлен 13.06.2012

  • Написание программы, которая позволяет пользователю играть в графическом режиме в игру "Тетрис". Разработка функционала с возможностью выбора скорости. Обзор требований к аппаратному и программному обеспечению. Интерфейс, описание данных и тестирование.

    курсовая работа [506,3 K], добавлен 17.12.2014

  • Назначение и область применения, технические характеристики, постановка задачи, описание алгоритма и организация входных и выходных данных для программы. Разработка, описание логической структуры, используемые технические средства и условия выполнения.

    курсовая работа [969,3 K], добавлен 26.03.2009

  • История создания игры "Тетрис", смысл и правила данной головоломки. Разработка поля игры и фигур тетрамино. Процедуры и функции, используемые для реализации движения фигур, их поворота и складывания в ряды, удаления и подсчета количества целых рядов.

    курсовая работа [87,0 K], добавлен 02.02.2013

  • Обоснование необходимости разработки программы для игры "Тетрис". Математическая и графическая части алгоритма. Выбор языка и среды программирования. Отладка текста программы, разработка интерфейса пользователя. Тестирование, руководство пользователя.

    курсовая работа [1,5 M], добавлен 17.01.2011

  • Навыки использования теоретического материала и практического опыта для решения задач проектирования и разработки программного обеспечения для систем различного назначения на языке Паскаль. Описание логической структуры, входные и выходные данные.

    курсовая работа [647,0 K], добавлен 23.04.2009

  • Розробка програми "Тетрис", яка виконує створення та переміщення фігур, видалення повних рядів та нарахування балів. Вимоги до умов експлуатації ігрової програми, вхідні та вихідні дані. Проектування діаграми класів та діаграми станів ігрового додатку.

    курсовая работа [515,8 K], добавлен 27.05.2019

  • Основания для разработки программы: назначение и сферы практического использования, главные предъявляемые требования. Характеристика логической структуры и используемые технические средства. Программа и методика испытаний. Эксплуатационные документы.

    курсовая работа [2,4 M], добавлен 16.12.2013

  • Математическая постановка задачи. Обоснование выбора средств разработки. Входные и выходные данные работы программы. Решение задачи теста для написания и отладки программы. Описание программных модулей. Разработка алгоритма, анализ полученных результатов.

    курсовая работа [2,2 M], добавлен 13.12.2015

  • Общие сведения о программном средстве по моделированию работы электродвигателя, его функциональное назначение. Описание логической структуры программного обеспечения. Вызов программы modelDPR52, ее загрузка, входные и выходные данные. Листинг программы.

    курсовая работа [420,0 K], добавлен 28.05.2012

  • Описание и функциональное назначение программы по оптимизации функции, ее логическая структура и используемые технические средства. Практическое применение программы, вызов и загрузка, входные и выходные данные, выполнение контрольного примера и листинг.

    курсовая работа [337,4 K], добавлен 26.02.2012

  • Постановка задачи, описание предметной области, входная и выходная информация. Выбор и основание инструментов разработки. Программно-аппаратные ресурсы. Описание логической структуры, проектирование системы меню. Тестирование, способ установки программы.

    курсовая работа [107,5 K], добавлен 07.09.2015

  • Описание предметной области "Спортивные соревнования". Проектирование концептуальной и логической модели данных. Добавление не вошедших в ER–диаграмму атрибутов. Разработка SQL запросов к базе данных. Описание работы, тестирование клиентского приложения.

    курсовая работа [1,1 M], добавлен 24.11.2014

  • История развития языка программирования Java. История тетриса - культовой компьютерной игры, изобретённой в СССР. Правила проведения игры, особенности начисления очков. Создание интерфейса программы, ее реализация в среде Java, кодирование, тестирование.

    курсовая работа [168,1 K], добавлен 27.09.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.