Проектирование и реализация игровой системы Тетрис на базе Java (отчет о проекте + PPT защиты + исходный код + база данных + скриншоты + видео развертывания)

Проектирование и реализация игры Тетрис на базе Java.

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

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

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

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

    Эта программа основана на системе Microsoft Windows 7 с использованием Java в качестве языка разработки, а дизайн и реализация игры — на платформе разработки Eclipse.

Ключевые слова: игровой дизайн; тетрис; разработка программного обеспечения; Java; Eclipse.

Оглавление

Проектирование и реализация игры «Тетрис» на базе Java .........................I

Краткое содержание................................................. ............. Я

На основе разработки и реализации Java-игры Тетрис .............. II

Абстрактный ................................................. ........... II

1. Введение................................................ ........................ 1

1.1 Предыстория и значение разработки программы.................................... ..... 1

1.2 Обзор технологии разработки............................. ... ......... 2

1.3 Текущий статус исследований игры «Тетрис»............................ 2

1.3.1 Текущий статус исследований в стране и за рубежом............................ .... 2

1.3.2 Обзор литературы............................................. ... ........ 3

2Связанные технологии................................................. .............4

2.1 Введение в JAVA............................................. .. ............ 4

2.2 Знакомство с компонентами Swing............................. ... ....... 4

2.3 Введение в платформу разработки Eclipse............................. .... ... 5

2.4 Среда системной платформы : ............................................ ..... ........ 6

2.4.1 Аппаратная платформа:............................................ .... ....... 6

2.4.2 Программная платформа:............................................ .... ....... 6

3 Системный анализ............................................. ........................ 7

3.1 Технико-экономическое обоснование............................................. ............ 7

3.1.1 Анализ экономической целесообразности....................................8

3.1.2 Анализ технической осуществимости............................................ .... .... 8

3.1.3 Анализ социальной осуществимости............................................ .... .... 8

3.2 Анализ требований............................................. ............ 8

3.2.1 Функциональные требования................................................ .. 9

3.2.2 Нефункциональные требования............................................... ... 9

3.2.3 Управление интерфейсом............................. ... ....... 9

4 Эскизное проектирование системы........................................ ...... ...... 11

4.1 Функциональное проектирование системы............................................. .... ...... 11

4.1.1 Базовый процесс ручной бизнес-обработки.................... 11

4.1.2 Функциональные модули базового процесса............................ 12

5 Детальное проектирование и реализация системы.............................. ..... 15

5.1 Модуль отображения основного интерфейса игры............................................ 15

5.2 Полотно-коробчатый дисплейный модуль.................... 16

5.2.1 Проектирование модуля фонового холста............................. ..... 16

5.2.2 Конструкция модуля блока предварительного просмотра............................ ..... 19

5.2.3 Конструкция модуля перемещения и вращения блока............................ 21

5.3 Модуль панели управления............................................. .. ........ 25

5.3.1 Конструкция модуля строки меню............................. ..... .. 25

5.3.2 Конструкция кнопок панели управления............................. ..... 26

6 Тестирование системы........................................................ ......29

6.1 Обзор испытаний............................................. ........ 29

6.1.1 Принципы тестирования............................................. ... ...... 29

6.1.2 Метод испытания............................................. ... ...... 30

6.1.3 Значимость испытаний и меры предосторожности........... 31

6.2 Тестирование игровых кодов и алгоритмов............................................ 31

6.3 Функциональное тестирование пунктов меню игрового интерфейса......................... 32

6.4 Функциональная проверка ключевых событий................................ 34

6.5 Функциональная проверка штабелирования и исключения блоков............................ 35

6.6 Результаты испытаний............................................. ........... 35

в заключение................................................ ............. 36

Рекомендации................................................ . ........... 38

Благодарности............................................... ....................................... 39

Приложение А Оригинальный иностранный текст................................ ........40

Психология Тетриса.................................................. 40

Приложение Б. Перевод на иностранный язык..................................... ........43

Психологические эффекты «Тетриса»............................................ ..... 43

1. Введение

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

1.1 Предыстория и значение разработки программы

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

    Однажды в июне 1984 года Алекс Пажитнов, математик из Москвы, внезапно вдохновился на разработку этой игры после того, как разгадал головоломку в Московском научном компьютерном центре, где он работал. Сначала он разрабатывал ее только на Electronica 60 ( компьютер), а позже портирован на ПК через Вадима Герасимова и получил широкое распространение в компьютерном сообществе Москвы.Тетрис начал набирать популярность и стал самой продаваемой классической казуальной игрой в истории, она до сих пор сохраняет свое очарование как всегда. Простые базовые правила игры в Тетрис заключаются в стандартном виртуальном игровом поле для размещения небольших квадратов. Базовая единица представляет собой небольшой квадрат; он состоит из четырех маленьких квадратов и 7 различных обычных графиков (форма поля, форма Z, обратная форма Z, 7-образная, перевернутая 7-образная, Т-образная, длинная полоса) Всего имеется 28 графических схем для поворота блока на 90 градусов, 180 градусов, 270 градусов, 360 градусов посредством действия игроком верхней клавиши, левой и клавиши «вправо» и «вниз». Чтобы отрегулировать положение путем ускорения падения, блоки формируются в один или несколько полных блоков в нижней части экрана, а затем удаляются, чтобы освободить место для вновь падающих блоков. Каждый раз полный горизонтальная полоса удаляется, уровень игрока увеличивается на один уровень.Когда уровень достигает определенного уровня. Со временем скорость падения ускоряется.Как только блоки, которые не были устранены, достигают верхней части экрана, игра заканчивается.

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

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

1.2 Обзор технологии разработки

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

Код разработки игры «Тетрис» относительно не особенно сложен.Настоящая статья основана на языке программирования Java и использует компоненты Swing, обычно используемые в языке Java. Swing — это набор инструментов графического пользовательского интерфейса (GUI) на Java. Он является частью базового класса Java. Он включает в себя текстовые поля, отдельные панели, кнопки, таблицы и другие устройства с графическим интерфейсом. Он написан на чистой Java. Разработчики могут использовать небольшой Для создания красивых и изящных пользовательских интерфейсов можно написать большое количество кода для различных гибких и богатых функций и модульных компонентов Swing . Компонент Java Swing включает в себя следующие часто используемые классы: JFrame — графический объект на экране, который может выполнять основные операции, такие как развертывание, свертывание и закрытие. Это основная идея программирования Java GUI; можно использовать JPanel. для вложения.Компоненты с одинаковыми логическими функциями в форме можно комбинировать и добавлять в форму JFrame.Это класс контейнера панели в Swing. Объект JLabel используется для отображения текста, изображений или того и другого и может устанавливать некоторые его свойства; JTextField — это работающий компонент, используемый для редактирования одной строки текста; JButton — класс, используемый для создания кнопок. Кроме того, компонент Swing в Java также содержит множество функциональных классов, с помощью которых можно легко создавать красивые графические интерфейсы.

1.3 Статус исследования игры Тетрис

1.3.1 Статус исследований в стране и за рубежом

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

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

Версия Тетриса для Game Boy была продана в Японии тиражом 4,24 миллиона единиц, что сделало ее самой популярной игрой в истории игр для Game Boy. Во время войны в Персидском заливе игра «Тетрис» стала одной из самых подходящих игр для убийства времени для американских солдат на передовой.

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

1.3.2 Обзор литературы

Документы [1] и [2] нацелены на объяснение с нуля, с использованием примеров, которые помогут читателям глубже изучить, используя режим объяснения базовых знаний → основная технология → продвинутое приложение → реальная практика проекта для объяснения различных технологий и практик Java в простые и понятные термины. С точки зрения новичков, посредством простого для понимания языка и красочных примеров, он подробно знакомит со всеми аспектами технологии, которыми следует овладеть при разработке программ с использованием языка Java. В том числе: знакомство со средствами разработки Eclipse, основами языка Java, классами и объектами, классами упаковки, классами обработки чисел, интерфейсами, наследованием и полиморфизмом, расширенными функциями классов, обработкой исключений, программированием Swing, классами коллекций, вводом и выводом ввода-вывода, Отражение, перечислимые типы и дженерики, многопоточность, сетевая связь, операции с базами данных, компоненты таблицы Swing, компоненты дерева Swing, другие расширенные компоненты Swing, расширенные менеджеры компоновки, расширенная обработка событий, рисование AWT и воспроизведение звука и т. д. Эти два документа охватывают "достаточный" язык и технологию Java, содержат богатые примеры и подробное содержание. Для новичков и студентов с определенными знаниями Java они могут быстро улучшить технологии и навыки разработки учащихся. При разработке этого проекта содержимое, связанное с дизайном графического интерфейса, компонентами и дизайном пользовательского интерфейса, обработкой событий и компонентами построения окон, а также базовые знания Swing и серии его компонентов были отнесены к этим двум документам, которые дал мне много вдохновения.

Документ [3] в основном объясняет 2D-рисование; создание игровой анимации; основу сетевых программ; улучшенный игровой интерфейс; искусственный интеллект и 2,5D-игры; тральщик, лабиринт, тетрис и другие примеры игр; столкновение, систему частиц, 5D-трехмерные координаты и другие. алгоритмы рисования, производство многопользовательских онлайн-игр. Для того, чтобы читателям было удобнее ими пользоваться, собран ряд формул алгоритмов. При поэтапном подходе процесс проектирования игры постепенно анализируется, что приводит читателей к решению проблем, с которыми можно столкнуться на этапе разработки игр, и обобщает практический опыт создания игр на Java. Принципы игр, реализация анимации, обработка звуковых эффектов, обработка событий мыши и клавиатуры, искусственный интеллект и другие знания, использованные при разработке этого курса, относятся к этому документу.

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

Документ [5] — это продвинутая книга, в которой больше внимания уделяется объяснению того, как использовать Java для мышления и решения проблем. Этот документ очень помог мне с идеями и методами программирования на Java во время разработки курса.

2Связанные технологии

2.1 Введение в JAVA

    Java — общее название объектно-ориентированного языка программирования Java и платформы Java, выпущенных Sun Microsystems. Это объектно-ориентированный язык программирования , на котором можно писать кроссплатформенное прикладное программное обеспечение . Технология Java обладает хорошей универсальностью, эффективностью, кроссплатформенностью и безопасностью. Она широко используется в ПК, центрах обработки данных, игровых консолях, научных суперкомпьютерах, мобильных телефонах и Интернете. Она также имеет крупнейшее в мире профессиональное сообщество разработчиков.

За последние двадцать лет язык Java превратился в один из самых влиятельных языков программирования в истории человеческих компьютеров. В некоторой степени он даже вышел за рамки языка программирования и стал платформой разработки и платформа разработки.Канонический режим. Более того: Java стала своего рода верой.Открытый исходный код, свобода и другие духи, пропагандируемые языком Java, привлекли бесчисленное количество выдающихся программистов по всему миру. Фактически, за всю историю человечества еще никогда не существовало языка программирования, который мог бы привлечь к использованию столько выдающихся программистов, и ни один язык программирования не мог бы создать столько фреймворков с открытым исходным кодом.

Язык Java является очень чистым объектно-ориентированным языком программирования. Он сочетает в себе различные преимущества языков C и C++ и отказывается от таких сложных для понимания концепций, как множественное наследование и указатели в языке C++. Язык Java является мощным, а простота и удобство использования — две очень хорошие особенности. Являясь представителем статических объектно-ориентированных языков программирования, язык Java превосходно воплощает в себе объектно-ориентированную теорию и позволяет программистам вести более сложную разработку программирования, используя более элегантный образ мышления.

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

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

2.2Введение в компоненты Swing

    Swing API — это расширяемый набор компонентов графического пользовательского интерфейса для создания интерфейсных/графических приложений на основе JAVA. Он построен на основе API AWT и служит заменой API AWT, поскольку почти каждый элемент управления в нем соответствует элементу управления AWT. Компоненты Swing следуют архитектуре модель-представление-контроллер, чтобы соответствовать следующим рекомендациям. Одного API достаточно для поддержки нескольких видов и стилей; API является управляемым макетом, поэтому API самого высокого уровня не требует наличия данных; API использует шаблон Java Bean, чтобы инструменты Builder Tools и IDE могли обеспечить лучшее услуги разработчикам, чтобы использовать его.

    Архитектура Swing API следует свободной архитектуре MVC следующим образом. Модель представляет данные компонента. Представление представляет собой визуальное представление данных компонента. Контроллер принимает вводимые пользователем данные в представлении и отражает изменения в данных компонента. Компоненты Swing рассматривают модель как отдельный элемент и объединяют части представления и контроллера в элементы пользовательского интерфейса. Используя этот подход, Swing имеет подключаемую архитектуру внешнего вида. Основные особенности Swing:

    Легкость — компоненты Swing не зависят от собственного API операционной системы, поскольку элементы управления API Swing обычно отображаются с использованием чистого кода JAVA, а не с использованием вызовов базовой операционной системы.

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

    Расширенная настройка. Элементы управления Swing можно настроить очень просто, поскольку внешний вид не зависит от внутреннего представления.

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

2.3 Введение в платформу разработки Eclipse

Eclipse — это расширяемая платформа разработки на основе Java с открытым исходным кодом, которая фокусируется на предоставлении полнофункциональной промышленной платформы коммерческого качества для разработки высокоинтегрированных инструментов. Eclipse — это всего лишь фреймворк и набор сервисов для построения сред разработки с помощью подключаемых компонентов. Eclipse поставляется со стандартным набором плагинов, включая инструменты разработки Java (JDT).
  Eclipse стартовал в апреле 1999 г. Первоначально он был разработан IBM как среда разработки IDE нового поколения для замены коммерческого программного обеспечения Visual Age для Java. IBM предоставила первоначальную базу кода Eclipse, включая Platform, JDT и PDE, в ноябре 2001 г. Для сообщества открытого исходного кода, которое в настоящее время возглавляет IBM, проект Eclipse превратился в огромный альянс Eclipse, в котором участвуют более 150 компаний-разработчиков программного обеспечения, включая Borland, Rational Software, Red Hat и Sybase и т. д., и является в настоящее время возглавляется Governed by Eclipse Foundation, некоммерческим альянсом поставщиков программного обеспечения. В 2003 году Eclipse 3.0 выбрал спецификацию сервисной платформы OSGi в качестве архитектуры времени выполнения. В июне 2007 года была выпущена стабильная версия 3.3. Версия 3.4 под кодовым названием Ганимед была выпущена в июне 2008 года.
  Eclipse – это известная кроссплатформенная бесплатная интегрированная среда разработки (IDE). Первоначально она в основном использовалась для разработки на языке Java, но в настоящее время некоторые люди используют плагины, чтобы использовать ее в качестве инструмента разработки для других компьютерных языков, таких как С++ и Питон. Eclipse изначально был просто платформой, предоставляющей среду разработки плагинов (Plug-in Development Environment, PDE). Этот компонент в основном предназначен для разработчиков программного обеспечения, которые хотят расширить Eclipse, позволяя создавать инструменты, которые легко интегрируются с Среда Eclipse. Поддержка множества плагинов делает Eclipse It обладающим гибкостью, которую трудно обеспечить другому программному обеспечению IDE с относительно фиксированными функциями. Поскольку все в Eclipse является плагином, предоставление плагинов для Eclipse предоставляет пользователям согласованную и унифицированную интегрированную среду разработки, так что все разработчики инструментов имеют равные возможности для игры.

Преимущества Эклипса:

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

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

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

Eclipse поддерживает множество языков разработки, а не только Java. Eclipse предоставляет разработчикам только минимальное ядро, которое может расширять функции системы.Архитектура подключаемых модулей, основанная на точках расширения, позволяет Eclipse поддерживать несколько языков. Пока установлен плагин для соответствующего языка, Eclipse может поддерживать разработку этого языка. В настоящее время Eclipse поддерживает C/C++, COBOL, PHP, Perl, Python и другие языки. (Хотя Eclipse — это прежде всего среда разработки Java, его архитектура обеспечивает поддержку других языков программирования).

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

 На основе ведущей в отрасли спецификации OSGi. Спецификация OSGi была впервые выпущена Sun Microsystems, IBM, Ericsson и т. д. в 1999 году. Ее сервисные платформы включают в себя: сервисные шлюзы, автомобили, мобильные телефоны, промышленную автоматизацию, автоматизацию зданий, сетевые вычисления для КПК, развлечения (например, iPronto) и IDE. , и т. д. Системы на базе OSGi работают в форме микроядер, поэтому они могут легко реализовать «горячую» замену, динамически изменяющееся поведение, стабильные и эффективные системы, о которых мечтает индустрия программного обеспечения. Начиная с версии 3.1, Eclipse решительно отказался от своей первоначальной структуры, признанной в отрасли, и принял OSGi в качестве своей архитектуры. Начиная с Eclipse3.2, Eclipse обеспечивает поддержку разработки на основе OSGi, и разработчики могут использовать его для разработки систем на основе OSGi.

   Красивый человеко-машинный интерфейс Eclipse получил широкую оценку. Eclipse предоставляет новый API SWT/JFace (вместо AWT/Swing), который меняет монотонный и скучный стиль интерфейса SWT/Swing, позволяя разрабатывать локальные приложения с богатым графическим интерфейсом, как весенний ветерок. Область разработки настольных компьютеров на Java дает людям ощущение свежести.

   Eclipse запущен лидерами отрасли и имеет сильную отраслевую мощь. Фонд Eclipse Foundation объединил большое количество академических исследовательских институтов и коммерческих организаций, чтобы возглавить долгосрочное планирование и разработку Eclipse и гарантировать, что Eclipse займет лидирующие позиции в индустрии программных инструментов.

2.4 Среда системной платформы :

2.4.1 Аппаратная платформа:

   Аппаратное обеспечение компьютера, разработанное этой программой, следующее:

Память: 4G

Жесткий диск: 500 ГБ

ЦП: Intel(R)Core(TM)i5 — ЦП 3230M @ 2,60 ГГц

Интерактивные инструменты: клавиатура, мышь.

Дисплей: ЖК-дисплей

2.4.2 Программная платформа:

Среда разработки этой системы следующая   

Операционная система: Microsoft Windows 7 Ultimate.

Версия JDK: jdk-8u121-windows-x64

Версия Eclipse: выпуск Neon.2 (4.6.2), eclipse-inst-win64

Системный анализ

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

3.1 Технико-экономическое обоснование

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

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

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

Следующие ключевые моменты должны быть освоены на практике: сначала демонстрируйте, затем принимайте решения; правильно управляйте взаимосвязью между тремя этапами проектного предложения, технико-экономического обоснования и оценки; исследования следует останавливать на любой стадии, когда оказывается, что они невыполнимы; необходимо провести расследование и исследования. Довести до конца. Необходимо овладеть практичной и достоверной информацией, чтобы обеспечить полноту, значимость, объективность и непрерывность отбора данных, сравнить несколько вариантов и выбрать лучший. Для проектов, связанных с зарубежными странами, или проектов, которые должны соответствовать иностранным стандартам под давлением внешних факторов, таких как вступление в ВТО, содержание и глубина технико-экономического обоснования должны быть максимально соответствующими международным стандартам.

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

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

3.1.1 Анализ экономической целесообразности

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

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

3.1.2 Анализ технической осуществимости

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

3.1.3 Анализ социальной осуществимости

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

3.2 Анализ требований

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

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

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

3.2.1 Функциональные требования

    Вся игровая система будет случайным образом генерировать 7 блоков разной формы, состоящих из четырех маленьких блоков.После вращения будет получено 28 состояний.При увеличении сложности игры добавятся шесть блоков различной формы.После вращения будет 24 типа. добавлено. Блоки свободно падают с определенной скоростью.Игрок управляет движением блоков влево и вправо, а также вращением с помощью клавиш вверх, вниз, влево и вправо на клавиатуре, а после падения размещает блоки в соответствующем положении. Если при падении блока вся строка заполняется блоками после падения блока, то вся строка будет удалена. При устранении ряда счет игрока увеличивается на 10. Когда счет достигает 100 очков, уровень игрока увеличивается на один уровень, скорость увеличивается на один уровень и увеличивается сложность. Если весь интерфейс игрового холста занят после падения блока, блок больше не упадет и игра завершится неудачно. Конкретные функциональные требования к игре следующие:

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

    ▪ Требования к игровой форме: используйте массив в качестве структуры данных для хранения 52 состояний блока, а именно, всего 7 фигур, включая длинную полосу основного уровня, Z-образную форму, обратную Z-образную форму, форму поля, 7-образную форму. , обратная 7-образная форма и Т-образная форма. Деформация вращения в 4 направлениях, три блока на промежуточном уровне и 12 различных состояний и три блока на продвинутом уровне с 12 различными состояниями. Каждый блок может вращаться против часовой стрелки, и вопрос о том, может ли блок вращаться, нужно судить по условиям. Если блок может пересечь границу после вращения, он не может вращаться, и его положение необходимо отрегулировать, чтобы гарантировать, что он может вращаться.

    ▪ Требования к событию обработки клавиатуры: когда блок падает, игрок может использовать клавиши направления на клавиатуре: клавишу «вверх» для вращения, клавишу «вниз» для ускорения падения, клавишу «влево» для перемещения влево, клавишу «вправо» для перемещения вправо, и пробел для реализации падения в один клик.Клавиша с буквой P реализует паузу, а клавиша с буквой C реализует серию операций, таких как продолжение.

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

▪ Требования к отображению: Требования к отображению данной игровой программы заключаются в том, что когда блоки падают и заполняют целый ряд, этот ряд будет удален, а оставшиеся незаполненные ряды будут автоматически перемещаться вниз один за другим. Устранение ряда приведет к увеличению счета на правый интерфейс на десять баллов.При увеличении счета до 100 баллов уровень увеличивается на один уровень. Когда блок падает и накладывается на все строки основного интерфейса, блок больше не падает, игра заканчивается, а основной интерфейс выдает слово «Game Over».

3.2.2 Нефункциональные требования

Нефункциональные требования: нефункциональные требования игровой системы «Тетрис» включают отображение значков в верхнем левом углу основного интерфейса игры, настройку размера окна для максимизации и минимизации (но не включая размер основного интерфейса), и положение всплывающего окна при запуске игры.Набор нефункциональных требований.

3.2.3  Управление интерфейсом

Под управлением операционной системы Windows эта российская игровая система в основном управляет игрой через клавиатуру.

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

4.  Эскизный проект системы

4.1  Функциональная конструкция системы

4.1.1  Основной процесс ручной бизнес-обработки

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

   Инструкция по эксплуатации:

   1>Запустите программу и нажмите «Пуск» на панели управления справа или кнопку «Пуск» в меню «Управление», чтобы запустить игру.

   2> Используйте клавиши вверх, вниз, влево, вправо, а также клавишу пробела, клавишу P и клавишу C, чтобы управлять деформацией, падением, движением блока влево и вправо, а также быстрым падением, паузой и продолжением одним щелчком мыши.

   3> Устраните полный ряд блоков, счет автоматически увеличится, а уровень автоматически увеличится на один уровень.

   4>По мере повышения уровня и увеличения скорости падения блоков нажимайте кнопки «Элементарный», «Средний» и «Дополнительный» на правой панели управления или в меню «Игра», чтобы вручную изменить сложность игры. Вы также можете выбрать параметры в меню «Цвет блока», чтобы изменить цвет блоков и т. д. Вы также можете изменить некоторые атрибуты игры с помощью параметров в меню «Настроить».

   5> Нажмите клавишу P на клавиатуре, чтобы приостановить игру, а затем нажмите клавишу C, чтобы продолжить игру. Нажатие кнопки «Завершить игру» полностью остановит текущую игру, а нажатие кнопки «Старт» или «Перезапуск» в меню «Управление» запустит новую игру.

   6>Когда блоки занимают все окно и новые блоки не могут упасть, в игре появится диалоговое окно «Игра окончена», предлагающее завершить игру.

Основная блок-схема игры показана на рисунке 4-1:

                        Рисунок 4-1 Основная блок-схема игры

4.1.2  Функциональные модули базового процесса

Эта система проектирует каждый функциональный модуль игры на основе различных функций игры. На рисунке 4-2 представлена ​​схематическая диаграмма системных функциональных модулей этой игры.Как показано на рисунке, эта игра в основном состоит из двух модулей: области игрового интерфейса и области управления игрой. Интерфейс игры разделен на две части: отображение дополнительных операций игрока и отображение результатов операций игрока. Управление игрой разделено на несколько функциональных модулей, таких как изменение цвета, запуск, изменение уровня игры на элементарный, изменение уровня игры на средний, изменение уровня игры на продвинутый, настройка скорости падения, изменение фона, выход и другие.

Рисунок 4-2 Принципиальная схема функциональных модулей системы

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

Рисунок 4-3 Принципиальная схема интерфейсного модуля

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

Рисунок 4-4 Принципиальная схема модуля зоны управления

5Детальное  проектирование и внедрение системы

    Java — это чисто объектно-ориентированный (Объектно-ориентированный) язык программирования, и его многочисленные преимущества здесь подробно обсуждаться не будут. Исходя из объектно-ориентированной концепции, эту программу можно разделить на следующие модули:

    ●Модуль отображения основного интерфейса игры.

    ●Блок и модуль отображения данных

    ●Блок модуля управления движением

    ●Модуль управления цветом игрового интерфейса.

    ●Модуль контроля прогресса и уровня игры.

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

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

    Класс PreView: унаследован от класса JPanel, как класс панели управления, отвечает за размещение главного окна игры, табло, кнопок управления уровнем и других окон для управления игровым процессом.

    Класс GameCanvas: унаследованный от класса JPanel, класс потока ChangeBlockColor динамически изменяет цвет квадрата класса холста.Класс холста отражает перемещение и удаление квадрата ChangeBlockColor путем проверки цвета квадрата.

    Класс Box: класс Square, основные элементы, из которых состоит блок. Основное выражение — цвет.

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

5.1  Модуль отображения основного интерфейса игры

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

Основной интерфейс игры разработан с использованием компонентов Swing, в нем регистрируются слушатели для реализации различных функций управления.Исходя из конструкции игровой формы, на ней необходимо зарегистрировать как минимум три слушателя, а именно прослушиватель действий (ActionListener). и прослушиватель клавиатуры.прослушиватель (KeyListener), прослушиватель опций (ItemListener).

    Согласно предварительному проекту, можно определить, что объекты компонента Swing, которые будут использоваться на клиенте, включают объекты JFrame, объекты JPanel, объекты JLabel, объекты JButton, объекты JMenuBar, объекты JMenu, объекты JMenuItem, объекты JTextField, объекты JTextArea, JDialog. объекты и т. д., не менее десяти объектов-компонентов Swing. На рисунке 5-1 ниже показан снимок экрана основного интерфейса игры.

Рисунок 5-1. Скриншот основного интерфейса игры.

Первоначальное цветовое соответствие основного дизайна интерфейса этой игры основано на принципе резкого контраста.Цвет фона по умолчанию - темно-зеленый.Значок тетриса установлен в левом верхнем углу.Первоначальное значение счета - 0, начальное значение уровня равно 1, а начальное значение записи с наивысшим баллом равно 0. Размер основной игровой формы установлен на (520, 580), панель диапазона перемещения блока управляется двумерным массивом из 20 строк и 12 столбцов, а значок в верхнем левом углу установлен на шаблон блока. в целях идентификации.

5.2  Модуль отображения холста и коробки

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

5.2.1  Дизайн модуля фонового холста

Основной фоновый холст игры представляет собой двумерный массив с 20 строками и 12 столбцами. Квадратное отображение идентифицируется соответствующими изменениями цвета. Основная форма заполняется цветом для формирования стиля фона и квадратов. В этой игре используется класс GameCanvas, унаследованный от JPanel, для управления отображением фонового холста. Rows представляет количество строк холста, а cols представляет количество столбцов холста. Число строк и столбцов определяет количество квадратов. холст имеет. Основной код реализации фонового холста выглядит следующим образом:

Сначала используйте конструктор класса холста, чтобы указать количество строк, столбцов и основную границу всего основного интерфейса.

Относительное положение в:

       /**

        * Конструктор класса холста.

        * @param rows int, количество строк на холсте

        * @param cols int, количество столбцов холста

        * Количество строк и столбцов определяет количество квадратов на холсте.

        */

       public GameCanvas (int rows, int cols) {

              this.rows = строки;

              this.cols = столбцы;

              this.setOpaque(ложь);

              коробки = новый ящик [строки] [столбцы];

              for (int i = 0; i <box.length; i++) {

                     for (int j = 0; j < box[i].length; j++) {

                            box[i][j] = новый ящик(false);

                     }

              }

              setBounds(0, 0, 300, 500); //Установить координаты относительного положения

              setBorder(новый EtchedBorder(

                      EtchedBorder.RAISED, Color.white, новый цвет(148, 145, 140)));

       }

       /**

        * Получить количество рядов квадратов на холсте

        * @return int, количество строк в сетке

        */

       общественный int getRows() {

              возврат строк;

       }

       /**

        * Получить количество столбцов на холсте

        * @return int, количество столбцов в сетке

        */

       общественный int getCols() {

              возврат столбцов;

       }

    Во-вторых, установите конструктор класса холста для представления цвета переднего плана и цвета фона всего основного интерфейса и получения цветов переднего плана и фона:

       /**

        * Конструктор класса холста.

        * @param rows аналогичен public GameCanvas(int rows, int cols)

        * @param cols аналогичен public GameCanvas(int rows, int cols)

        * @param backColor Цвет, цвет фона

        * @param frontColor Цвет, цвет переднего плана

        */

       public GameCanvas(int rows, int cols,

                         Цвет backColor, Цвет frontColor) {

              это (строки, столбцы);

              this.backColor = backColor;

              this.frontColor = frontColor;

       }

       /**

        * Установить цвет фона игры

       * @param backColor Цвет, цвет фона

        */

       public void setBackgroundColor(Color backColor) {

              this.backColor = backColor;

       }

       /**

        * Получить цвет фона игры

       * @return Цвет, цвет фона

        */

       общественный цвет getBackgroundColor() {

              вернуть обратный цвет;

       }

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

Блоки и информация о данных — это самые основные функциональные модули в игре. Box, класс, похожий на сетку, является основным элементом, составляющим блок. Он использует собственный цвет для представления внешнего вида блока. MyTask наследует класс TimerTask для определения местоположения и использует методы подсчета для достижения изменений скорости. Класс MyListener наследует класс KeyAdapter для реализации мониторинга кнопок, управления движением вверх, вниз, влево и вправо от блока. Определите квадратную матрицу 4x4, состоящую всего из 16 ячеек. Используйте «0» и «1», чтобы указать, окрашивается ли каждый квадрат новым цветом или сохраняет цвет фона.

Каждый раз, когда получается новый блок, случайным образом выбирается одна из семи форм блоков. Игра определяет переменную, которая представляет модель нового блока. Например, определите массив int STYLE для представления 28 типов блоков с 7 строками и 4 столбцами, и каждый элемент представляет один из блоков. То есть 0<=blockkindnum<=6, 0=<blockstatusnum<=3.

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

Класс Math в языковом пакете Java предоставляет метод random() для генерации случайных чисел. Вызов этого метода генерирует число двойной точности с плавающей запятой в диапазоне от 0 до 1. Таким образом, каждый раз, когда вы хотите получить новый блок, вам нужно вызвать этот метод только один раз, чтобы получить число двойной точности с плавающей запятой от 0 до 1, затем умножить это число на 7, а затем привести его к целому числу, чтобы получить число. целое число от 1 до 7. используется для управления строками. Умножьте это число на 4, а затем приведите его к целому числу, чтобы получить целое число от 1 до 4, которое используется для управления столбцом.

Благодаря этому можно объединить несколько графических определений и реализовать с помощью кода следующие функции:

1> Каждое выполнение сначала генерирует другое начальное значение случайного числа.

                  int col = (int) (Math.random() * (gc.getCols() - 3));//Генерируем столбцы в случайных позициях

                     int style = Constant.STYLES[(int) (Math.random() * Block.get_addl())][(int) (Math.random() * 4)];

Рисунок 5-2 Блок-схема случайной генерации блоков

    2> Случайным образом выберите фигуру. Рисунок 5-2 случайным образом генерирует блок-схему для описания сгенерированного случайного ЧПУ.

Полученная графика.

3>Информация о положении текущего изображения в сетке 4*4.

    Нарисуйте сетку предварительного отображения из 4 строк и 4 столбцов блоков и случайным образом сгенерируйте стиль блока предварительного отображения. В этой игре используется двумерный массив для хранения 28 стилей блоков.

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

       /**

        * Соответствует 52 состояниям 13 моделей соответственно

        */

       public Final static int[][] STYLES = {// всего 28 состояний

              {0xf000, 0x8888, 0xf000, 0x8888}, // Четыре состояния длинного бара

              {0x4e00, 0x4640, 0xe400, 0x4c40}, // Четыре состояния типа 'T'

              {0x4620, 0x6c00, 0x4620, 0x6c00}, // Четыре состояния обратной Z-формы

              {0x2640, 0xc600, 0x2640, 0xc600}, // Четыре состояния типа 'Z'

              {0x6220, 0x1700, 0x2230, 0x7400}, // Четыре состояния типа '7'

              {0x6440, 0xe200, 0x44c0, 0x8e00}, // Четыре состояния обратного типа '7'

              {0x6600, 0x6600, 0x6600, 0x6600}, // Четыре состояния блока

              {0x8c88,0xf200,0x44c4,0x4f00}, //Добавлены 3 блока промежуточного стиля.

              {0xea00,0xc4c0,0xae00,0xc8c0},

              {0x8c00,0xc800,0xc400,0x4c00},

              {0xac00,0xcc40,0x6e00,0x8cc0}, //Добавлены 3 блока расширенного стиля.

              {0x4e40,0x4e40,0x4e40,0x4e40},

              {0x8480,0xa400,0x4840,0x4a00},

       };

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

    ●Добавлены три модели блоков средней сложности (четыре состояния вращения можно получить после поворота на 90, 180, 270 и 360 градусов).

Рисунок 5-10. Три дополнительные модели блоков средней сложности.

    ●Добавлены три модели блоков повышенной сложности (четыре состояния вращения можно получить после поворота на 90, 180, 270 и 360 градусов).

Рисунок 5-11. Три дополнительные модели блоков повышенной сложности.

5.2.3  Конструкция модуля перемещения и вращения блока

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

Когда блоки в этой игре падают, выполняется динамическое рисование и реализуется интерфейс Cloneable, указывающий на то, что метод Object.clone() может легально скопировать экземпляр этого класса по полям. Класс операции блока BlockOperation наследует класс Thread и переопределяет метод run() для реализации динамического и правильного местонахождения блока. Конечно, необходимо определить, находится ли блок в состоянии перемещения или в состоянии паузы в потоке.

publicvoid run()

       {

              //перемещение определяет, падает ли блок динамически

              пока (движется)

              {

                     пытаться

                     {

                            //betweenleveltime указывает разницу во времени между соседними уровнями

                            сон (между уровнем времени

                                    * (ControlMainGame.maxlevel — уровень + флэтген));

                     } catch (InterruptedException т.е.)

                     {

                            т.е.printStackTrace();

                     }

                     //пауза определяет, поставлена ​​ли игра на паузу

                     если (!пауза)

                            перемещение = (moveTo(y + 1, x) && перемещение);

                     //перемещение ожидает 100 миллисекунд, и перемещение не изменилось.

             }}

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

1>Блокировать переворот

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

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

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

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

По наблюдению нетрудно обнаружить, что среди семи форм блоков, если длинный блок падает в виде горизонтальной перекладины, его можно переворачивать до тех пор, пока он может упасть. вертикальная полоса, то она будет в положении после переворота. Позиция должна иметь пространство сетки 4x1, прежде чем ее можно будет перевернуть. Что касается квадрата в форме Тянь, пока он может продолжать падать, он обязательно сможет перевернуться, поэтому, пока квадрат в форме Тянь не упадет, он всегда сможет перевернуться. Остальные пять форм блоков имеют одну общую черту: все они имеют два перевернутых состояния, которые занимают три ячейки пространства по горизонтали и два пространства по вертикали. Два других перевернутых состояния занимают две ячейки пространства по горизонтали. в вертикальном направлении.Если они падают в состоянии занимания трёх сеток в горизонтальном направлении, то пока они могут падать, они смогут переворачиваться.Если они падают в состоянии двух сеток в горизонтальном направлении, то после переворачивания вокруг должно быть пространство сетки 3x2.

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

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

Несомненно то, что независимо от того, как блок переворачивается, он все еще находится в массиве блоков, а это означает, что блок должен находиться в определенном пространстве сетки 4x4 на игровой карте.

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

Предположим, что горизонтальные и вертикальные координаты массива блоков равны x и y, тогда это положение таково, что строка, в которой переворачивается длинный блок, является y-й строкой игровой карты, а столбцы, которые он занимает, имеют значения от x до x+3. columns , строки, занятые пятью типами квадратов, кроме длинной полосы и формы поля после переворачивания, представляют собой y-ю и y+1-ю строки игровой карты, а занимаемые ими столбцы — это столбцы с x-го по x+2.

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

2>Коррекция переворота за пределами поля

Блок можно переворачивать до тех пор, пока на нем после переворачивания остается достаточно места, но что, если места после переворота блока недостаточно, а на другой стороне достаточно места?

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

Рисунок 5-12 Блок-схема обработки переворота блоков

Игрок управляет клавиатурой для перемещения и вращения блоков.Код вводит класс ControlKeyListener и наследует класс KeyAdapter для реализации функции мониторинга клавиатуры. Класс KeyAdapter наследует класс Object и реализует интерфейс KeyListener — абстрактный класс адаптера, используемый для получения событий клавиатуры. Методы в этом классе пусты. Этот класс существует для облегчения создания объектов-прослушивателей. Расширьте этот класс, чтобы создать прослушиватель KeyEvent и переопределить метод требуемого события, которым является класс ControlKeyListener. Используйте ControlKeyListener для создания объекта прослушивателя, а затем зарегистрируйте объект прослушивателя в компоненте с помощью метода addKeyListener компонента. Когда клавиша нажимается, отпускается или набирается, вызывается соответствующий метод объекта прослушивателя, и KeyEvent передается соответствующему методу. Код реализации следующий:

       частный класс ControlKeyListener расширяет KeyAdapter

       {

              publicvoid keyPressed (KeyEvent ke)

              {

                     если (!game.isPlaying())

                            возвращаться;

                     Блокировка BlockOperation = game.getCurBlock();

                     переключатель (ke.getKeyCode())

                     {

                            случай KeyEvent.VK_DOWN:

                                   блокопе.moveDown();

                                   перерыв;

                            случай KeyEvent.VK_LEFT:

                                   блокопе.moveLeft();

                                   перерыв;

                            случай KeyEvent.VK_RIGHT:

                                   блокопе.moveRight();

                                   перерыв;

                            случай KeyEvent.VK_UP:

                                   блокопе.turnNext();

                                   перерыв;

                            по умолчанию:

                                   перерыв;}}}

5.3  Модуль панели управления

5.3.1  Конструкция модуля строки меню

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

    1> Функция кнопки «Пуск» предназначена для перерисовки игрового холста, аналогично функции сброса. Код реализации мониторинга этой кнопки следующий:

       /**

        * Сбросить холст

        */

       общественный недействительный сброс () {

              for (int i = 0; i <box.length; i++) {

                     for (int j = 0; j <box[i].length; j++)

                            коробки[i][j].setColor(false);

              }

              перекрасить();

       }

    2> Кнопки «Элементарный», «Средний» и «Продвинутый» используются для ручной настройки уровня игры, тем самым изменяя уровень сложности игры. Кнопка «Выход» позволяет игре выйти в любой момент и завершить игру.

3> Нажмите кнопку «О программе» в кнопке «Справка», чтобы отобразить информацию, относящуюся к самому игровому программному обеспечению. Конкретная информация показана на рисунке:

                       Рисунок 4-19 Снимок экрана опции «О программе»

5.3.2  Конструкция кнопок панели управления

Панель управления игрой содержит такие поля, как статистика очков и статистика уровня.

Элементы управления TextField предоставляются статистикой самой игры, и игроки не могут редактировать их конфиденциально. Правила игры в этой игре таковы: за каждую исключенную линию начисляется 10 очков, а каждые дополнительные 100 очков увеличиваются на один уровень. Начальный счет равен 0, начальный уровень - 1.

Ниже приведен основной код для реализации таких функций, как обновление очков и уровней:

              /**

               * Определите, заполнена ли строка. Если строка заполнена, вызовите метод исключения.

               */

              частная пустота isFullLine() {

                     // TODO Автоматически сгенерированная заглушка метода

                     для (int я = 0; я <20; я++) {

                            int строка = 0;

                            логический флаг = правда;

                            for (int j = 0; j < 12; j++) {

                                   if (!gc.getBox(i, j).isColorBox()) {

                                          флаг = ложь;

                                          перерыв;

                                   }

                            }

                            если (флаг == true) {

                                   строка = я;

                                   gc.delete(row);//Удалить строку

                                   если (isMusic == true)

                                   {mp.playEraseSound();}

                                   addScor();//Добавить оценку

                                   if(scor%100==0)//Устанавливаем 100 пунктов для повышения на один уровень

                                   upspeed=true;//Увеличиваем флаг скорости до true

                                   если (скорость == правда)

                                          верхний уровень();

                            }

                     }

              }

              /**

               * Как подсчитываются баллы

               */

              частная пустота addScor() {

                     оценка = оценка +10;

                     jt9.setText("Оценка: "+MyFrame.scor);

              }

       }

       частный недействительный сброс () {

              оценка = 0;

              ранг=0;

              jt10.setText("Уровень:"+ранг);

              jt9.setText("Оценка: "+оценка);

              скорость = ложь;

              игра = правда;

              ранстоп = ложь;

              gc.setGameOver(ложь);

              gc.repaint();

              gc.reset();

       }

Функции кнопок панели управления описаны в разделе 4.3.1 и здесь повторно описываться не будут.

6 тестовых запусков системы

6.1 Обзор теста

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

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

Целью системного тестирования является проверка того, соответствует ли конечная программная система требованиям пользователя.

Основное содержание включает в себя:

(1) Функциональное тестирование. То есть функция тестовой системы программного обеспечения соответствует требованиям документа, такого как « Спецификация требований к продукту» . Поскольку правильность является наиболее важным фактором качества программного обеспечения, функциональное тестирование имеет решающее значение.

(2) Испытание на надежность. То есть способность тестировать нормальную работу программной системы в ненормальных условиях. Надежность имеет два значения: одно — отказоустойчивость, а другое — устойчивость.

6.1.1  Принципы тестирования

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

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

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

(3) К тестам нельзя относиться небрежно.

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

Цель:

(1) Обеспечить нормальное выполнение работ по тестированию системы;

(2) Проверить несоответствие или противоречие между программными продуктами и системными требованиями;

(3) Создать полную базу данных для отслеживания дефектов тестирования системы;

(4) Обеспечить своевременное уведомление соответствующих групп и отдельных лиц о деятельности и результатах тестирования программных систем.

6.1.2  Методы испытаний

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

Функциональное тестирование: проверьте, можно ли нормально использовать функциональные точки каждого функционального модуля в системе;

Ручное тестирование: в основном проверяется ввод, нажатие и другие функции;

Тестирование черного ящика: после ввода проверьте правильность результата.

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

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

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

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

② Увеличьте объем входных данных на порядок, чтобы определить, как реагирует функция ввода.

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

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

Испытание на прочность

Тестирование на прочность проверяет устойчивость программы к аномальным условиям. Стресс-тестирование всегда заставляет систему работать с ненормальными конфигурациями ресурсов. Например: ① Когда нормальная частота прерываний составляет от одного до двух в секунду, запустите тестовый пример, который генерирует десять прерываний в секунду; ② Увеличьте скорость ввода данных количественно, чтобы проверить способность отклика подфункции ввода; ③ Максимум необходимое для работы пространство для хранения (или другие ресурсы); ④ Запуск тестовых случаев, которые могут привести к сбою операционной системы виртуальной памяти или сильному дрожанию данных на диске и т. д.

Тестирование производительности

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

6.1.3  Значимость испытаний и меры предосторожности

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

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

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

    1> Грамматическая ошибка

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

    2> Логическая ошибка

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

    3> Ошибка выполнения

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

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

6.2 Тестирование игровых кодов и алгоритмов

    1> При написании метода get() требуется возвращаемое значение, но в программе нет оператора return, что приводит к ошибке при компиляции программы. Решение состоит в том, чтобы добавить в метод оператор return и вернуть соответствующий контент.

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

    3> При записи положения по умолчанию каждого квадрата Т-образного квадрата инициализируйте переменную i, которая управляет положением квадрата, равным 0. Результатом операции является то, что Т-образный квадрат по умолчанию становится вертикальным квадратом. Решение состоит в том, чтобы изменить значение инициализации переменной i на 1 для достижения запланированного эффекта.

    4> При запуске программы статистические оценки представляют собой только оценки после удаления каждой полной строки, а предыдущие оценки будут перезаписаны и накопления не будет. Решение состоит в том, чтобы изменить «score=" в программе на "score+=", чтобы можно было накапливать баллы.

    5> Ошибки в процессе алгоритма в основном касаются того, как обнаруживать и устранять блоки, как обрабатывать накопление очков после прохождения уровня и стоит ли обновляться.Эти аспекты были окончательно решены после обсуждений с одноклассниками и справочных материалов.

6.3 Функциональное тестирование пунктов меню игрового интерфейса

1> Тест меню «Игра»

Таблица 6.1. Тестовый пример игрового меню

Номер тестового примера

Название тестового проекта

Этапы выполнения теста

выход

Результаты теста

01

Тест кнопки «Пуск»

Нажмите «Игра» → «Начать».

сброс игры

успех

02

Тест кнопки «Конец игры»

Нажмите «Игра» → «Завершить игру».

игра закончена

успех

03

«Базовое» тестирование кнопок

Нажмите «Игра» → «Основные».

Уровень игры выбран начинающий.

успех

04

«Промежуточный» тест кнопки

Нажмите «Игра» → «Средний».

Уровень игры выбран как средний

успех

05

Тест кнопки «Дополнительно»

Нажмите «Игра» → «Дополнительно».

Уровень игры выбран как Advanced.

успех

06

«Пользовательский» тест кнопки

«Пользовательский» тест кнопки

Появится диалоговое окно для изменения пользовательской информации.

успех

07

Тест слайдера «Скорость падения»

Нажмите «Игра» → «Настроить» → «Скорость падения».

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

успех

08

Тест переключателя «Форма блока»

Нажмите «Игра» → «Настроить» → переключатель «Форма блока».

Вы можете выбрать форму блока: элементарную, промежуточную или расширенную, чтобы изменить форму блока.

успех

09

Тест коробки выбора «Поднимется ли ящик автоматически»

Нажмите «Игра» → «Настроить» → поле выбора «Поднимется ли блок автоматически».

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

успех

10

Тест окна выбора «Включать ли звук во время игры»

Нажмите «Игра» → «Настроить» → поле выбора «Воспроизводить ли звуки во время игры».

Вы можете установить небольшой флажок. Если он установлен, звук будет воспроизводиться во время игры. Если он не установлен, звук не будет воспроизводиться во время игры.

успех

11

Поле выбора «Изменить фон»

Нажмите «Игра» → «Настроить» → поле выбора «Воспроизводить ли звуки во время игры».

Вы можете отметить маленький квадрат. Если вы выберете его, фоновое изображение игры будет изменено. Если вы снимите флажок, фоновое изображение игры не изменится.

успех

12

Тестирование кнопок «ОК» и «Отмена»

Нажмите кнопку «Игра» → «Настроить» → «ОК» или «Отмена».

Нажмите «ОК», чтобы сохранить измененные настройки и выйти из диалогового окна; нажмите «Отмена», чтобы выйти из диалогового окна без изменения настроек.

успех

13

Тест кнопки «Цвет блока»

Нажмите «Игра» → «Цвет блока».

Появится диалоговое окно, и вы сможете изменить цвет блока, HSB, RGB и другую настраиваемую информацию.

успех

14

Тест кнопки «Выход»

 Нажмите «Игра» → «Выйти».

Выйдите из игры и закройте главное окно интерфейса.

успех

2> Проверка меню «Помощь»

Таблица 6.2 Тестовый пример меню «Справка»

Номер тестового примера

Название тестового проекта

Этапы выполнения теста

выход

Результаты теста

15

Тест кнопки «О программе»

Нажмите «Помощь» → «О программе».

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

успех

6.4 Функциональное тестирование ключевых событий

Таблица 6.3 Тестовые примеры функции ключевых событий

Номер тестового примера

Название тестового проекта

Этапы выполнения теста

выход

Результаты теста

16

Тест на движение блока

Во время игры нажимайте «Влево, Вправо, Вниз»

Блоки перемещаются нормально и не выходят за пределы границ.

успех

17

Тест вращения блока

Во время игры нажмите клавишу направления «вверх».

Блоки можно менять местами без границ и препятствий.

успех

6.5 Функциональная проверка укладки и исключения блоков

Таблица 6.4. Тестовые примеры функций укладки блоков и исключения

Номер тестового примера

Название тестового проекта

Этапы выполнения теста

выход

Результаты теста

18

Тест укладки блоков

Когда блок падает на дно или сталкивается с препятствием

Блоки удачно сложены внизу

успех

19

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

Когда возникает полная строка

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

успех

20

игра окончена, тест

Когда экран заполнен

Появится окно сеанса с сообщением «Игра окончена».

успех

6.6  Результаты испытаний

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

в заключение

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

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

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

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

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

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

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

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

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

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

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

这次的毕业设计,我受益匪浅,让我的思维方式更加缜密,能多个角度的看待、处理问题;知道遇到问题该如何去分析问题、解决问题。相信这些都会让我在以后的工作中受益无穷的。

参考文献

[1] 李刚,疯狂Java讲义(第3版),北京:电子工业大学出版社,2014.7

[2] 明日科技,Java从入门到精通(第4版),北京:清华大学出版社,2016(2017.1重印)

[3] 荣钦科技 Java2游戏设计.清华大学出版社,2004.

[4] 高凌琴 陈青华.俄罗斯方块游戏关键技术探讨[J].信息技术与信息化讨,2008年第二期

[5] 艾克尔.Java编程思想[M].北京:机械工业出版社,2005.2

[6] (美) Paul Hyde.Java线程编程[M].北京:人们邮电出版社,2003

[7] Martin dejode.Symbian OS J2ME[M].北京:人民邮电出版社,2005.10

[8] 朱福喜. Java程序设计技巧与开发实例[M].北京:人民邮电出版社,2004.2

[9] 袁海燕 王文涛.Java实用程序设计100例[M].北京:人民邮电出版社,2005.2:51~96

[10] 黄复贤.俄罗斯方块游戏的敏捷设计与开发[J]. 电脑编程技巧与维护,2005.4

[11] (美)Bill Venners.深入Java虚拟机[M].北京:机械工业出版社,2003.9.63~98

[12] 闻怡洋.J2ME MIDP 1.0/2.0无线设备编程指南[M].北京:北京大学出版社,2004.5:393~420

[13]赵东跃.俄罗斯方块编程[J].电脑编程技巧与维护,1998年第六期

[14]殷兆麟.Java网络编程基础[M].北京:北方交通大学出版社,2004

[15] (美)John Zukowski.Java 2 从入门到精通[M].北京:电子工业出版社,1999

[16] 宋波.Java应用开发教程[M].北京:电子工业出版社,2002

[17] 托普雷.J2ME技术手册[M].北京:中国电力出版社,2004.6:259~312

附录A 外文原文

The psychology of Tetris

   Shapes fall from the sky, all you have to do is to control how they fall and fit within each other. A simple premise, but add an annoyingly addictive electronica soundtrack (based on a Russian folk tune called Korobeiniki, apparently) and you have a revolution in entertainment.

   Since Tetris was launched on the world in the 1980s, millions of hours have been lost through playing this simple game. Since then, we’ve seen games consoles grow in power, and with it the appearance of everything from Call of Duty to World of Warcraft. Yet block and puzzle games like Tetris still have a special place in our hearts. Why are they are so compelling?

   The writer Jeffrey Goldsmith was so obsessed with Tetris that he wrote a famous article asking if the game’s creator Alexey Pajitnov had invented “a pharmatronic?” – a video game with the potency of an addictive drug. Some people say that after playing the game for hours they see falling blocks in their dreams or buildings move together in the street – a phenomenon known as the Tetris Effect. Such is its mental pull, there’s even been the suggestion that the game might be able to prevent flashbacks in people with PTSD.

   I had my own Tetris phase, when I was a teenager, and spent more hours than I should have trying to align the falling blocks in rows. Recently, I started thinking about why games like Tetris are so compelling. My conclusion? It’s to do with a deep-seated psychological drive to tidy up.

   Many human games are basically ritualised tidying up. Snooker, or pool if you are non-British, is a good example. The first person makes a mess (the break) and then the players take turns in potting the balls into the pockets, in a vary particular order. Tetris adds a computer-powered engine to this basic scenario – not only must the player tidy up, but the computer keeps throwing extra blocks from the sky to add to the mess. It looks like a perfect example of a pointless exercise – a game that doesn't teach us anything useful, has no wider social or physical purpose, but which weirdly keeps us interested.

   There's a textbook psychological phenomenon called theZeigarnik Effect, named after Russian psychologist Bluma Zeigarnik. In the 1930s, Zeigarnik was in a busy cafe and heard that the waiters had fantastic memories for orders – but only up until the orders had been delivered. They could remember the requests of a party of 12, but once the food and drink had hit the table they forgot about it instantly, and were unable to recall what had been so solid moments before. Zeigarnik gave her name to the whole class of problems where incomplete tasks stick in memory.

   The Zeigarnik Effect is also part of the reason why quiz shows are so compelling. You might not care about the year the British Broadcasting Corporation was founded or the percentage of the world's countries that have at least one McDonald's restaurant, but once someone has asked the question it becomes strangely irritating not to know the answer (1927 and 61%, by the way). The questions stick in the mind, unfinished until it is completed by the answer.

Game theory

   Tetris holds our attention by continually creating unfinished tasks. Each action in the game allows us to solve part of the puzzle, filling up a row or rows completely so that they disappear, but is also just as likely to create new, unfinished work. A chain of these partial-solutions and newly triggered unsolved tasks can easily stretch to hours, each moment full of the same kind of satisfaction as scratching an itch.

   The other reason why Tetris works so well is that each unfinished task only appears at the same time as its potential solution – those blocks continuously fall from the sky, each one a problem and a potential solution. Tetris is a simple visual world, and solutions can immediately be tried out using the five control keys (move left, move right, rotate left, rotate right and drop – of course). Studies of Tetris players show that people prefer to rotate the blocks to see if they'll fit, rather than think about if they'll fit. Either method would work, of course, but Tetris creates a world where action is quicker than thought – and this is part of the key to why it is so absorbing. Unlike so much of life, Tetris makes an immediate connection between our insight into how we might solve a problem and the means to begin acting on it.

   The Zeigarnik Effect describes a phenomenon, but it doesn't really give any reason for why it happens. This is a common trick of psychologists, to pretend they solved a riddle of the human mind by giving it a name, when all they've done is invented an agreed upon name for the mystery rather than solved it. A plausible explanation for the existence of the Effect is that the mind is designed to reorganise around the pursuit of goals. If those goals are met, then the mind turns to something else.

   Trivia takes advantage of this goal orientation by frustrating us until it is satisfied. Tetris goes one step further, and creates a continual chain of frustration and satisfaction of goals. Like a clever parasite, Tetris takes advantage of the mind's basic pleasure in getting things done and uses it against us. We can go along with this, enjoying the short-term thrills in tidying up those blocks, even while a wiser, more reflective, part of us knows that the game is basically purposeless. But then all good games are, right?

   If you would like to comment on this article or anything else you have seen on Future, head over to our Facebook page or message us on Twitter.

附录B 外文翻译

俄罗斯方块的心理效应

这一人们喜闻乐见的游戏成功的秘诀在于抓住了我们重复排列与使用的心理乐趣。

几何图形从屏幕上方缓缓降落,你要做的就是控制其降落方式并与其他图形排列消除。游戏的初衷很简单,但加上了令人上瘾的背景电子音乐后(据说来自俄罗斯民谣Korobeiniki)人们的娱乐生活发生了翻天覆地的变化。

自从1986年俄罗斯方块问世后,这一简单的游戏耗去了玩家数百万个小时。从那时起,从使命召唤到魔兽世界,游戏操纵平台的外观和性能都在茁壮发展。但像俄罗斯方块这样的方块益智类游戏始终占据了我们心中的一席之地。为何它们如此经久不衰呢?

作家杰弗里·戈德史密斯是沉迷于俄罗斯方块不能自拔,乃至于他写了一篇著名的文章,文中提到俄罗斯方块的发明者阿里克谢·帕吉诺特夫是否发明了一种“瘾药”——让人可以玩出瘾。一些人说自己连玩了几小时俄罗斯方块后连梦里都会出现降落的方块,还有看街上的大楼都在移动——这是一种名为“俄罗斯效应”的现象。这是游戏产生的心理推动作用,还有建议称那些患有创伤后精神紧张性障碍的人们需要预防游戏产生的幻觉重现。

当我十几岁的时候也有过一段俄罗斯方块沉迷期,我花了很多时间在方块的排列组合上。最近,我开始反思为什么俄罗斯方块这类游戏能够长青。说说我的结论吧,植根人们心中的心理驱使作用是整理这些方块的关键。

很多游戏的宗旨大体都是整理消除。落袋台球(snooker)就是典型的例子(对于非英国人来说叫做pool)。第一个人把球打乱后,其他人依照不同规则轮流将球射入落袋里。俄罗斯方块在这一基本框架中加入了电脑控制的成分——不光是玩家要整理方块,电脑还会不断从上方扔下额外的方块来制造凌乱。游戏看起来就是整一个漫无目的的过程,完全没有寓教于乐的成分在内,也没有深远的社交或是心理意义,但是我们却意外地为此着迷。

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

Эффект Зейгарник — одна из причин популярности разведывательных шоу. Вас может не волновать, в каком году была основана BBC или в скольких странах мира есть хотя бы один Макдональдс, но как только возникнет подобный вопрос, вы почувствуете себя некомфортно, если не знаете ответа (кстати, ответ 1927 и 61%). Вопросы задерживаются в вашей голове до тех пор, пока на них не будут даны ответы.

Принцип игры

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

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

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

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

Использованная литература:

Дипломный проект игровой системы «Тетрис» на основе Java (отчет проекта + PPT защиты + исходный код + база данных + скриншоты + видео развертывания) icon-default.png?t=N5K3https://download.csdn.net/download/dwf1354046363/87813602

174 примера выпускных проектов по Java, включая видеоролики о развертывании_Блог И Сяося-блог CSDN Различные выпускные проекты по Java выбираются самостоятельно, и имеется более 160 наборов выпускных проектов по Java с поясняющими видеороликами и коллекция https://cv2022.blog.csdn .net/article/details/124463185?spm=1001.2014.3001.5502

рекомендация

отblog.csdn.net/woaimx_1314/article/details/130789752