Diseño e implementación de sistema de juego Tetris basado en Java (informe del proyecto + PPT de defensa + código fuente + base de datos + capturas de pantalla + video de implementación)

Diseño e implementación de juego Tetris basado en Java.

    Tetris es un juego popular en todo el mundo y ha sido popular en computadoras, teléfonos móviles y consolas de juegos portátiles desde el principio hasta el presente. Es un juego clásico simple con reglas de juego simples, pero no le falta diversión. Fácil de aprender y aplicable. El alcance es amplio y bien conocido. Las reglas básicas simples del juego Tetris son que 7 gráficos regulares diferentes compuestos de pequeños cuadrados caen de la pantalla uno tras otro. El jugador se mueve para formar una barra horizontal completa cuando cae, y luego desaparece. El jugador gana puntos y el juego El nivel aumenta. El juego termina cuando los gráficos restantes se acumulan en la parte superior de la pantalla.

    Tetris fue originalmente un juego casual desarrollado por el ruso Alexei Pajitnov en 1984. Alguna vez creó un valor comercial incomparable e influyó en el desarrollo y la cadena industrial de una generación de juegos casuales. Con el continuo desarrollo y los cambios de la era de la información, la ciencia y la tecnología, las computadoras se han popularizado en la vida de todos. En la ajetreada vida laboral, este tipo de juegos casuales brinda cierta relajación a las personas.

    Este artículo describe y analiza en detalle las ideas básicas y algunas reglas básicas del juego de la implementación tradicional del Tetris clásico. Sobre esta base, desarrolla aún más el modelo innovador y creativo del Tetris y desarrolla un juego complementario basado en el juego clásico. A medida que aumenta el nivel, aumenta la dificultad. Se han desarrollado creativamente módulos que pueden controlar el cambio de color de los bloques y se han agregado módulos de sonido y música del juego. Este documento proporciona un proceso de implementación específico, una descripción detallada y algo de código fuente para las funciones anteriores.

Este artículo explica el desarrollo y la historia del juego Tetris, la importancia de desarrollar este juego, el entorno de desarrollo y el conocimiento relevante del desarrollo de software y la programación java basada en la ingeniería de software, así como el análisis de requisitos del programa, el diseño del esquema, diseño e implementación detallados y depuración. Se proporciona una serie de descripciones para la operación.

    El diseño de este programa está basado en el sistema Microsoft Windows 7, utilizando Java como lenguaje de desarrollo y el diseño e implementación del juego en la plataforma de desarrollo Eclipse.

Palabras clave: diseño de juegos; Tetris; ingeniería de software; Java; Eclipse.

Tabla de contenido

Diseño e implementación de juego Tetris basado en Java ........................ I

Resumen................................................. ..................... I

Basado en el diseño e implementación del juego Java Tetris ................ II

Abstracto ................................................. .................II

1. Introducción................................................ ................... 1

1.1 Antecedentes e importancia del desarrollo del programa................................. ..... 1

1.2 Descripción general de la tecnología de desarrollo................................... ... ......... 2

1.3 Estado actual de la investigación del juego Tetris................................. 2

1.3.1 Estado actual de la investigación en el país y en el extranjero................................ .... 2

1.3.2 Revisión de la literatura................................................ ... ........ 3

2Tecnologías relacionadas................................................ ............4

2.1 Introducción a JAVA................................................ .. ............ 4

2.2 Introducción a los componentes de Swing................................................. ... ....... 4

2.3 Introducción a la plataforma de desarrollo Eclipse.................................... .... ... 5

2.4 Entorno de plataforma del sistema : ......................................... ..... ........ 6

2.4.1 Plataforma de hardware:................................................ .... ....... 6

2.4.2 Plataforma de software:................................................ .... ....... 6

3 Análisis del sistema................................................. ........................ 7

3.1 Análisis de viabilidad................................................ ................. 7

3.1.1 Análisis de viabilidad económica................................ .... 8

3.1.2 Análisis de viabilidad técnica.................................... .... .... 8

3.1.3 Análisis de viabilidad social................................... .... .... 8

3.2 Análisis de requisitos................................................ ............ 8

3.2.1 Requisitos funcionales................................................ ..... .. 9

3.2.2 Requisitos no funcionales................................................ ... ... 9

3.2.3 Control de interfaz................................................ ... ....... 9

4 Diseño general del sistema................................. ...... ...... 11

4.1 Diseño funcional del sistema................................................ .... ...... 11

4.1.1 Proceso básico del procesamiento comercial manual................................. 11

4.1.2 Módulos funcionales del proceso básico................................. 12

5 Diseño detallado e implementación del sistema................................................. .. ..... 15

5.1 Módulo de visualización de la interfaz principal del juego.................................... 15

5.2 Módulo expositor de lienzo y caja................................ ... 16

5.2.1 Diseño del módulo de lienzo de fondo.................................... ..... dieciséis

5.2.2 Vista previa del diseño del módulo de bloques.................................... ..... 19

5.2.3 Diseño del módulo de movimiento y rotación de bloques................................. 21

5.3 Módulo del panel de control................................................ .. ........ 25

5.3.1 Diseño del módulo de la barra de menú.................................. ...... 25

5.3.2 Diseño de botones del panel de control.................................... ..... 26

6 Operación de prueba del sistema................................... ...... ......29

6.1 Descripción general de la prueba................................. ...... 29

6.1.1 Principios de prueba................................. ...... 29

6.1.2 Método de prueba.................................... ... ...... 30

6.1.3 Importancia y precauciones de la prueba.................... 31

6.2 Pruebas de códigos y algoritmos del juego.................................... 31

6.3 Prueba funcional de las opciones del menú en la interfaz del juego.................... 32

6.4 Prueba funcional de eventos clave.................................. .... 34

6.5 Prueba de función de apilamiento y eliminación de bloques................................. 35

6.6 Resultados de la prueba.................................. ................. 35

en conclusión................................................ ................. 36

referencias................................................. ................. 38

Expresiones de gratitud................................................. ....... ........................ 39

Apéndice A Texto original extranjero................................................ ..... ........40

La psicología del Tetris................................................ 40

Apéndice B Traducción de lenguas extranjeras................................................ ..... ........43

Los efectos psicológicos del Tetris................................................ ..... 43

1. Introducción

    La introducción describe brevemente los antecedentes del desarrollo del programa, la importancia del desarrollo, la tecnología de desarrollo requerida y el estado actual de la investigación del juego Tetris en el país y en el extranjero.

1.1 Antecedentes e importancia del desarrollo del programa

    El juego Tetris es un juego popular y duradero en todo el mundo. Es un juego casual que se puede jugar en una serie de productos como computadoras, teléfonos móviles, consolas de juegos de TV, consolas de juegos portátiles, etc. Es una sensación incomparable y un valor comercial incalculable para cualquier juego. Es un evento importante en la historia de los juegos y el desarrollo de software.

    Un día de junio de 1984, Alex Pajitnov, un matemático de Moscú, Rusia, se inspiró repentinamente para diseñar este juego después de jugar un rompecabezas en el Centro Científico de Computación de Moscú donde trabajaba. Al principio solo lo estaba desarrollando en Electronica 60 ( una computadora), y más tarde fue portado a la PC a través de Vadim Gerasimov, y se difundió ampliamente en la comunidad informática de Moscú. Tetris comenzó a hacerse popular y se convirtió en el juego casual clásico más vendido de la historia, aún conserva su encanto como siempre. Las simples reglas básicas del juego Tetris se basan en un campo de juego virtual estándar para colocar pequeños cuadrados. La unidad básica es un pequeño cuadrado, que se compone de cuatro pequeños cuadrados y 7 gráficos regulares diferentes (forma de campo, forma de Z, forma de Z inversa, Barra larga en forma de 7, en forma de 7 invertida, en forma de T) Hay 28 esquemas gráficos en total para rotar el bloque a 90 grados, 180 grados, 270 grados, 360 grados mediante la operación del jugador de la tecla superior, izquierda y las teclas derecha y la tecla abajo. Para ajustar la posición acelerando la caída, los bloques se forman en uno o más bloques completos en la parte inferior de la pantalla y luego se eliminan para dejar espacio para los nuevos bloques que caen. Cada vez que se completa una Se elimina la barra horizontal, el nivel del jugador aumenta en un nivel. Cuando el nivel alcanza un cierto nivel A medida que pasa el tiempo, la velocidad de caída se acelera. Una vez que los bloques que no han sido eliminados llegan a la parte superior de la pantalla, el juego termina.

    Con la continua actualización y desarrollo de la tecnología informática, los juegos de Tetris introducen constantemente varios modos y hay muchas versiones diferentes para que todos puedan jugar, porque el juego en sí puede ser simple o complejo y puede entrenar bien a los jugadores. Su capacidad de reacción mental y la capacidad de pensamiento lógico también puede brindar diversión infinita a los jugadores, por lo que la mayoría de los jugadores lo adoran profundamente. Cuando se trata de desarrollar software de juegos, la mayoría de la gente siente que está fuera de su alcance y es mágico. Con la innovación continua de métodos y herramientas de desarrollo, no está fuera de su alcance desarrollar algunos juegos pequeños usted mismo. El juego Tetris tiene un estatus incomparable en la historia de los juegos. La interfaz del juego es simple y el código no es muy complicado. También hay muchos algoritmos y diseños para la implementación del juego Tetris en Internet, y la dificultad no es particularmente alto.

    Tetris es un juego simple y de rompecabezas. Con su interfaz única y concisa y su modo de juego extremadamente divertido, muchos entusiastas del juego están profundamente involucrados en él y no pueden liberarse. Es adecuado para todas las edades. En el ritmo acelerado de la vida actual, la presión del estudio y el trabajo sobre los estudiantes y los equipos de trabajo también está aumentando. Las tareas de todos son cada vez más pesadas y cada vez hay menos tiempo libre para descansar, lo que hace que la gente necesite con mayor urgencia algo simple. Juego casual que ahorra tiempo y que todos pueden disfrutar. No hay duda de que Tetris es un rompecabezas simple y un juego casual interesante, y se puede trasplantar a una serie de dispositivos portátiles como computadoras, teléfonos móviles, tabletas, consolas de juegos de TV, consolas de juegos portátiles, diccionarios electrónicos, MP4 y otros dispositivos portátiles. dispositivos. Este proyecto de investigación es muy valioso tanto en términos de desarrollo técnico como de importancia social y es un intento audaz por mi parte de desarrollar juegos.

1.2 Descripción general de la tecnología de desarrollo

La ingeniería de software es una disciplina que estudia el uso de métodos de ingeniería para construir y mantener software efectivo, práctico y de alta calidad; el diseño incluye lenguajes de programación, bases de datos, algoritmos, herramientas de desarrollo de software, plataformas de sistemas, patrones de diseño y muchos otros aspectos; en In En la sociedad moderna, el software se utiliza en muchos aspectos típicos como correo electrónico, sistemas integrados, interfaces de interacción persona-computadora, suites ofimáticas, sistemas operativos, editores, bases de datos, juegos, etc.; al mismo tiempo, en diversas industrias de la sociedad actual. son aplicaciones de software informático, incluidas la industria, la agricultura, la banca, la aviación, los departamentos gubernamentales, etc., que pueden promover eficazmente el desarrollo económico y social y mejorar la eficiencia en el trabajo y la vida de las personas.

El código de desarrollo del juego Tetris no es particularmente complejo. Este documento se basa en el lenguaje de programación Java y utiliza componentes Swing comúnmente utilizados en el lenguaje Java. Swing es un conjunto de herramientas de interfaz gráfica de usuario (GUI) en Java. Es parte de la clase básica de Java. Incluye cuadros de texto, paneles separados, botones, tablas y otros dispositivos GUI. Está escrito en Java puro. Los desarrolladores pueden usar un pequeño Se puede escribir una gran cantidad de código para las diversas funciones flexibles y ricas y componentes modulares de Swing para crear interfaces de usuario hermosas y elegantes. El componente Java Swing incluye las siguientes clases de uso común: JFrame es un objeto gráfico en la pantalla que puede realizar operaciones básicas como maximizar, minimizar y cerrar. Es la idea básica de la programación de la GUI de Java; se puede utilizar JPanel para anidar. Los componentes con las mismas funciones lógicas en el formulario se pueden combinar y agregar al formulario JFrame. Es una clase contenedora de paneles en Swing. El objeto JLabel se usa para mostrar texto, imágenes o ambos y puede establecer algunas de sus propiedades; JTextField es un componente en ejecución que se usa para editar una sola línea de texto; JButton es una clase que se usa para crear botones. Además, el componente Swing en Java también contiene muchas clases funcionales, que pueden crear fácilmente algunas hermosas interfaces gráficas.

1.3 Estado de la investigación del juego Tetris

1.3.1 Estado de la investigación en el país y en el extranjero

Desde principios del siglo XXI, las computadoras han seguido desarrollándose y la industria de los deportes electrónicos también ha seguido entrando en una etapa ascendente. El desarrollo de software de juegos se ha vuelto cada vez más popular. El software de juegos, al igual que los dramas y las películas, es un nuevo tipo de tecnología que se está volviendo cada vez más popular.Producto de arte integral. A diferencia del desarrollo web y el desarrollo de software en general, el desarrollo de software de juegos de computadora no solo requiere que los diseñadores y desarrolladores dominen habilidades de programación profesionales y métodos de ingeniería de software, sino que también requiere conocimientos profesionales en el campo de los juegos y conocimientos profesionales de desarrollo de juegos para ser efectivo. Desarrollar e implementar la interfaz vívida del juego, el procesamiento de efectos de sonido y lograr una interacción perfecta con los jugadores, etc.

El juego "Tetris", desarrollado originalmente por el ex científico soviético Alex Pajitnov, era un software educativo y luego comenzó a otorgarse licencias a varias compañías de juegos. Desde entonces, está disponible en las principales plataformas y aparecieron varias versiones del juego.

La versión de Tetris para Game Boy vendió 4,24 millones de unidades en Japón, lo que lo convierte en el juego más popular en la historia de los juegos de Game Boy. Durante la Guerra del Golfo, el juego Tetris se convirtió en uno de los juegos para matar el tiempo más adecuados para las tropas estadounidenses en el frente.

Los principios básicos del Tetris son relativamente simples para la mayoría de los programadores y el Tetris es matemático, dinámico y bien conocido. También se utiliza a menudo como materia de práctica para la programación de juegos.

1.3.2 Revisión de la literatura

Los documentos [1] y [2] tienen como objetivo una explicación de base cero, utilizan ejemplos para guiar a los lectores a aprender en profundidad, utilizan el modo de explicación de conocimiento básico → tecnología central → aplicación avanzada → práctica real del proyecto para explicar varias tecnologías y prácticas de Java en Términos simples y fáciles de entender. Desde la perspectiva de los principiantes, a través de un lenguaje fácil de entender y ejemplos coloridos, presenta en detalle todos los aspectos de la tecnología que deben dominarse en el desarrollo de programas utilizando el lenguaje Java. Incluyendo: familiaridad con las herramientas de desarrollo de Eclipse, conceptos básicos del lenguaje Java, clases y objetos, clases de empaquetado, clases de procesamiento de números, interfaces, herencia y polimorfismo, características avanzadas de clases, manejo de excepciones, programación Swing, clases de colección, entrada y salida de E/S. Reflexión, tipos enumerados y genéricos, subprocesos múltiples, comunicación de red, operaciones de bases de datos, componentes de tabla Swing, componentes de árbol Swing, otros componentes Swing avanzados, administradores de diseño avanzados, manejo avanzado de eventos, dibujo AWT y reproducción de audio, etc. Estos dos documentos cubren el lenguaje y la tecnología Java "suficientes", con ejemplos ricos y contenido detallado. Para principiantes y estudiantes con cierta base en Java, pueden mejorar rápidamente la tecnología y las habilidades de desarrollo de los estudiantes. En el diseño de este proyecto, los contenidos relacionados con el diseño de interfaz gráfica, componentes y diseño de interfaz de usuario, procesamiento de eventos y componentes de construcción de ventanas, así como los conocimientos básicos de Swing y su serie de componentes, fueron todos referidos a estos dos documentos, los cuales Me dio mucha inspiración, ayuda.

El documento [3] explica principalmente el dibujo 2D; la producción de animación de juegos; la base del programa de red; la interfaz de juego mejorada; la inteligencia artificial y los juegos 2.5D; el buscaminas, el laberinto, el Tetris y otros ejemplos de juegos; la colisión, el sistema de partículas, las coordenadas tridimensionales 5D y otros. algoritmos de dibujo, producción de juegos multijugador en línea. Se recopilan una serie de fórmulas algorítmicas para que los lectores puedan utilizarlas de forma más cómoda. En un enfoque paso a paso, el proceso de diseño del juego se analiza gradualmente, lo que lleva a los lectores a resolver los problemas que pueden surgir en la etapa de desarrollo del juego y resume la experiencia práctica en la producción de juegos Java. Los principios de los juegos, la implementación de animaciones, el procesamiento de efectos de sonido, el procesamiento de eventos del mouse y el teclado, la inteligencia artificial y otros conocimientos en el diseño de este curso se refieren a este documento.

La literatura [4] analiza el principio del programa y la tecnología de implementación del clásico juego de computadora Tetris, y describe los requisitos funcionales del programa, la estructura de datos, la rotación de gráficos, la transformación de coordenadas y otras tecnologías clave desde la perspectiva de la ingeniería de software. A través de este documento, aprendí más sobre el campo profesional del desarrollo de juegos de Tetris.

El documento [5] es un libro avanzado que se centra más en explicar cómo utilizar Java para pensar y resolver problemas. Este documento me brindó mucha ayuda con las ideas y técnicas de programación Java durante el diseño del curso.

2Tecnologías relacionadas

2.1 Introducción a JAVA

    Java es el nombre general del lenguaje de programación orientado a objetos Java y la plataforma Java lanzado por Sun Microsystems. Es un lenguaje de programación orientado a objetos que puede escribir software de aplicación multiplataforma . La tecnología Java tiene buena versatilidad, eficiencia, multiplataforma y seguridad. Se usa ampliamente en PC, centros de datos, consolas de juegos, supercomputadoras científicas, teléfonos móviles e Internet. También cuenta con la comunidad profesional de desarrolladores más grande del mundo.

En los últimos veinte años, el lenguaje Java se ha convertido en uno de los lenguajes de programación más influyentes en la historia de las computadoras humanas, hasta cierto punto, incluso ha excedido el alcance de un lenguaje de programación y se ha convertido en una plataforma de desarrollo y un plataforma de desarrollo Modo canónico. Aún más: Java se ha convertido en una especie de creencia: el código abierto, la libertad y otros espíritus defendidos por el lenguaje Java han atraído a innumerables programadores destacados de todo el mundo. De hecho, desde la historia registrada de la humanidad, nunca ha habido un lenguaje de programación que pueda atraer a tantos programadores destacados, y ningún lenguaje de programación puede derivar tantos marcos de código abierto.

El lenguaje Java es un lenguaje de programación orientado a objetos muy puro, que aprovecha las diversas ventajas del lenguaje C y el lenguaje C ++, y abandona conceptos difíciles de entender como la herencia múltiple y los punteros en el lenguaje C ++. El lenguaje Java es potente y la simplicidad y facilidad de uso son dos características muy buenas. Como representante de los lenguajes de programación estáticos orientados a objetos, el lenguaje Java encarna de manera excelente la teoría orientada a objetos y permite a los programadores llevar a cabo desarrollos de programación más complejos con una forma de pensar más elegante.

No solo eso, las especificaciones Java EE relevantes en el lenguaje Java contienen los conceptos de ingeniería de software más populares en la actualidad, y se pueden implementar varias ideas de diseño avanzadas en las especificaciones, plataformas y marcos relacionados de Java EE. principio. Hasta cierto punto, aprender a dominar varios aspectos del conocimiento relacionado con el lenguaje Java equivale a aprender sistemáticamente conocimientos relevantes sobre el desarrollo de software, en lugar de simplemente aprender un lenguaje de programación.

Hoy en día, la mayoría de los sistemas bancarios, de telecomunicaciones, de valores, de comercio electrónico, de gobierno electrónico y de otro tipo se han creado utilizando la plataforma Java EE o están realizando una transición gradual a la plataforma Java EE. La especificación Java EE es actualmente la más madura. También es la especificación de desarrollo de aplicaciones a nivel empresarial más utilizada.

2.2Introducción a los componentes Swing

    Swing API es un conjunto extensible de componentes GUI para crear aplicaciones front-end/GUI basadas en JAVA. Está construido sobre la API de AWT y sirve como reemplazo de la API de AWT porque casi todos los controles que contiene corresponden a un control de AWT. Los componentes Swing siguen la arquitectura modelo-vista-controlador para cumplir con las siguientes pautas. Una sola API es suficiente para admitir múltiples apariencias y estilos; la API está basada en simulacros, por lo que la API de nivel más alto no necesita tener datos; la API utiliza el patrón Java Bean, de modo que las herramientas de creación y los IDE pueden proporcionar mejores servicios a los desarrolladores para utilizarlo.

    La arquitectura Swing API sigue una arquitectura MVC basada libremente de la siguiente manera. El modelo representa los datos del componente. Una vista representa una representación visual de los datos de un componente. El controlador acepta la entrada del usuario en la vista y refleja los cambios en los datos del componente. Los componentes Swing tratan el modelo como un elemento separado y combinan partes de vista y controlador en elementos de interfaz de usuario. Utilizando este enfoque, Swing tiene una arquitectura de apariencia y sensación conectable. Las principales características de Swing son:

    Ligero: los componentes de Swing son independientes de la API del sistema operativo nativo, porque los controles de la API de Swing generalmente se representan usando código JAVA puro en lugar de usar llamadas del sistema operativo subyacente.

    Controles enriquecidos: Swing proporciona un amplio conjunto de controles avanzados, como árboles, pestañas, controles deslizantes, selectores de color y controles de tabla.

    Personalización avanzada: los controles de giro se pueden personalizar de una manera muy sencilla porque la apariencia visual es independiente de la representación interna.

    Apariencia conectable: la apariencia de una aplicación GUI basada en Swing se puede cambiar en tiempo de ejecución según valores válidos.

2.3 Introducción a la plataforma de desarrollo Eclipse

Eclipse es una plataforma de desarrollo extensible de código abierto basada en Java que se centra en proporcionar una plataforma industrial con todas las funciones y calidad comercial para el desarrollo de herramientas altamente integradas. Eclipse es solo un marco y un conjunto de servicios para crear entornos de desarrollo a través de componentes complementarios. Eclipse viene con un conjunto estándar de complementos, incluidas las herramientas de desarrollo de Java (JDT).
  Eclipse comenzó en abril de 1999. Fue desarrollado originalmente por IBM como un entorno de desarrollo IDE de próxima generación para reemplazar el software comercial Visual Age para Java. IBM proporcionó la base de código inicial de Eclipse, incluidos Platform, JDT y PDE, en noviembre de 2001. Para la comunidad de código abierto, actualmente liderada por IBM, el proyecto Eclipse se ha convertido en una enorme alianza Eclipse, con más de 150 compañías de software participando en el proyecto Eclipse, incluidas Borland, Rational Software, Red Hat y Sybase, etc., y es ahora dirigido por Gobernado por la Fundación Eclipse, una alianza sin fines de lucro de proveedores de software. En 2003, Eclipse 3.0 seleccionó la especificación de la plataforma de servicios OSGi como arquitectura de tiempo de ejecución. En junio de 2007, se lanzó la versión estable 3.3. La versión 3.4, con nombre en código Ganímedes, se lanzó en junio de 2008.
  Eclipse es un conocido entorno de desarrollo integrado gratuito (IDE) multiplataforma que originalmente se usaba principalmente para el desarrollo del lenguaje Java, pero actualmente algunas personas usan complementos para usarlo como herramienta de desarrollo para otros lenguajes informáticos como C++ y Python. Originalmente, Eclipse era solo una plataforma marco que proporcionaba un entorno de desarrollo de complementos (Plug-in Development Environment, PDE). Este componente está dirigido principalmente a desarrolladores de software que desean ampliar Eclipse, permitiendo la construcción de herramientas que se integran perfectamente con el Entorno Eclipse.El soporte de muchos complementos hace que Eclipse tenga una flexibilidad que otros software IDE con funciones relativamente fijas son difíciles de tener. Dado que todo en Eclipse es un complemento, proporcionar complementos para Eclipse proporciona a los usuarios un entorno de desarrollo integrado consistente y unificado, de modo que todos los desarrolladores de herramientas tengan el mismo lugar para jugar.

Ventajas de Eclipse:

Actualmente, millones de personas en todo el mundo utilizan Eclipse para el desarrollo. ¿Por qué Eclipse tiene tantos fans? Esto tiene mucho que ver con que Eclipse integre muchas funciones en una.

    Eclipse es un software de código abierto. Esto significa que Eclipse no solo es de uso gratuito, sino que también puede aprender las técnicas de programación de los principales desarrolladores del mundo estudiando el código fuente y puede compartir bibliotecas públicas de código fuente abierto aportadas por desarrolladores de todo el mundo.

    Eclipse es verdaderamente extensible y configurable. Eclipse utiliza un mecanismo de enchufe, que es como un jarrón: puede agregar flores al jarrón en cualquier momento y también puede sacar fácilmente las flores que ya no son necesarias. En la actualidad, los complementos gratuitos y de pago están floreciendo en Internet, y el trabajo de desarrollo de complementos también está en pleno apogeo en el país y en el extranjero.

Eclipse admite muchos lenguajes de desarrollo, no solo Java. Eclipse solo proporciona a los desarrolladores un núcleo mínimo que puede ampliar las funciones del sistema. La arquitectura de complementos basada en puntos de extensión hace posible que Eclipse admita múltiples idiomas. Siempre que esté instalado el complemento para el idioma correspondiente, Eclipse puede admitir el desarrollo de ese idioma. Actualmente, Eclipse puede admitir C/C++, COBOL, PHP, Perl, Python y otros lenguajes. (Aunque Eclipse es principalmente un entorno de desarrollo Java, su arquitectura garantiza soporte para otros lenguajes de programación).

   Eclipse proporciona soporte para múltiples funciones de plataforma. Los desarrolladores pueden utilizar la plataforma con la que se sientan más cómodos y familiarizados, como Windows, Linux, MacOS, etc. Eclipse tiene su propio conjunto de herramientas gráficas independiente para cada plataforma, lo que brinda a las aplicaciones una apariencia de sistema operativo casi nativa y un mejor rendimiento.

 Basado en la especificación OSGi líder en la industria. La especificación OSGi fue lanzada por primera vez por Sun Microsystems, IBM, Ericsson, etc. en 1999. Sus plataformas de servicios incluyen: puertas de enlace de servicios, automóviles, teléfonos móviles, automatización industrial, automatización de edificios, computación en red PDA, entretenimiento (como iPronto) e IDE. , etc. Los sistemas basados ​​en OSGi se ejecutan en forma de microkernels, por lo que pueden realizar fácilmente sistemas intercambiables en caliente, de comportamiento que cambian dinámicamente, estables y eficientes con los que sueña la industria del software. A partir de 3.1, Eclipse abandonó resueltamente su marco original que había sido reconocido por la industria y adoptó OSGi como arquitectura. A partir de Eclipse3.2, Eclipse brinda soporte para el desarrollo basado en OSGi y los desarrolladores pueden usarlo para desarrollar sistemas basados ​​​​en OSGi.

   La hermosa interfaz hombre-máquina de Eclipse ha sido ampliamente elogiada. Eclipse proporciona una nueva API SWT/JFace (en lugar de AWT/Swing), que cambia el estilo de interfaz monótono y aburrido de SWT/Swing, haciendo posible desarrollar aplicaciones locales con interfaces gráficas ricas, como una brisa primaveral que sopla. El campo del desarrollo de escritorios Java brinda a las personas una sensación refrescante.

   Eclipse es lanzado por líderes de la industria y tiene un gran poder en la industria. La Fundación Eclipse ha absorbido una gran cantidad de instituciones de investigación académica y organizaciones comerciales para liderar la planificación y el desarrollo a largo plazo de Eclipse y garantizar que Eclipse ocupe una posición de liderazgo en la industria de herramientas de software.

2.4 Entorno de plataforma del sistema :

2.4.1 Plataforma de hardware:

   El hardware informático desarrollado por este programa es el siguiente:

Memoria: 4G

Disco duro: 500G

CPU: Intel (R) Core (TM) i5—3230M CPU a 2,60 GHz

Herramientas interactivas: teclado, ratón.

Pantalla: pantalla LCD

2.4.2 Plataforma informática:

El entorno de desarrollo de este sistema es el siguiente   

Sistema operativo: Microsoft Windows 7 Ultumate

Versión JDK: jdk-8u121-windows-x64

Versión de Eclipse: versión Neon.2 (4.6.2), eclipse-inst-win64

Análisis del sistema

El análisis del sistema es el primer paso que damos en el proceso de desarrollo de software, incluido el análisis de requisitos del sistema y el análisis de viabilidad. El análisis de requisitos del sistema se utiliza principalmente para explicar qué es el sistema y para qué debe utilizarse, y para llegar a un consenso entre los desarrolladores y los principales usuarios sobre este tema. El análisis de viabilidad del sistema consiste principalmente en analizar la implementación de todos los recursos del sistema para explicar la racionalidad, viabilidad e inevitabilidad del desarrollo y la inversión del sistema, y ​​racionalizar los problemas imprevistos que puedan surgir. El eslabón más desafiante en el desarrollo de software es el análisis de la demanda del sistema. El tiempo dedicado al análisis de la demanda es sin duda muy valioso. Si los cambios de la demanda ocurren con frecuencia, traerá problemas a las tareas de desarrollo de software completadas dentro del plan programado. Efectos adversos muy graves. Hacer un buen trabajo de análisis de requisitos del sistema y análisis de viabilidad ayudará a mejorar la conveniencia del proceso de desarrollo de software, permitirá el monitoreo y la gestión en tiempo real del proceso de desarrollo de software y facilitará el avance según lo planeado, logrando así el propósito de mejorar. la calidad del software Proporcionar comunicación y cooperación más portátiles para desarrolladores de programas, usuarios, etc. Como base original para los resultados del trabajo, el análisis de la demanda del sistema y el análisis de viabilidad también pueden expresar indirectamente las funciones del sistema a los usuarios potenciales, lo que les permite juzgar si las funciones del sistema satisfacen las necesidades que se deben lograr.

3.1 Análisis de viabilidad

El análisis de viabilidad se basa en el contenido principal y las condiciones de apoyo del proyecto en términos de tecnología, economía, ingeniería, tecnología, etc., como la demanda del mercado, la oferta de recursos, la escala de la construcción, la ruta del proceso, la selección de equipos, el impacto ambiental y la recaudación de fondos. , rentabilidad, etc. La investigación, el análisis y la comparación de otros aspectos, la predicción de los impactos ambientales financieros, económicos y sociales que se pueden lograr una vez finalizado el proyecto, si vale la pena invertir en el proyecto y cómo consultar y construir las decisiones del proyecto, proporcionan la base para un método integral de análisis del sistema. El análisis de viabilidad debe ser previsor, justo, fiable y científico.

Para garantizar la cientificidad, objetividad e imparcialidad del trabajo del estudio de viabilidad y prevenir eficazmente errores y omisiones, en el estudio de viabilidad, primero debemos realizar investigaciones e investigaciones desde un punto de vista objetivo e imparcial y hacer un buen trabajo en la recopilación de datos básicos. Los datos básicos recopilados deben demostrarse y evaluarse en función de condiciones reales objetivas, reflejar fielmente las leyes económicas objetivas y partir de datos objetivos y mediante análisis científicos para llegar a una conclusión sobre si el proyecto es viable.

La profundidad del contenido del informe del estudio de viabilidad debe cumplir con los estándares estipulados por el estado, el contenido básico debe ser completo y se debe utilizar la mayor cantidad de datos posible para evitar trabajos de mala calidad y formalismo.

Se deben dominar en la práctica los siguientes puntos clave: demostrar primero, luego tomar decisiones, manejar adecuadamente la relación entre las tres etapas de propuesta de proyecto, estudio de viabilidad y evaluación. La investigación debe detenerse en cualquier etapa cuando se considere inviable; Se debe realizar investigación e investigación. Seguimiento. Es necesario dominar información práctica y confiable para asegurar la exhaustividad, importancia, objetividad y continuidad de la selección de datos; comparar múltiples opciones y elegir la mejor. Para proyectos relacionados con el extranjero, o proyectos que deben estar en línea con estándares extranjeros bajo la presión de factores externos como unirse a la OMC, el contenido y la profundidad del estudio de viabilidad deben ser lo más consistentes posible con los estándares internacionales.

Para garantizar la calidad del estudio de viabilidad, se debe garantizar un ciclo de trabajo suficiente de la unidad de diseño de consultoría para evitar comportamientos irresponsables y apresurados por diversas razones.

El propósito del análisis de viabilidad es determinar si el problema se puede resolver en el menor tiempo y al menor costo. El punto principal del análisis de viabilidad no es resolver problemas, sino estudiar si vale la pena gastar recursos humanos y financieros para estudiarlos y resolverlos. Si existe una manera sencilla y fácil, entonces sí.

3.1.1 Análisis de viabilidad económica

    El propósito del análisis de viabilidad económica del sistema es calcular la inversión de capital requerida desde el desarrollo y la construcción hasta la operación del sistema, así como la demanda del mercado y los beneficios económicos del nuevo sistema, comparar el presupuesto de inversión con los beneficios esperados y calcular los costos económicos viabilidad.

Este sistema de juego se utiliza principalmente para el diseño de cursos de graduación en ingeniería de software para estudiantes universitarios, y no es necesario considerar los beneficios económicos que puede generar y el estado de desarrollo futuro del juego. Los requisitos económicos para el sistema de juego en sí no son altos, pero el conocimiento y los niveles de habilidad de los estudiantes mejoran mediante el desarrollo de este sistema de juego. Todo lo que necesita es una computadora equipada con el entorno operativo JDK y la herramienta de desarrollo Java, el software Eclipse, por lo que no es necesario considerar cuestiones económicas.

3.1.2 Análisis de viabilidad técnica

Hay muchos lenguajes de programación que se pueden usar para escribir juegos de Tetris. Este tema es principalmente para desarrollar el sistema de juego en un entorno basado en Java. Por lo tanto, este sistema utiliza principalmente componentes Swing en Java para el desarrollo y requiere definición de variables y inicialización, diseño de interfaz, inicialización del juego, entrada al juego, salida del juego, manejo de diversas operaciones durante el juego y cumplimiento de los requisitos del código para las funciones correspondientes. Los requisitos técnicos no son particularmente difíciles y técnicamente factibles.

3.1.3 Análisis de viabilidad social

El desarrollo de este sistema de juego se utiliza principalmente para el diseño de cursos de graduación y tesis, para consolidar el conocimiento de cuatro años de estudios universitarios. Es principalmente para individuos y escuelas. Es sólo para entretenimiento personal y diseño de cursos escolares y verificación de tesis de graduación. archivos. No tendrá ningún impacto en la sociedad, por lo que no es necesario considerar ningún factor legal, de derechos de autor y otros factores sociales. Es completamente factible en este sentido.

3.2 Análisis de requisitos

    El llamado "análisis de necesidades" se refiere a un análisis detallado del problema a resolver, aclarando los requisitos del problema, incluidos qué datos deben ingresarse, qué resultados se obtienen y qué se debe generar al final. Se puede decir que el "análisis de necesidades" en ingeniería de software consiste en determinar qué "hace" la computadora y qué efecto logra. Se puede decir que el análisis de requisitos se completa antes de que se complete el sistema.

    En ingeniería de software, el análisis de requisitos se refiere a todo el trabajo requerido para describir el propósito, alcance, definición y funcionalidad del nuevo sistema al crear un sistema informático nuevo o cambiar uno existente. El análisis de requisitos es un proceso clave en la ingeniería de software. Durante este proceso, los analistas de sistemas y los ingenieros de software determinan las necesidades del cliente. Sólo después de identificar estas necesidades se podrán analizar y buscar soluciones para el nuevo sistema. La tarea de la fase de análisis de requisitos es determinar la funcionalidad del sistema de software.

    En la historia de la ingeniería de software, la gente siempre ha creído que el análisis de requisitos es el paso más simple en la ingeniería de software. Pero durante la última década, se ha ido comprendiendo cada vez más que el análisis de necesidades es el proceso más importante. Si el analista no puede comprender correctamente las necesidades del cliente durante el análisis de la demanda, el software final no satisfará realmente las necesidades del cliente o el proyecto de software no se completará dentro del tiempo especificado.

3.2.1 Requisitos funcionales

    Todo el sistema de juego generará aleatoriamente 7 formas diferentes de bloques compuestos por cuatro bloques pequeños. Después de la rotación, se obtendrán 28 estados. Si se aumenta la dificultad del juego, se agregarán seis formas diferentes de bloques. Después de la rotación, se crearán 24 tipos. añadido.estado. Los bloques caen libremente a una cierta velocidad. El jugador controla el movimiento y la rotación izquierda y derecha de los bloques a través de las teclas arriba, abajo, izquierda y derecha del teclado, y coloca los bloques en la posición adecuada después de caer. Cuando el bloque cae, si una fila completa se llena con bloques después de que cae el bloque, entonces toda la fila será eliminada. Cuando se elimina una fila, la puntuación del jugador aumenta en 10 puntos. Cuando la puntuación alcanza los 100 puntos, el nivel del jugador aumenta en un nivel, la velocidad aumenta en un nivel y la dificultad aumenta. Si toda la interfaz del lienzo del juego está ocupada después de que caiga el bloque, el bloque ya no caerá y el juego fallará. Los requisitos funcionales específicos del juego son los siguientes:

    ▪ Requisitos de la interfaz del juego: una buena interfaz del juego hará que los ojos de los jugadores brillen y puedan sentir plenamente el entretenimiento y la relajación que ofrece el juego. El color de fondo predeterminado de este juego es verde oscuro. La pantalla de la interfaz principal del juego se puede personalizar con tu imagen favorita y se puede cambiar. El color predeterminado de los cuadrados de la interfaz principal es naranja, y el color predeterminado de los cuadrados de visualización previa es lavanda. El color de fondo y el color de primer plano contrastan fuertemente para hacer que los ojos del jugador sean más brillantes. Cuando el juego alcanza un nivel alto y la velocidad de caída de los bloques aumenta, los jugadores pueden distinguir claramente la forma de los bloques que caen, lo que aumenta el ambiente de el juego Irritante.

    ▪ Requisitos de forma del juego: utilice una matriz como estructura de datos para almacenar 52 estados del bloque, es decir, un total de 7 formas, incluida la barra larga de nivel primario, la forma de Z, la forma de Z inversa, la forma de campo y la forma de 7. , forma de 7 invertida y forma de T. Deformación de rotación en 4 direcciones, tres bloques en el nivel intermedio y 12 estados diferentes, y tres bloques en el nivel avanzado con 12 estados diferentes. Cada bloque puede girar en sentido antihorario, y si el bloque puede girar debe juzgarse según las condiciones. Si el bloque puede cruzar el límite después de la rotación, no puede girar y es necesario ajustar la posición para garantizar que pueda girar.

    ▪ Requisitos del evento de procesamiento del teclado: cuando el bloque cae, el jugador puede usar las teclas de dirección del teclado: la tecla arriba para rotar, la tecla abajo para acelerar la caída, la tecla izquierda para moverse hacia la izquierda, la tecla derecha para moverse hacia la derecha, y la barra espaciadora para realizar una caída con un solo clic. La tecla de la letra P implementa una pausa y la tecla de la letra C implementa una serie de operaciones como continuar.

    ▪ Requisitos del evento de procesamiento del mouse: con el mouse, puede hacer clic en el botón de menú y en el botón de ayuda en el panel de control, seleccionar elementos del menú en la barra de menú, iniciar el juego, seleccionar el nivel del juego, cambiar la visualización del color de los bloques en el juego y el fondo de la interfaz principal del juego Muestra el color y el color de primer plano, cambia la imagen de fondo del juego, bloquea la velocidad de caída, si se reproducen sonidos en el juego y una serie de funciones.

▪ Requisitos de visualización: Los requisitos de visualización de este programa de juego son que cuando los bloques caen y llenan una fila completa, la fila se eliminará y las filas restantes sin completar se moverán automáticamente hacia abajo una por una. Eliminar una fila aumentará la puntuación en la interfaz derecha en diez puntos. Cuando la puntuación aumenta a 100 puntos, el nivel aumenta en un nivel. Cuando el bloque cae y se superpone en todas las filas de la interfaz principal, el bloque ya no cae, el juego finaliza y la interfaz principal muestra la palabra "Game Over".

3.2.2 Requisitos no funcionales

Requisitos no funcionales: los requisitos no funcionales del sistema de juego Tetris incluyen la visualización del ícono en la esquina superior izquierda de la interfaz principal del juego, ajustar el tamaño de la ventana para maximizar y minimizar (pero sin incluir el tamaño de la interfaz principal), y la posición de la ventana emergente cuando el juego se está ejecutando. Un conjunto de requisitos no funcionales.

3.2.3  Control de interfaz

Bajo el sistema operativo Windows, este sistema de juego ruso opera principalmente a través del teclado.

Puede utilizar el mouse para realizar una serie de operaciones como iniciar, salir y configurar. En primer lugar, el juego usa teclas del teclado para operar, por lo que necesita usar eventos de interfaz de teclado. En segundo lugar, durante todo el proceso del juego, debes usar el mouse para controlar el juego, incluido el inicio, la selección de niveles, el cambio de configuraciones, el cambio de colores, la visualización de la información de la versión, la salida, etc., por lo que debes agregar una interfaz para monitorear eventos para clics y botones del mouse, escriba el código correspondiente para implementar las funciones correspondientes del mouse y el teclado.

Diseño del esquema del sistema

4.1  Diseño funcional del sistema

4.1.1  Proceso básico del procesamiento comercial manual

    Este juego está diseñado con el entretenimiento como intención original y el rompecabezas como propósito, se basa en un estudio exhaustivo de las funciones de los juegos clásicos de Tetris anteriores e introduce otras nuevas, agregando nuevas funciones para darle nueva vitalidad y vitalidad. El proceso básico del juego se explica en detalle a continuación.

   Instrucciones de operación:

   1>Ejecute el programa y haga clic en "Inicio" en el panel de control de la derecha o en el botón "Inicio" en el menú "Control" para iniciar el juego.

   2>Utilice las teclas arriba, abajo, izquierda, derecha y la barra espaciadora, las teclas P y C para controlar la deformación, caída, movimiento hacia la izquierda y hacia la derecha del bloque y la caída rápida, pausar y continuar con un clic.

   3> Elimina una fila completa de bloques, la puntuación aumentará automáticamente y el nivel aumentará automáticamente en un nivel.

   4>A medida que aumenta el nivel y aumenta la velocidad de caída de los bloques, presione los botones "Elemental", "Intermedio" y "Avanzado" en el panel de control derecho o en el menú "Juego" para cambiar manualmente la dificultad del juego. También puedes hacer clic en las opciones del menú "Color de bloque" para cambiar el color de los bloques, etc. También puedes cambiar algunos atributos del juego a través de las opciones del menú "Personalizar".

   5> Presione la tecla P en el teclado para pausar el juego y luego presione la tecla C para continuar el juego. Al presionar el botón "Finalizar juego" se detendrá completamente el juego en curso, y al presionar "Iniciar" o "Reiniciar" en el menú "Control" se iniciará un nuevo juego.

   6>Cuando los bloques ocupan toda la ventana y no pueden caer nuevos bloques, el juego mostrará un cuadro de diálogo "Game Over" para indicar que el juego finaliza.

El diagrama de flujo básico del juego se muestra en la Figura 4-1:

                        Figura 4-1 Diagrama de flujo básico del juego

4.1.2  Módulos de funciones del proceso básico

Este sistema diseña cada módulo funcional del juego en función de las distintas funciones del juego. La Figura 4-2 es un diagrama esquemático de los módulos de funciones del sistema de este juego. Como se muestra en la figura, este juego tiene principalmente dos módulos: el área de interfaz del juego y el área de control del juego. La interfaz del juego se divide en dos partes: mostrar las operaciones opcionales del jugador y mostrar los resultados de las operaciones del jugador. El control del juego se divide en algunos módulos funcionales como cambiar el color, comenzar, cambiar el nivel del juego a elemental, cambiar el nivel del juego a intermedio, cambiar el nivel del juego a avanzado, personalizar la velocidad de caída, cambiar el fondo, salir y otros.

Figura 4-2 Diagrama esquemático de los módulos de funciones del sistema

    La Figura 4-3 es un diagrama esquemático del diseño del módulo del área de la interfaz del juego. Como se muestra en la figura, el módulo del área de la interfaz del juego se puede subdividir en tres módulos funcionales: ingresar a la nueva interfaz del juego, procesar las operaciones del jugador y mostrar los resultados de las operaciones del jugador. .

Figura 4-3 Diagrama esquemático del módulo de interfaz

    La Figura 3-4 es un diagrama esquemático del diseño del área de control del juego. Como se muestra en la figura, el módulo del área de control del juego está dividido en módulos funcionales como inicio, configuración de operación personalizada, configuración inicial del nivel del juego, configuración inicial del color y salida. .

Figura 4-4 Diagrama esquemático del módulo del área de control

5Diseño detallado  e implementación del sistema

    Java es un lenguaje de programación puramente orientado a objetos y sus muchas ventajas no se discutirán en detalle aquí. Partiendo del concepto orientado a objetos, este programa se puede dividir principalmente en los siguientes módulos:

    ●Módulo de visualización de la interfaz principal del juego

    ●Módulo de visualización de bloques y datos.

    ●Módulo de control de movimiento de bloque

    ●Módulo de control de color de la interfaz del juego

    ●Módulo de control de niveles y progreso del juego.

    La habilidad de analizar un objeto radica en su escalabilidad funcional y eficiencia de mantenimiento. Imagínese, si la función del programa necesita ampliarse o mantenerse debido a cambios en el entorno externo o las necesidades del usuario, el código tendrá que cambiarse significativamente o incluso reescribirse, de esta manera se perderá la ventaja de la orientación a objetos. Por lo tanto, al analizar este programa, se utiliza un módulo altamente independiente como objeto para mejorar la escalabilidad y mantenibilidad del programa. El siguiente es el diseño de las clases del juego:

    Clase MyFrame: Heredada de la clase JFrame, como clase principal del juego, es responsable de controlar el cuerpo principal del juego y conectar y comandar el centro de cada clase.

    Clase PreView: Heredada de la clase JPanel, como clase de panel de operación, es responsable de colocar la ventana principal del juego, el marcador, los botones de control de nivel y otras ventanas para controlar el proceso del juego.

    Clase GameCanvas: heredada de la clase JPanel, la clase de hilo ChangeBlockColor cambia dinámicamente el color del cuadrado de la clase de lienzo. La clase de lienzo refleja el movimiento y la eliminación del cuadrado ChangeBlockColor al verificar el color del cuadrado.

    Clase de caja: Clase cuadrada, los elementos básicos que componen la caja, la expresión principal es el color.

    Clase de bloque: como clase para manipular bloques, controla el movimiento, caída y deformación de los bloques.

5.1  Módulo de visualización de la interfaz principal del juego

    Un excelente sistema de software no sólo se refleja en la diversidad y potencia de las funciones principales. Si el usuario se enfrenta a una interfaz aburrida y antigua, entonces el sistema de software no tendrá éxito. Por lo tanto, un buen y exquisito sistema de software no tendrá éxito. El diseño de la interfaz es un vínculo extremadamente importante. La importancia de diseñar y producir una interfaz con un diseño razonable y buenos efectos visuales para los jugadores es evidente.

La interfaz principal del juego se desarrolla utilizando componentes Swing, y los oyentes se registran en él para implementar varias funciones de control. Según el diseño del formulario del juego, se deben registrar al menos tres oyentes, a saber, el oyente de acción (ActionListener). y oyente de teclado: oyente (KeyListener), oyente de opciones (ItemListener).

    De acuerdo con el diseño preliminar, se puede determinar que los objetos del componente Swing que se utilizarán en el cliente incluyen objetos JFrame, objetos JPanel, objetos JLabel, objetos JButton, objetos JMenuBar, objetos JMenu, objetos JMenuItem, objetos JTextField, objetos JTextArea, JDialog. objetos, etc., al menos diez objetos componentes Swing. La Figura 5-1 a continuación es una captura de pantalla de la interfaz principal del juego.

Figura 5-1 Captura de pantalla de la interfaz principal del juego

La combinación de colores inicial del diseño de la interfaz principal de este juego se basa en el principio de contraste nítido. El color de fondo predeterminado es verde oscuro. El icono de Tetris se encuentra en la esquina superior izquierda. El valor inicial de la puntuación es 0, el El valor inicial del nivel es 1 y el valor inicial del registro de puntuación más alto es 0. El tamaño del formulario principal del juego está establecido en (520, 580), el panel de rango de movimiento del bloque está controlado por una matriz bidimensional con 20 filas y 12 columnas, y el ícono en la esquina superior izquierda está configurado en un patrón de bloque. para fines de identificación.

5.2  Módulo de visualización de lienzo y caja

En este juego, el lienzo está diseñado como una imagen personalizada. Puedes cambiar la imagen de fondo tú mismo según tus propias necesidades. Durante el proceso de caída de los bloques, los bloques que caen se identifican según los cambios de color.

5.2.1  Diseño del módulo de lienzo de fondo

El lienzo de fondo principal del juego es una matriz bidimensional con 20 filas y 12 columnas. La visualización de cuadrados se identifica mediante los cambios de color correspondientes. El formulario principal se llena de color para formar el estilo de fondo y los cuadrados. Este juego utiliza la clase GameCanvas heredada de JPanel para controlar la visualización del lienzo de fondo. Las filas representan el número de filas del lienzo y las cols representan el número de columnas del lienzo. El número de filas y columnas determinan el número de cuadrados. el lienzo tiene. El código de implementación principal del lienzo de fondo es el siguiente:

Primero, use un constructor de la clase canvas para representar el número de filas, columnas y borde principal de toda la interfaz principal.

Posición relativa en:

       /**

        * Constructor de clase de lienzo.

        * @param rows int, el número de filas en el lienzo

        * @param cols int, el número de columnas del lienzo

        * El número de filas y columnas determina el número de cuadrados que tiene el lienzo

        */

       GameCanvas público (int filas, int columnas) {

              this.rows = filas;

              this.cols = columnas;

              this.setOpaque(falso);

              cuadros = nuevo cuadro [filas] [columnas];

              for (int i = 0; i < cajas.longitud; i++) {

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

                            cajas [i] [j] = nueva caja (falso);

                     }

              }

              setBounds(0, 0, 300, 500);//Establecer coordenadas de posición relativa

              setBorder(nuevo EtchedBorder(

                      EtchedBorder.RAISED, Color.white, nuevo Color(148, 145, 140)));

       }

       /**

        * Obtener el número de filas de cuadrados en el lienzo.

        * @return int, el número de filas en la cuadrícula

        */

       público int getRows() {

              filas de retorno;

       }

       /**

        * Obtener el número de columnas en el lienzo.

        * @return int, el número de columnas de la cuadrícula

        */

       público int getCols() {

              columnas de retorno;

       }

    En segundo lugar, configure un constructor de la clase canvas para representar el color de primer plano y el color de fondo de toda la interfaz principal y obtenga sus colores de primer plano y de fondo:

       /**

        * Constructor de clase de lienzo.

        * @param filas es lo mismo que GameCanvas público (int filas, int cols)

        * @param cols es lo mismo que GameCanvas público (int filas, int cols)

        * @param backColor Color, color de fondo

        * @param frontColor Color, color de primer plano

        */

       GameCanvas público (int filas, int cols,

                         Color atrásColor, Color frenteColor) {

              esto (filas, columnas);

              this.backColor = backColor;

              this.frontColor = frenteColor;

       }

       /**

        * Establecer el color de fondo del juego

       * @param backColor Color, color de fondo

        */

       setBackgroundColor vacío público (Color de fondo) {

              this.backColor = backColor;

       }

       /**

        * Obtener el color de fondo del juego.

       * @return Color, color de fondo

        */

       Color público getBackgroundColor() {

              volver atrásColor;

       }

5.2.2  Vista previa del diseño del módulo de bloques

Los bloques y la información de datos son los módulos funcionales más básicos del juego. Box, una clase similar a una cuadrícula, es el elemento básico que compone un bloque. Utiliza su propio color para representar la apariencia del bloque. MyTask hereda la clase TimerTask para cronometrar el paradero y utiliza métodos de conteo para lograr cambios de velocidad. La clase MyListener hereda la clase KeyAdapter para implementar el monitoreo de botones y controlar la parte superior, inferior, izquierda y derecha del bloque. Defina una matriz cuadrada de 4x4 con un total de 16 celdas. Utilice "0" y "1" para indicar si cada cuadrado está pintado con un color nuevo o conserva el color de fondo.

Cada vez que se obtiene un nuevo bloque, se selecciona aleatoriamente una de las siete formas de bloques. El juego define una variable que representa el modelo del nuevo bloque. Por ejemplo, defina una matriz int STYLE para representar 28 tipos de bloques, con 7 filas y 4 columnas, y cada elemento representa uno de los bloques. Es decir, 0<=blockkindnum<=6, 0=<blockstatusnum<=3

Luego, cuando el bloque cae y necesita obtener un nuevo bloque, solo necesita obtener aleatoriamente un par de valores blockkindnum y blockstatusnum, y luego construir el bloque correspondiente según el valor de este ESTILO. La pregunta restante es cómo generar aleatoriamente un par de valores de fila y columna de ESTILO.

La clase Math en el paquete de lenguaje Java proporciona un método random() para generar números aleatorios. Llamar a este método generará un número de punto flotante de doble precisión entre 0-1. Entonces, cada vez que desee obtener un nuevo bloque, solo necesita llamar a este método una vez para obtener un número de coma flotante de doble precisión de 0 a 1, luego multiplicar el número por 7 y luego convertirlo en un número entero para obtener un número entero del 1 al 7. , utilizado para controlar filas. Multiplique este número por 4 y luego conviértalo en un número entero para obtener un número entero del 1 al 4, que se utiliza para controlar la columna.

A partir de esto, se pueden combinar múltiples definiciones de gráficos y se pueden implementar las siguientes funciones usando código:

1> Cada ejecución primero genera un valor inicial diferente para el número aleatorio.

                  int col = (int) (Math.random() * (gc.getCols() - 3));//Generar columnas en posiciones aleatorias

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

Figura 5-2 Diagrama de flujo de bloques generados aleatoriamente

    2> Seleccione aleatoriamente una figura, la Figura 5-2 genera aleatoriamente un diagrama de bloques para describir específicamente el CNC aleatorio generado

Los gráficos resultantes.

3>La información de posición del gráfico actual en su cuadrícula de 4*4.

    Dibuje una cuadrícula de previsualización de 4 filas y 4 columnas de bloques y genere aleatoriamente un estilo de bloque de previsualización. Este juego utiliza una matriz bidimensional para almacenar 28 estilos de bloques.

Vale la pena señalar que: sobre la base del juego tradicional Tetris, para reflejar el pensamiento innovador y en línea con el principio de aprendizaje, este sistema de juego agrega otros tres estilos de bloques en el nivel intermedio y tres niveles avanzados sobre la base de el juego tradicional otros estilos de bloques. Hay un total de 52 estilos de bloque. El código de implementación principal para el método de almacenamiento específico es el siguiente:

       /**

        * Corresponde a 52 estados de 13 modelos respectivamente

        */

       public final static int[][] STYLES = {// 28 estados en total

              {0xf000, 0x8888, 0xf000, 0x8888}, // Cuatro estados de barra larga

              {0x4e00, 0x4640, 0xe400, 0x4c40}, // Cuatro estados de tipo 'T'

              {0x4620, 0x6c00, 0x4620, 0x6c00}, // Cuatro estados de forma de 'Z' inversa

              {0x2640, 0xc600, 0x2640, 0xc600}, // Cuatro estados de tipo 'Z'

              {0x6220, 0x1700, 0x2230, 0x7400}, // Cuatro estados de tipo '7'

              {0x6440, 0xe200, 0x44c0, 0x8e00}, // Cuatro estados del tipo '7' inverso

              {0x6600, 0x6600, 0x6600, 0x6600}, // Cuatro estados del bloque

              {0x8c88,0xf200,0x44c4,0x4f00},//Se agregaron 3 bloques de estilo intermedios

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

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

              {0xac00,0xcc40,0x6e00,0x8cc0},//Se agregaron 3 bloques de estilo avanzados

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

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

       };

   Creo que mucha gente conoce los 7 estilos de bloques del juego tradicional Tetris, por lo que no tomaré capturas de pantalla para mostrar los estilos de bloques comunes uno por uno. A continuación se presentan tres modelos de bloques de dificultad intermedia y tres de dificultad avanzada añadidos al modo de juego tradicional:

    ●Se agregaron tres modelos de bloques de dificultad intermedia (se pueden obtener cuatro estados de rotación después de 90 grados, 180 grados, 270 grados y 360 grados)

Figura 5-10 Tres modelos de bloques de dificultad intermedia adicionales

    ●Se agregaron tres modelos de bloques de dificultad avanzada (se pueden obtener cuatro estados de rotación después de 90 grados, 180 grados, 270 grados y 360 grados)

Figura 5-11 Tres modelos de bloques de dificultad avanzada adicionales

5.2.3  Diseño del módulo de movimiento y rotación de bloques

Voltear y mover bloques es relativamente fácil de implementar: para mover un bloque, solo necesita cambiar la abscisa u ordenada del bloque y luego volver a dibujar el bloque. Para voltear el bloque, solo necesita cambiar el valor de la matriz de fondo y volver a dibujar el bloque.

Cuando los bloques de este juego caen, se realiza un dibujo dinámico y se implementa la interfaz Cloneable para indicar que el método Object.clone() puede copiar legalmente la instancia de esta clase por campos. La clase de operación de bloque BlockOperation hereda la clase Thread y anula el método run() para realizar la ubicación dinámica y correcta del bloque. Por supuesto, es necesario determinar si el bloque está en estado de movimiento o de pausa en el hilo.

ejecución pública vacía()

       {

              //el movimiento determina si el bloque cae dinámicamente

              mientras (moviéndose)

              {

                     intentar

                     {

                            //betweenleveltime indica la diferencia de tiempo entre niveles adyacentes

                            dormir (entre niveles y tiempo

                                    * (ControlMainGame.maxlevel - nivel + flatgene));

                     } captura (Excepción interrumpida, es decir)

                     {

                            es decir, printStackTrace();

                     }

                     // pausar determina si el juego está en pausa

                     si (!pausando)

                            moviéndose = (moverA(y + 1, x) && moviéndose);

                     // el movimiento está esperando 100 milisegundos y el movimiento no ha cambiado.

             }}

Por supuesto, en el juego, también necesitamos determinar el problema de límites del movimiento del bloque. Por ejemplo, un bloque tiene exactamente una cuadrícula de espacio a su izquierda antes de poder voltear, pero hay exactamente una cuadrícula de espacio a su derecha. En este caso, si el bloque no se puede voltear, Flip es inconveniente para los usuarios. Si se puede voltear, cruzará el límite y ocupará los bloques existentes. Si desea voltear el bloque sin salirse de los límites, debe mover el bloque un cuadrado hacia la derecha después de voltearlo y luego dibujar el bloque nuevamente. De esta manera, el bloque no desplazará a otros bloques fijos. Resuelve el problema de fuera de límites.

1> Juicio de cambio de bloque

El cruce de fronteras puede ocurrir en dos situaciones, una es cuando el bloque cae y queda fijo, y la segunda es cuando el espacio circundante no le permite voltearse.

En el primer caso, solo es necesario referirse al juicio de que el bloque no puede moverse después de caer.

Para el segundo caso, antes de voltear cada bloque, primero se debe calcular el espacio alrededor del bloque y voltear si el espacio lo permite. De lo contrario, no se puede voltear.

Debido a que los siete tipos de cuadrados son irregulares, el espacio de volteo requerido para cada tipo de cuadrado es diferente. Incluso en sus diferentes estados de volteo, el espacio de volteo requerido también es diferente. Lo primero que me viene a la mente es, naturalmente, proporcionar a cada cuadrado diferentes tipos de bloques y escribir una condición de juicio para cada estado del bloque, pero esto sería demasiado problemático.

Según la observación, no es difícil encontrar que entre las siete formas de bloques, si un bloque largo cae en forma de barra horizontal, se puede voltear mientras pueda caer. barra vertical, entonces estará en la posición después de voltear. La posición debe tener un espacio de cuadrícula de 4x1 antes de que se pueda voltear. Para el cuadrado en forma de Tian, ​​mientras pueda seguir cayendo, definitivamente podrá voltear, por lo que mientras el cuadrado en forma de Tian no caiga, siempre podrá voltear. Las otras cinco formas de bloques tienen una cosa en común, es decir, todos tienen dos estados invertidos que ocupan tres cuadrículas de espacio horizontalmente y dos espacios verticalmente. Los otros dos estados invertidos ocupan dos cuadrículas de espacio horizontalmente, ocupando tres espacios de cuadrícula. en la dirección vertical. Si caen en un estado de ocupar tres cuadrículas en la dirección horizontal, entonces, mientras puedan caer, podrán voltear. Si caen en el estado de dos cuadrículas en la dirección horizontal, entonces después de voltear, el entorno Debe haber un espacio de cuadrícula de 3x2.

Por lo tanto, la determinación del volteo de un bloque debe dividirse en tres situaciones: la primera situación es que el bloque no se puede voltear después de caer, la segunda situación es que el bloque largo que aparece en estado vertical se voltea, la tercera situación Además de las tiras largas y los cuadrados en forma de campo, los otros cinco cuadrados que aparecen en un estado de ocupar dos cuadrículas en la dirección horizontal se juzgan por voltearse.

Ahora que se ha resuelto el problema de en qué circunstancias se puede voltear el bloque, a continuación debemos resolver el problema de la posición del bloque después de voltear, porque solo conociendo de antemano la posición del bloque después de voltear ¿Podemos determinar el rango espacial de esa posición? Tome una determinación para ver si puede acomodar el bloque.

Lo que es seguro es que no importa cómo se voltee el bloque, todavía estará en la matriz de bloques, lo que significa que el bloque debe estar dentro de un determinado espacio de cuadrícula de 4x4 en el mapa del juego.

Las coordenadas de la matriz de bloques en la interfaz principal del juego están determinadas. Lo que no está claro es dónde estará el bloque en la matriz de bloques después de voltear. Para resolver este problema, podemos limitar el principio de almacenamiento del bloque en la interfaz principal del juego. matriz de bloques hacia la izquierda o hacia la izquierda. De esta manera, no importa cómo lo voltees, siempre habrá bloques en la primera fila y columna de la matriz de bloques. Esto también determina la posición del bloque en la matriz de bloques, y También puedes saber cómo aparecerá el bloque en el mapa del juego después de voltearlo.

Supongamos que las coordenadas horizontales y verticales de la matriz de bloques son xey, entonces esta posición es que la fila donde se voltea el bloque largo es la yésima fila del mapa del juego, y las columnas que ocupa son la xésima a x+3 columnas, las filas ocupadas por los cinco tipos de cuadrados distintos de la franja larga y la forma del campo después de voltear son las filas y-ésima e y+1 del mapa del juego, y las columnas que ocupan son las columnas x-ésima a x+2.

Por lo tanto, si hay celdas vacías en el espacio anterior, los bloques se pueden voltear.

2> Corrección de volteo fuera de límites

Un bloque se puede voltear siempre que haya suficiente espacio después de voltear, pero ¿qué pasa si el espacio después de voltear el bloque no es suficiente, pero hay suficiente espacio en el otro lado?

Cuando el bloque está en el límite, es posible que no solo se caiga del mapa después de voltear, sino que también la matriz puede salirse de los límites. Por supuesto, solo necesita definir la matriz del mapa más grande para evitar que la matriz esté fuera de los límites. errores Para el bloque fuera de límites, si está en el otro lado del mismo. Si hay suficiente espacio, entonces la unidad apropiada debe mover el bloque a la otra dirección para corregir el error de bloqueo fuera de límites. Como se muestra en el diagrama de flujo de inversión de bloques en la Figura 5-12, voltear un bloque requiere tres determinaciones: si ha caído al fondo, si hay suficiente espacio después de voltear y si ha cruzado el límite después de voltear.

Figura 5-12 Diagrama de flujo de procesamiento de inversión de bloques

El jugador opera el teclado para mover y rotar los bloques. El código introduce la clase ControlKeyListener y hereda la clase KeyAdapter para implementar la función de monitoreo del teclado. La clase KeyAdapter hereda de la clase Object e implementa la interfaz KeyListener, una clase de adaptador abstracta utilizada para recibir eventos de teclado. Los métodos de esta clase están vacíos. Esta clase existe para facilitar la creación de objetos de escucha. Amplíe esta clase para crear un detector KeyEvent y anule el método del evento requerido, que es la clase ControlKeyListener. Utilice ControlKeyListener para crear un objeto de escucha y luego registre el objeto de escucha con el componente utilizando el método addKeyListener del componente. Cuando se presiona, suelta o escribe una tecla, se llama al método correspondiente en el objeto de escucha y el KeyEvent se pasa al método apropiado. El código de implementación es el siguiente:

       La clase privada ControlKeyListener extiende KeyAdapter

       {

              tecla publicvoid presionada (KeyEvent ke)

              {

                     si (!juego.isPlaying())

                            devolver;

                     BlockOperation blockope = game.getCurBlock();

                     cambiar (ke.getKeyCode())

                     {

                            caso KeyEvent.VK_DOWN:

                                   blockope.moveDown();

                                   romper;

                            caso KeyEvent.VK_LEFT:

                                   blockope.moveLeft();

                                   romper;

                            caso KeyEvent.VK_RIGHT:

                                   blockope.moveRight();

                                   romper;

                            caso KeyEvent.VK_UP:

                                   blockope.turnNext();

                                   romper;

                            por defecto:

                                   romper;}}}

5.3Módulo del panel de control 

5.3.1  Diseño del módulo de la barra de menús

     Hay cuatro opciones de menú "Juego" y "Ayuda" en la barra de menú. La opción "Juego" se divide en siete opciones: "Inicio", "Principiante", "Intermedio", "Avanzado", "Personalizar", "Bloquear color" y "Salir". Hay una opción "Acerca de" en la opción "Ayuda", que se utiliza para mostrar información como la versión del juego.

    1>La función del botón "Inicio" es volver a dibujar el lienzo del juego, similar a la función de reinicio. El código de implementación de monitoreo de este botón es el siguiente:

       /**

        * Restablecer lienzo

        */

       reinicio de vacío público() {

              for (int i = 0; i < cajas.longitud; i++) {

                     para (int j = 0; j < cajas[i].longitud; j++)

                            cajas[i][j].setColor(false);

              }

              repintar();

       }

    2>Los botones "Elemental", "Intermedio" y "Avanzado" se utilizan para ajustar manualmente el nivel del juego, cambiando así el nivel de dificultad del juego. El botón "Salir" controla el juego para salir en cualquier momento y finalizar el juego.

3> Haga clic en el botón "Acerca de" en el botón "Ayuda" para mostrar información relacionada con el software del juego. La información específica se muestra en la figura:

                       Figura 4-19 Captura de pantalla de la opción "Acerca de"

5.3.2  Diseño de botones del panel de control

El panel de control del juego contiene campos como estadísticas de puntuación y estadísticas de nivel.

Los controles de TextField los proporcionan las estadísticas del propio juego y los jugadores no pueden editarlos de forma privada. Las reglas del juego de este juego son 10 puntos por cada línea eliminada, y cada 100 puntos adicionales aumenta en un nivel, la puntuación inicial es 0 y el nivel inicial es 1.

El siguiente es el código principal para implementar funciones como puntuación y actualización de nivel:

              /**

               * Determine si la línea está llena, si la línea está llena, llame al método de eliminación.

               */

              vacío privado esFullLine() {

                     // TODO Código auxiliar de método generado automáticamente

                     para (int i = 0; i < 20; i++) {

                            fila interna = 0;

                            bandera booleana = verdadero;

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

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

                                          bandera = falso;

                                          romper;

                                   }

                            }

                            si (bandera == verdadero) {

                                   fila = yo;

                                   gc.delete(fila);//Eliminar fila

                                   si(esMúsica==verdadero)

                                   {mp.playEraseSound();}

                                   addScor();//Añadir puntuación

                                   if(scor%100==0)//Establecer en 100 puntos para aumentar un nivel

                                   upspeed=true;//Aumentar el indicador de velocidad a verdadero

                                   si (velocidad ascendente == verdadero)

                                          nivel superior();

                            }

                     }

              }

              /**

               * Cómo se calculan las puntuaciones

               */

              addScor vacío privado() {

                     puntuación=puntuación+10;

                     jt9.setText("Puntuación: "+MyFrame.scor);

              }

       }

       reinicio de vacío privado() {

              puntuación=0;

              rango=0;

              jt10.setText("Nivel:"+rango);

              jt9.setText("Puntuación: "+puntuación);

              velocidad ascendente=falso;

              jugando=verdadero;

              parada de ejecución = falso;

              gc.setGameOver(falso);

              gc.repintar();

              gc.reset();

       }

Las funciones de los botones del panel de control han sido codificadas en 4.3.1 y no se describirán nuevamente aquí.

6 ejecuciones de prueba del sistema

6.1 Descripción general de la prueba

La prueba del sistema consiste en confirmar el software, el hardware de la computadora, el equipo periférico, la red y otros elementos juntos para las pruebas de ensamblaje y las pruebas de confirmación de varios sistemas de información. La prueba del sistema consiste en probar todo el sistema del producto con el propósito de verificar si el sistema cumple con los requisitos requeridos. especificaciones Definir e identificar inconsistencias o contradicciones con las especificaciones de requisitos para proponer una solución más integral. Después de que las pruebas del sistema revelen un problema, intente averiguar la causa y la ubicación del error y luego corríjalo. Es el requisito general del sistema basado en pruebas de caja negra y debe cubrir todos los componentes del sistema. Los objetos incluyen no sólo el software que se va a probar, sino también el hardware del que depende el software, los dispositivos periféricos e incluso algunos datos, algún software de soporte y sus interfaces.

La prueba del sistema es un software de prueba integrado que, como parte del sistema informático, se combina con otras partes del sistema para realizar una serie de pruebas estrictas y efectivas en el entorno operativo real del sistema informático para identificar problemas potenciales con el software y garantizar el funcionamiento normal del sistema.

El propósito de las pruebas del sistema es verificar si el sistema de software final cumple con los requisitos del usuario.

Los contenidos principales incluyen:

(1) Pruebas funcionales. Es decir, el funcionamiento del sistema de software de prueba es correcto según los requisitos del documento, como la " Especificación de requisitos del producto" . Dado que la corrección es el factor de calidad más importante del software, las pruebas funcionales son cruciales.

(2) Prueba de robustez. Es decir, la capacidad de probar el funcionamiento normal de un sistema de software en condiciones anormales. La robustez tiene dos significados: uno es tolerancia a fallos y el otro es resiliencia.

6.1.1  Principios de prueba

 Los principios básicos de las pruebas de software incluyen pruebas integrales desde la perspectiva de los usuarios del producto, descubrir tantos problemas y lagunas en el proceso de uso del sistema como sea posible, investigar y analizar, y proponer problemas y sugerencias de mejora sobre aspectos defectuosos del producto. El principio de prueba detallado es el siguiente:

(1) El plan de prueba de software es la guía de acción para las pruebas de software. La prueba real debe implementarse cuidadosa y estrictamente, y el plan de prueba debe implementarse estrictamente con alta factibilidad, especialmente para determinar el método de prueba y el propósito de la prueba.

(2) Los estándares de prueba se establecen en función de las necesidades del usuario. El objetivo principal de las pruebas de software es garantizar la coherencia del producto y verificar que el producto pueda satisfacer las necesidades del cliente. Por lo tanto, durante el proceso de prueba, siempre debe observar el problema desde la perspectiva del usuario. Perspectiva y descubrimiento El impacto de los defectos y deficiencias del software, los errores más graves en el sistema, los programas que no satisfacen las necesidades del usuario y los defectos funcionales.

(3) Las pruebas no pueden tratarse a la ligera.

Especialmente para las pruebas del sistema y las pruebas repetidas, si el plan de prueba no se implementa estrictamente, es muy probable que se generen nuevos ERRORES debido a negligencia. Por lo tanto, también se debe prestar total atención a la fase de prueba repetida: hay muchos errores en la detección temprana, la mayoría de los cuales no se descubren debido a negligencia.

Objetivo:

(1) Asegurar que las actividades de prueba del sistema se lleven a cabo normalmente;

(2) Verificar la falta de coincidencia o contradicción entre los productos de software y los requisitos del sistema;

(3) Establecer una base de datos completa de seguimiento de defectos de prueba del sistema;

(4) Garantizar que los grupos e individuos relevantes sean notificados de las actividades y resultados de las pruebas del sistema de software de manera oportuna.

6.1.2  Métodos de prueba

Para probar de manera integral el sistema y descubrir los problemas y fallas en el sistema, el uso de múltiples métodos de prueba para probar juntos puede resumir de manera más completa las ventajas y desventajas del diseño del sistema. Se utilizan los siguientes métodos de prueba:

Pruebas funcionales: pruebe si los puntos de función de cada módulo funcional del sistema se pueden utilizar normalmente;

Prueba manual: prueba principalmente entrada, clic y otras funciones;

Prueba de caja negra: después de ingresar, verifique si el resultado es correcto.

Pruebas de recuperación: como prueba del sistema, las pruebas de recuperación se centran principalmente en diversas condiciones que provocan que el software falle y verifican que el proceso de recuperación se pueda implementar normalmente. En algunos casos, el sistema debe ser tolerante a fallos. Además, los fallos del sistema deben corregirse dentro del plazo especificado, de lo contrario se producirán graves pérdidas económicas. Las pruebas de recuperación verifican principalmente la tolerancia a fallas del sistema. Cuando ocurre un error en el sistema, ¿se puede corregir el error y reiniciar el sistema dentro de un intervalo de tiempo específico? Las pruebas de recuperación primero deben utilizar varios métodos para forzar que el sistema falle y luego verificar si el sistema se puede restaurar lo antes posible. Para la recuperación automática, se debe verificar la exactitud de la reinicialización, los mecanismos de puntos de control, la recuperación de datos y el reinicio; para los sistemas de recuperación de intervención manual, se debe estimar el tiempo promedio de reparación y determinar si está dentro del rango aceptable.

Pruebas de seguridad: las pruebas de seguridad se utilizan para verificar el mecanismo de protección dentro del sistema para evitar intrusiones ilegales. En las pruebas de seguridad, los evaluadores desempeñan el papel de intentar invadir el sistema y utilizan varios métodos para intentar romper las líneas de defensa. Por lo tanto, el estándar para el diseño de seguridad del sistema es encontrar maneras de hacer que sea más costoso ingresar al sistema. Las pruebas de seguridad comprueban la capacidad del sistema para prevenir intrusiones ilegales. Durante la prueba de seguridad, los evaluadores se hicieron pasar por intrusos ilegales y utilizaron varios métodos para intentar romper las líneas de defensa. Por ejemplo, ① intente todos los medios para interceptar o descifrar contraseñas; ② personalice especialmente el software para destruir el mecanismo de protección del sistema; ③ haga que el sistema falle deliberadamente e intente ingresar ilegalmente mientras se está recuperando; ④ intente deducir la información requerida navegando por datos no confidenciales, etc. En teoría, con suficiente tiempo y recursos, ningún sistema es inaccesible. Por lo tanto, el principio del diseño de seguridad del sistema es hacer que el costo de una intrusión ilegal supere el valor de la información protegida. En este punto no hay ningún beneficio para los intrusos ilegales.

Pruebas de estrés: las pruebas de estrés se refieren a la implementación de un sistema que utiliza tráfico, frecuencia o volúmenes de datos anormales con recursos normales. Durante la prueba de presión se pueden realizar las siguientes pruebas:

① Si el número promedio de interrupciones es de una a dos por segundo, entonces el caso de prueba especial está diseñado para generar 10 interrupciones por segundo.

② Aumente la cantidad de datos de entrada en un orden de magnitud para determinar cómo responde la función de entrada.

③ En el sistema operativo virtual, se requieren casos de prueba que requieren la cantidad máxima de memoria u otros recursos, o se generan datos de almacenamiento en disco excesivos.

En circunstancias normales, el sistema debe probarse repetidamente. Debido a las limitaciones de tiempo y funciones del sistema, el sistema no puede ser perfecto. Por lo tanto, es necesario examinar juntos varios métodos de prueba.

prueba de fuerza

Las pruebas de fuerza verifican la resistencia de un programa a condiciones anormales. Las pruebas de estrés siempre obligan al sistema a ejecutarse con configuraciones de recursos anormales. Por ejemplo, ① Cuando la frecuencia normal de interrupciones es de una a dos por segundo, ejecute un caso de prueba que genere diez interrupciones por segundo; ② Aumente cuantitativamente la velocidad de entrada de datos para comprobar la capacidad de respuesta de la subfunción de entrada; ③ El máximo espacio de almacenamiento requerido para la operación (u otros recursos); ④ Ejecute casos de prueba que pueden causar que la memoria virtual del sistema operativo falle o que los datos del disco vibren violentamente, etc.

Pruebas de rendimiento

    Para aquellos sistemas integrados y en tiempo real, incluso si la parte del software cumple con los requisitos funcionales, es posible que no pueda cumplir con los requisitos de rendimiento. Aunque a partir de la prueba unitaria, cada paso de la prueba incluye pruebas de rendimiento. El evaluador principal cree que solo una vez que el sistema esté verdaderamente integrado, no podrá cumplir con los requisitos de rendimiento en el entorno real. Las pruebas de rendimiento del sistema están diseñadas para realizar esta tarea con el fin de probar el rendimiento operativo de manera integral y confiable. Las pruebas de rendimiento a veces se combinan con pruebas de resistencia y, a menudo, requieren el soporte de otro software y hardware.

6.1.3  Importancia y precauciones de la prueba

    Las pruebas de software son un vínculo extremadamente importante en el proceso de diseño de software y una garantía importante para garantizar la calidad del software. La calidad del método de prueba afectará directamente la calidad del software. Las pruebas de software pueden identificar errores y deficiencias y mejorarlos, obteniendo así un sistema eficiente y confiable.

    El software debe probarse y analizarse desde múltiples ángulos para poder encontrar errores. Es mejor encontrar personas que no tengan nada que ver con el sistema de diseño o analistas al realizar las pruebas. Porque al desarrollar software, los desarrolladores han formado su propia mentalidad y siempre están sujetos a esta mentalidad al realizar las pruebas. Es difícil encontrar errores y es fácil para personas y analistas que no tienen nada que ver con el diseño encontrarlos. ocurrió.

Debe ser paciente y cuidadoso durante el proceso de depuración del programa, un pequeño error hará que no se pueda realizar toda la función y se perderá mucho tiempo modificándola. Se debe prestar atención a los siguientes aspectos:

    1> Error gramatical

    Los errores de sintaxis son errores que se encuentran con frecuencia. Por ejemplo, un comando mal escrito o parámetros incorrectos pasados ​​a una función generarán un error. Los errores de sintaxis pueden impedirle continuar escribiendo código.

    2> Error lógico

    Los errores lógicos a menudo pueden estar latentes y ser difíciles de detectar. Cuando hay errores lógicos causados ​​por errores tipográficos o por el flujo lógico del programa, es posible que se ejecute correctamente, pero los resultados producidos sean incorrectos. Por ejemplo, cuando se usa un signo mayor que en lugar de comparar valores cuando se debe usar un signo menor que, se devolverán resultados incorrectos.

    3> Error de tiempo de ejecución

    Los errores en tiempo de ejecución son causados ​​por instrucciones que intentan realizar acciones imposibles durante la ejecución. Los errores en tiempo de ejecución deben corregirse para garantizar la confiabilidad del funcionamiento del software.

    Durante el proceso de desarrollo de este juego, se utilizaron una variedad de medidas efectivas para realizar pruebas para garantizar la calidad del software. El juego fue probado en cuanto a rotación de límites, volteo de bloques y pruebas transfronterizas, lo que garantizó en gran medida la calidad del software y las tasas de error. Sin embargo, es posible que todavía haya otros errores y defectos en el sistema, por lo que el juego debe pasar por pruebas repetidas para minimizar los errores tanto como sea posible.

6.2 Pruebas de códigos y algoritmos de juegos

    1> Al escribir el método get (), se requiere un valor de retorno, pero no hay una declaración de retorno en el programa, lo que provoca un error al compilar el programa. La solución es agregar una declaración de devolución al método y devolver el contenido correspondiente.

    2> Cuando se utiliza una función aleatoria para generar bloques, no se pasan parámetros a cada bloque y la compilación no puede pasar. La solución es pasar los parámetros correspondientes según la construcción de cada bloque.

    3> Al escribir la posición predeterminada de cada cuadrado del cuadrado en forma de T, inicialice la variable i que controla la posición del cuadrado a 0. El resultado de la operación es que el cuadrado en forma de T se convierte en un cuadrado vertical por defecto. La solución es cambiar el valor de inicialización de la variable i a 1 para lograr el efecto diseñado.

    4> Al ejecutar el programa, las puntuaciones estadísticas son solo las puntuaciones después de eliminar cada fila completa, y las puntuaciones anteriores se sobrescribirán y no habrá acumulación. La solución es cambiar el "score=" en el programa a "score+=", para que se puedan acumular los puntajes.

    5> Los errores en el proceso del algoritmo se centran principalmente en cómo detectar y eliminar bloques, cómo procesar la acumulación de puntuaciones después de superar el nivel y si se debe actualizar, estos aspectos finalmente se resolvieron después de discutir con compañeros y materiales de referencia.

6.3 Pruebas funcionales de las opciones del menú de la interfaz del juego

1> Prueba del menú “Juego”

Tabla 6.1 Caso de prueba del menú del juego

Número de caso de prueba

Nombre del proyecto de prueba

Pasos de ejecución de la prueba

producción

Resultados de la prueba

01

Prueba del botón "Iniciar"

Haga clic en "Juego" → "Iniciar"

reinicio del juego

éxito

02

Prueba del botón "Finalizar juego"

Haga clic en "Juego" → "Finalizar juego"

juego terminado

éxito

03

Prueba de botones "básicos"

Haga clic en "Juego" → "Básico"

El nivel de juego se selecciona como principiante.

éxito

04

Prueba del botón "intermedio"

Haga clic en "Juego" → "Intermedio"

El nivel de juego se selecciona como intermedio.

éxito

05

Prueba del botón "avanzado"

Haga clic en "Juego" → "Avanzado"

El nivel del juego se selecciona como Avanzado.

éxito

06

Prueba del botón "personalizado"

Prueba del botón "personalizado"

Aparece un cuadro de diálogo para cambiar la información personalizada.

éxito

07

Prueba del control deslizante "Velocidad de caída"

Haga clic en "Juego" → "Personalizar" → "Velocidad de caída"

Arrastre el control deslizante para cambiar la velocidad de caída del bloque.

éxito

08

Prueba del botón de opción "Forma de bloque"

Haga clic en el botón de opción "Juego" → "Personalizar" → "Forma de bloque"

Puede elegir la forma del bloque entre elemental, intermedia o avanzada para cambiar la forma del bloque.

éxito

09

Prueba del cuadro de selección "Si el cuadro subirá automáticamente"

Haga clic en "Juego" → "Personalizar" → cuadro de selección "Si el bloque aumentará automáticamente"

Puedes marcar los cuadrados pequeños. Si los marcas, los cuadrados subirán automáticamente. Si no los marcas, los cuadrados no subirán automáticamente.

éxito

10

Prueba del cuadro de selección "Si reproducir sonido durante el juego"

Haga clic en "Juego" → "Personalizar" → cuadro de selección "Si se reproducen sonidos durante el juego"

Puedes marcar la casilla pequeña. Si está marcada, el sonido se reproducirá durante el juego. Si no está marcada, el sonido no se reproducirá durante el juego.

éxito

11

Cuadro de selección "Cambiar fondo"

Haga clic en "Juego" → "Personalizar" → cuadro de selección "Si se reproducen sonidos durante el juego"

Puedes marcar el cuadrado pequeño. Si lo seleccionas, la imagen de fondo del juego cambiará. Si lo desmarcas, la imagen de fondo del juego no cambiará.

éxito

12

Prueba de los botones Aceptar y Cancelar

Haga clic en el botón "Juego" → "Personalizar" → "Aceptar" o "Cancelar".

Haga clic en Aceptar para guardar la configuración modificada y salir del cuadro de diálogo; haga clic en Cancelar para salir del cuadro de diálogo sin cambiar la configuración.

éxito

13

Prueba del botón "Bloquear color"

Haga clic en "Juego" → "Bloquear color"

Aparece un cuadro de diálogo y puede cambiar el color del bloque, HSB, RGB y otra información personalizada.

éxito

14

Prueba del botón "Salir"

 Haga clic en "Juego" → "Salir"

Sal del juego y cierra la ventana de la interfaz principal.

éxito

2> Prueba del menú "Ayuda"

Tabla 6.2 Caso de prueba del menú "Ayuda"

Número de caso de prueba

Nombre del proyecto de prueba

Pasos de ejecución de la prueba

producción

Resultados de la prueba

15

Prueba del botón "Acerca de"

Haga clic en "Ayuda" → "Acerca de"

Aparece un cuadro de diálogo que solicita la versión del juego y otra información.

éxito

6.4 Pruebas funcionales de eventos clave

Tabla 6.3 Casos de prueba de función de evento clave

Número de caso de prueba

Nombre del proyecto de prueba

Pasos de ejecución de la prueba

producción

Resultados de la prueba

dieciséis

Prueba de movimiento de bloque

Durante el juego, haz clic en "Izquierda, Derecha, Abajo".

Los bloques se mueven normalmente y no se saldrán de los límites.

éxito

17

Prueba de rotación de bloques

Durante el juego, haz clic en la tecla de dirección "arriba"

Los bloques se pueden revertir sin fronteras ni obstáculos.

éxito

6.5 Prueba de función de eliminación y apilamiento de bloques

Tabla 6.4 Casos de prueba de funciones de eliminación y apilamiento de bloques

Número de caso de prueba

Nombre del proyecto de prueba

Pasos de ejecución de la prueba

producción

Resultados de la prueba

18

Prueba de apilamiento de bloques

Cuando el bloque cae al fondo o entra en contacto con un obstáculo

Los bloques se apilan con éxito en la parte inferior.

éxito

19

Prueba de eliminación de bloques

Cuando ocurre una fila completa

Se eliminan todas las filas completas y los bloques bajan uno por uno.

éxito

20

juego terminado prueba

Cuando la pantalla está llena

Aparece una ventana de sesión que indica "Game Over"

éxito

6.6  Resultados de la prueba

Después de múltiples métodos de prueba para probar varios aspectos y funciones del sistema, los resultados de la prueba muestran que el sistema básicamente cumple con los requisitos generales de diseño y que las funciones esperadas se completan básicamente. Básicamente, el sistema puede cumplir con los requisitos al comienzo del diseño y desarrollo, y la prueba finaliza.Sin embargo, la función general no es lo suficientemente potente y la innovación es ligeramente inferior. Como la primera versión de desarrollo, el juego aún necesita mejoras adicionales en muchos aspectos, como las funciones y el diseño de la interfaz.

en conclusión

Antes de hacer mi proyecto de graduación, mi desarrollo relacionado con Java era solo al nivel de conocimiento teórico. Este proyecto de graduación me hizo comprender el principio de "lo que aprendes en papel es, en última instancia, superficial, pero debes practicarlo si lo sabes". " La falta de experiencia real en desarrollo de software es la conclusión que he llegado a mí mismo. A través de este proyecto de graduación, completé todas las tareas de desarrollo del juego Tetris. Encontré muchos problemas durante todo el proceso de desarrollo, como el dibujo y la deformación de bloques, problemas de creación de subprocesos, control de sincronización, juicio de fila completa, procesamiento de fila de eliminación e implementación de la función de registro de puntuación más alta, pero al final lo resolví. uno por uno. Algunos de los puntos más importantes se resumen a continuación:

Primero, para familiarizarme con las funciones relacionadas y el diseño de Tetris, a menudo descargo la versión independiente del juego Tetris de los principales sitios web de descarga de juegos, estudio la implementación de funciones y el diseño de la interfaz, pienso y consulto. los datos para el análisis y diseño gradual Después de repetidas modificaciones y argumentos, se completó el desarrollo de todo el juego.

En segundo lugar, en el proceso de diseño del juego, adopto el patrón de diseño de aproximado a fino y el principio de prueba de pequeño a grande. Primero diseñe el marco del juego y pruébelo capa por capa, luego agregue un código de implementación específico y gradualmente realice pruebas más detalladas. Durante el proceso de diseño, a menudo encuentro problemas. Después de pensar y probar repetidamente, descubriré mis errores y los corregiré, y luego pasaré al siguiente paso para asegurarme de que nada salga mal y haré todo lo posible para reducir la carga de trabajo de depuración final.

En tercer lugar, la industria del diseño de graduación puede considerarse como un proceso de aprendizaje constante de cosas nuevas. Desde no comprender el diseño al principio hasta completarlo con éxito al final, me doy cuenta de la importancia del aprendizaje continuo en la práctica, lo cual es importante para mí. conseguir el trabajo en el futuro importancia educativa. A través de la creación de mi proyecto de graduación, tengo una comprensión más profunda del curso de Java, que también sentó algunas bases para mi futuro empleo.

El proyecto de graduación es el último paso en nuestra etapa de aprendizaje como estudiantes. Es una aplicación integral de conocimientos básicos y conocimientos profesionales. Es un proceso integral de reaprendizaje y luego mejora. El proceso de la capacidad de aprendizaje de los estudiantes, su pensamiento independiente y su capacidad de trabajo. También es una formación y el nivel de diseño de graduación también refleja el nivel integral de la educación universitaria, por lo que la escuela concede gran importancia al diseño de graduación y fortalece la orientación del trabajo de diseño de graduación y la educación de movilización. En el proceso de estudio universitario, el proyecto de graduación es una parte importante de nuestra participación social en el trabajo práctico, también lo es para nuestra capacidad de aprender y resolver problemas de la vida, y es una transformación de la vida escolar y la vida social. Después de completar mi proyecto de graduación, intenté integrar el diseño de investigación y el trabajo práctico. Esto es más propicio para que fortalezcamos nuestras capacidades.

Después de un período de arduo trabajo y con la ayuda de algunos compañeros y profesores, finalmente completé mi proyecto de graduación, que es una tarea importante. Mirando retrospectivamente nuestro proceso de diseño, se puede decir que la dificultad y la facilidad coexisten. Entre ellos, incorporar los conocimientos aprendidos en la universidad es realmente un gran desafío para mí, y también es una prueba de conocimientos universitarios. 

En el proceso del proyecto de graduación nos encontramos con muchas dificultades, y muchas de ellas eran problemas que nunca antes habíamos encontrado. Si no lo hiciéramos nosotros mismos, podría ser difícil encontrar el conocimiento que nos falta hasta cierto punto. encontrar el problema, Para resolver el problema, esto es lo más práctico. Ante problemas que son difíciles de resolver por uno mismo, estos problemas se pueden resolver con la ayuda de profesores y estudiantes mientras se obtiene cierta información, para que el proyecto de graduación se complete con éxito. Se entiende que el conocimiento de este proyecto aún es muy profundo, por lo que debemos seguir explorando no solo ahora, sino también en el futuro.

La combinación de teoría y práctica incluye no sólo el conocimiento de la participación en el aula, sino también la combinación de entrenamiento de habilidades y orientación sobre cómo los estudiantes entienden y contactan cosas socialmente relevantes. Los proyectos de graduación de los estudiantes, bajo la guía de conocimientos teóricos profesionales, pueden resolver algunos problemas prácticos de diversas formas. Durante el proceso de diseño, los estudiantes pueden utilizar el conocimiento teórico para la práctica, no sólo para profundizar su comprensión del conocimiento teórico profesional, sino también para enriquecer y desarrollar el conocimiento teórico de este libro y convertirlo en experiencia y habilidades de nivel superior. Debido al modelo de enseñanza existente, existe una grave separación entre los conocimientos y habilidades teóricos y la práctica de producción. Los estudiantes no pueden aprender conocimientos fuera del aula. Los problemas de producción práctica a menudo son irrelevantes para el aprendizaje y no pueden aplicarse de manera efectiva. A través de una selección razonable de temas, se guía a los estudiantes para que utilicen conscientemente sistemas de conocimientos y habilidades para analizar y pensar, y contribuir a la integración orgánica del conocimiento teórico y la práctica.

La sociedad cambia constantemente. En la actualidad, la sociedad se está transformando y desarrollándose, y los requisitos de talentos son cada vez mayores. Utilice la perspectiva para mirar los problemas, aprender a innovar y aprender a adaptarse a los requisitos del desarrollo social. Fuera de la escuela, ingrese a la sociedad, aproveche las oportunidades de hoy y cree el futuro. La influencia y el conocimiento del profesor me permitieron comprender muchas verdades y afrontar los retos futuros con cierto espíritu innovador. 

    En resumen, para este proyecto de graduación, siento que no solo me he familiarizado más que antes con algunos conocimientos profesionales, sino que también he ejercido mi capacidad práctica y siento que he ganado mucho. Al mismo tiempo, también tendrás una pequeña sensación de logro porque has trabajado duro durante esta tarea. En el trabajo real del futuro, también debemos trabajar duro, no buscando lo mejor, ¡solo buscando lo mejor! Además, ¡me gustaría expresar mi más sincero agradecimiento a mis instructores y compañeros por su ayuda en el proceso de este proyecto de graduación!

El programa básicamente satisface las necesidades de los usuarios tanto técnica como funcionalmente. Sin embargo, debido al diseño inicial, las funciones no son lo suficientemente perfectas y los detalles de diseño aún son insuficientes.

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

参考文献

[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)。第一个人把球打乱后,其他人依照不同规则轮流将球射入落袋里。俄罗斯方块在这一基本框架中加入了电脑控制的成分——不光是玩家要整理方块,电脑还会不断从上方扔下额外的方块来制造凌乱。游戏看起来就是整一个漫无目的的过程,完全没有寓教于乐的成分在内,也没有深远的社交或是心理意义,但是我们却意外地为此着迷。

Existe un fenómeno psicológico típico llamado "Efecto Zaigarnik", que lleva el nombre del psicólogo ruso Bruma Zegarnik. En la década de 1830, Zeigarnik descubrió en un concurrido café que los camareros tenían recuerdos asombrosos, pero sólo hasta que les entregaban la comida. Pueden recordar lo que pidió una mesa de 12 personas, pero una vez servida la comida y las bebidas se olvidan de todo y no pueden recuperar sus recuerdos previamente sólidos. Zeigarnik nombró a este fenómeno de persistir en la memoria tareas inacabadas en su honor.

El efecto Zeigarnik es una de las razones por las que los programas de inteligencia son tan populares. Puede que no te importe en qué año se fundó la BBC o cuántos países en el mundo tienen al menos un McDonald's, pero una vez que surge una pregunta como esta, te sentirás incómodo si no sabes la respuesta (por cierto, la respuesta es 1927 y 61%). Las preguntas permanecen en tu mente hasta que son respondidas.

Principio del juego

El Tetris mantiene su control sobre nuestros nervios creando tareas constantemente. Cada eslabón del juego nos lleva a resolver un misterio, luego de alinear o completar una columna, los gráficos desaparecen, pero constantemente aparecen nuevos y el ciclo comienza nuevamente. Las cadenas de tareas parcialmente resueltas y recién formadas son muy convenientes para pasar el tiempo, y cada momento se llena con sentimientos repetidos de satisfacción y ansiedad.

Otra razón de la popularidad del Tetris es que las tareas a completar se yuxtaponen con posibles soluciones: cada uno de los bloques que surgieron gradualmente tiene su propia forma de colocación. Tetris es un mundo visual simple donde se pueden llegar rápidamente a soluciones manipulando cinco botones (izquierda, derecha, girar a la izquierda, girar a la derecha y aterrizar, por supuesto). Los estudios sobre jugadores de Tetris muestran que la gente generalmente prefiere rotar los bloques para ver si coinciden, en lugar de pensar en ello mientras observan caer los bloques. Por supuesto, ambos métodos son posibles, pero en el mundo del Tetris la acción siempre es lo primero, y esa es la clave del atractivo. A diferencia de la vida, Tetris conecta directamente lo que vemos y pensamos cuando nos enfrentamos a problemas, y podemos tomar medidas inmediatas sobre el problema.

El efecto Zeigarnik es una descripción de un fenómeno, pero no puede explicar su causa y efecto. Este es un truco común utilizado por los psicólogos. Parece que han resuelto los misterios de los seres humanos nombrándolos, de hecho, lo único que hicieron fue ponerles con avidez sus nombres y no resolvieron el problema en absoluto. Una explicación razonable para esta realidad es que los circuitos cerebrales se reorganizan en el proceso de alcanzar objetivos. Si se logra este objetivo, los pensamientos pasarán a otras cosas.

Los juegos de rompecabezas explotan el principio de logro psicológico para frustrarnos continuamente hasta que estemos satisfechos. Tetris va un paso más allá al crear una cadena continua entre el fracaso y el éxito. Como un parásito inteligente, el Tetris explota el placer psicológico de las personas al completar y reutilizar juegos. Mientras jugamos, nos deleitamos brevemente con la diversión de ordenar los bloques, aunque la parte racional y madura de nuestra personalidad comprende que se trata básicamente de un juego sin sentido. Pero ¿no es así con todos los juegos divertidos, verdad?

Referencias:

Proyecto de graduación del sistema de juego Tetris basado en Java (informe del proyecto + PPT de defensa + código fuente + base de datos + capturas de pantalla + video de implementación) icono-default.png?t=N5K3https://download.csdn.net/download/dwf1354046363/87813602

174 ejemplos de proyectos de graduación de Java, incluidos videos de implementación_Blog de Yi Xiaoxia-blog CSDN Varios proyectos de graduación de Java son seleccionados por usted mismo, y hay más de 160 conjuntos de proyectos de graduación de Java con videos explicativos y una colección https://cv2022.blog.csdn .net/article/details/124463185?spm=1001.2014.3001.5502

Supongo que te gusta

Origin blog.csdn.net/woaimx_1314/article/details/130789752
Recomendado
Clasificación