Design e implementação de sistema de jogo Tetris baseado em Java (relatório de projeto + PPT de defesa + código fonte + banco de dados + capturas de tela + vídeo de implantação)

Design e implementação de jogo Tetris baseado em Java

    Tetris é um jogo popular em todo o mundo e tem sido popular em computadores, telefones celulares e consoles de jogos portáteis desde o início até o presente. É um jogo clássico simples com regras de jogo simples, mas não falta diversão. É fácil de aprender e aplicável. O escopo é amplo e bem conhecido. As regras básicas simples do jogo Tetris são: 7 gráficos regulares diferentes compostos de pequenos quadrados caem da tela um após o outro. O jogador se move para formar uma barra horizontal completa quando ela cai e depois desaparece. O jogador marca pontos e o jogo o nível aumenta. O jogo termina quando os gráficos restantes se acumulam no topo da tela.

    Tetris foi originalmente um jogo casual desenvolvido pelo russo Alexei Pajitnov em 1984. Certa vez, ele criou um valor comercial incomparável e influenciou o desenvolvimento e a cadeia industrial de uma geração de jogos casuais. Com o contínuo desenvolvimento e mudanças da era da informação e da ciência e tecnologia, os computadores se popularizaram na vida de todos.Na agitada vida profissional, esse tipo de jogo casual traz um pouco de relaxamento às pessoas.

    Este artigo descreve e analisa detalhadamente as ideias básicas e algumas regras básicas do jogo da implementação clássica do Tetris tradicional. Com base nisso, desenvolve ainda mais o modelo inovador e criativo do Tetris e desenvolve um jogo de acompanhamento baseado no jogo clássico. Como a pontuação aumenta e o nível aumenta, a dificuldade aumenta.Módulos que podem controlar a mudança de cor dos blocos foram desenvolvidos de forma criativa, e módulos de som e música do jogo foram adicionados. Este artigo fornece um processo de implementação específico, uma descrição detalhada e algum código-fonte para as funções acima.

Este artigo explica a história do desenvolvimento e desenvolvimento do jogo Tetris, a importância do desenvolvimento deste jogo, o ambiente de desenvolvimento e o conhecimento relevante de desenvolvimento de software e programação Java com base na engenharia de software, bem como a análise de requisitos do programa, design de esboço, projeto detalhado e implementação e depuração Uma série de descrições são fornecidas para a operação.

    O design deste programa é baseado no sistema Microsoft Windows 7, usando Java como linguagem de desenvolvimento, e o design e implementação do jogo na plataforma de desenvolvimento Eclipse.

Palavras-chave: design de jogos; Tetris; engenharia de software; Java; Eclipse.

Índice

Design e implementação do jogo Tetris baseado em Java ........................ I

Resumo................................................. ..................... EU

Baseado no design e implementação do jogo Java Tetris .............. II

Abstrato ................................................. .................II

1. Introdução................................................ ....................1

1.1 Antecedentes e significado do desenvolvimento do programa.................................... ..... 1

1.2 Visão geral da tecnologia de desenvolvimento............................................. ............2

1.3 Situação atual da pesquisa do jogo Tetris.................................... 2

1.3.1 Situação atual da pesquisa no país e no exterior................................... .... 2

1.3.2 Revisão da literatura......................................... ........... 3

2Tecnologias relacionadas................................................... .............4

2.1 Introdução a JAVA............................................. .. ............ 4

2.2 Introdução aos componentes Swing............................................. ........ 4

2.3 Introdução à plataforma de desenvolvimento Eclipse..................................... .... ... 5

2.4 Ambiente da plataforma do sistema : ............................................. ..... ........ 6

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

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

3 Análise do sistema................................................. ......................... 7

3.1 Análise de viabilidade............................................. . ........... 7

3.1.1 Análise de viabilidade econômica................................. .... 8

3.1.2 Análise de viabilidade técnica.......................................... .... .... 8

3.1.3 Análise de viabilidade social.......................................... .... .... 8

3.2 Análise de requisitos................................................. . ............ 8

3.2.1 Requisitos funcionais........................................ ..... ..9

3.2.2 Requisitos não funcionais........................................ ... ... 9

3.2.3 Controle de interface............................................. .......9

4 Esquema do projeto do sistema.................................... ...... ...... 11

4.1 Projeto funcional do sistema......................................... .... ...... 11

4.1.1 Processo básico de processamento manual de negócios................................... 11

4.1.2 Módulos funcionais do processo básico................................... 12

5 Projeto detalhado e implementação do sistema........................................ .. ..... 15

5.1 Módulo de exibição da interface principal do jogo..................................... ... 15

5.2 Módulo de exibição de tela e caixa................................. ... 16

5.2.1 Design do módulo da tela de fundo......................................... ..... 16

5.2.2 Visualização do design do módulo de bloco......................................... ..... 19

5.2.3 Projeto do módulo de movimento e rotação do bloco.......................... 21

5.3 Módulo do Painel de Controle...................................... .. ........ 25

5.3.1 Design do módulo da barra de menus......................................... ..... .. 25

5.3.2 Design dos botões do painel de controle......................................... ..... 26

6 Operação de teste do sistema........................................ ...... ......29

6.1 Visão geral do teste................................................. ......... 29

6.1.1 Princípios de teste............................................. ......... 29

6.1.2 Método de teste............................................. ......30

6.1.3 Significância e precauções do teste........................ 31

6.2 Teste de códigos e algoritmos de jogos........................................ ... 31

6.3 Teste funcional de opções de menu na interface do jogo.......................... 32

6.4 Teste funcional de eventos-chave......................................... .... 34

6.5 Teste de função de empilhamento e eliminação de blocos.......................... 35

6.6 Resultados do teste................................................. ........... 35

para concluir................................................ ........... 36

referências................................................ . ................. 38

Agradecimentos.................................................. ....... ........................... 39

Apêndice A Texto original estrangeiro........................................ ..... ........40

A psicologia de Tetris................................................... 40

Apêndice B Tradução de Língua Estrangeira........................................ ..... ........43

Os efeitos psicológicos do Tetris........................................ ..... 43

1. Introdução

    A introdução descreve brevemente o histórico de desenvolvimento do programa, a importância do desenvolvimento, a tecnologia de desenvolvimento necessária e o status atual da pesquisa do jogo Tetris no país e no exterior.

1.1 Antecedentes e importância do desenvolvimento do programa

    O jogo Tetris é um jogo popular e duradouro em todo o mundo. É um jogo casual que pode ser jogado em uma série de produtos, como computadores, telefones celulares, consoles de jogos de TV, consoles de jogos portáteis, etc. é uma sensação incomparável e um valor comercial incontável para qualquer jogo.É um evento importante na história dos jogos e do desenvolvimento de software.

    Um dia, em junho de 1984, Alex Pajitnov, um matemático em Moscou, na Rússia, foi subitamente inspirado a projetar este jogo depois de jogar um quebra-cabeça no Centro de Computação Científica de Moscou, onde trabalhava. um computador), e mais tarde foi portado para o PC via Vadim Gerasimov, e foi amplamente difundido na comunidade de informática de Moscou. Tetris começou a se tornar popular e se tornou O jogo casual clássico mais vendido da história, ainda mantém seu charme como sempre. As regras básicas simples do jogo Tetris estão em um campo de jogo virtual padrão para colocar pequenos quadrados. A unidade básica é um pequeno quadrado; é composto por quatro pequenos quadrados e 7 gráficos regulares diferentes (formato de campo, forma Z, forma Z reversa, Barra longa em forma de 7, em forma de 7 invertida, em forma de T) Existem 28 esquemas gráficos no total para girar o bloco em 90 graus, 180 graus, 270 graus, 360 graus através da operação do jogador na tecla superior, esquerda e teclas direita e tecla para baixo. Para ajustar a posição acelerando a queda, os blocos são formados em um ou mais blocos completos na parte inferior da tela e, em seguida, eliminados para dar espaço aos novos blocos que caem. Cada vez que um bloco completo a barra horizontal é eliminada, o nível do jogador aumenta em um nível. Quando o nível atinge um determinado nível Com o passar do tempo, a velocidade de queda acelera. Quando os blocos que não foram eliminados chegam ao topo da tela, o jogo termina.

    Com a contínua atualização e desenvolvimento da tecnologia informática, os jogos Tetris estão constantemente introduzindo vários modos, e há muitas versões diferentes para todos jogarem, porque o jogo em si pode ser simples ou complexo e pode treinar bem os jogadores. Sua capacidade de reação mental e a capacidade de raciocínio lógico também pode trazer diversão sem fim aos jogadores, por isso é profundamente amada pela maioria dos jogadores. Quando se trata de desenvolver software de jogos, a maioria das pessoas sente que isso está fora de alcance e mágico. Com a inovação contínua de métodos e ferramentas de desenvolvimento, não está fora de alcance desenvolver alguns pequenos jogos sozinho. O jogo Tetris tem um status incomparável na história dos jogos. A interface do jogo é simples e o código não é muito complicado. Existem também muitos algoritmos e designs para a implementação do jogo Tetris na Internet, e a dificuldade não é particularmente alto.

    Tetris é um jogo simples e de quebra-cabeça. Com sua interface única e concisa e modo de jogo extremamente divertido, muitos entusiastas do jogo estão profundamente envolvidos nele e não conseguem se desvencilhar. É adequado para todas as idades. Na vida acelerada de hoje, a pressão do estudo e do trabalho sobre os estudantes e grupos de trabalho também aumenta. As tarefas de todos tornam-se cada vez mais pesadas e há cada vez menos tempo livre para descanso, o que faz com que as pessoas necessitem cada vez mais de algo simples. jogo casual que economiza tempo para que todos possam desfrutar. Não há dúvida de que Tetris é um quebra-cabeça simples e um jogo casual interessante, podendo ser transplantado para uma série de dispositivos portáteis, como computadores, telefones celulares, tablets, consoles de jogos de TV, consoles de jogos portáteis, dicionários eletrônicos, MP4 e outros dispositivos portáteis. dispositivos. Este projeto de pesquisa é muito valioso tanto em termos de desenvolvimento técnico quanto de significado social. É uma tentativa ousada minha de desenvolver jogos.

1.2 Visão Geral da Tecnologia de Desenvolvimento

Engenharia de software é uma disciplina que estuda o uso de métodos de engenharia para construir e manter software eficaz, prático e de alta qualidade; o design inclui linguagens de programação, bancos de dados, algoritmos, ferramentas de desenvolvimento de software, plataformas de sistema, padrões de projeto e muitos outros aspectos; em In Na sociedade moderna, o software é utilizado em muitos aspectos típicos, como e-mail, sistemas embarcados, interfaces de interação humano-computador, suítes de escritório, sistemas operacionais, editores, bancos de dados, jogos, etc.; ao mesmo tempo, em vários setores da sociedade atual. são aplicações de software de computador, incluindo indústria, agricultura, bancos, aviação, departamentos governamentais, etc., que podem efetivamente promover o desenvolvimento econômico e social e melhorar a eficiência do trabalho e da vida das pessoas.

O código de desenvolvimento do jogo Tetris não é particularmente complexo.Este artigo é baseado na linguagem de programação Java e usa componentes Swing comumente usados ​​na linguagem Java. Swing é um kit de ferramentas de interface gráfica do usuário (GUI) em Java. Ele faz parte da classe básica Java. Inclui caixas de texto, painéis separados, botões, tabelas e outros dispositivos GUI. Ele é escrito em Java puro. Os desenvolvedores podem usar um pequeno quantidade de código para as várias funções flexíveis e ricas do Swing e componentes modulares podem ser escritos para criar interfaces de usuário bonitas e elegantes. O componente Java Swing inclui as seguintes classes comumente usadas: JFrame é um objeto gráfico na tela, que pode realizar operações básicas como maximizar, minimizar e fechar. É a ideia básica da programação Java GUI; JPanel pode ser usado para aninhamento. Componentes com as mesmas funções lógicas no formulário podem ser combinados e adicionados ao formulário JFrame. É uma classe contêiner de painel no Swing. O objeto JLabel é usado para exibir texto, imagens ou ambos e pode definir algumas de suas propriedades; JTextField é um componente em execução usado para editar uma única linha de texto; JButton é uma classe usada para criar botões. Além disso, o componente Swing em Java também contém muitas classes funcionais, que podem facilmente criar algumas interfaces gráficas bonitas.

1.3 Status da pesquisa do jogo Tetris

1.3.1 Situação da pesquisa no país e no exterior

Desde o início do século 21, os computadores continuaram a se desenvolver e a indústria de esportes eletrônicos também continuou a entrar em um estágio ascendente. O desenvolvimento de software de jogos tornou-se cada vez mais popular. O software de jogos, como dramas e filmes, é um novo tipo de tecnologia que está se tornando cada vez mais popular.Produto de arte abrangente. Diferente do desenvolvimento web geral e do desenvolvimento de software, o desenvolvimento de software de jogos de computador não requer apenas que designers e desenvolvedores dominem habilidades profissionais de programação e métodos de engenharia de software, mas também requer conhecimento profissional na área de jogos e conhecimento profissional de desenvolvimento de jogos para ser eficaz. . Desenvolva e implemente a interface vívida do jogo, processamento de efeitos sonoros e obtenha interação perfeita com os jogadores, etc.

O jogo "Tetris" originalmente desenvolvido pelo ex-cientista soviético Alex Pajitnov era um software educacional e depois começou a ser licenciado para diversas empresas de jogos. Desde então, está disponível em todas as principais plataformas. Várias versões do jogo apareceram.

A versão Game Boy de Tetris vendeu 4,24 milhões de unidades no Japão, tornando-o o jogo mais popular da história dos jogos Game Boy. Durante a Guerra do Golfo, o jogo Tetris tornou-se um dos jogos de matar o tempo mais adequados para as tropas americanas na linha de frente.

Os princípios básicos do Tetris são relativamente simples para a maioria dos programadores, e o Tetris é matemático, dinâmico e bem conhecido. Também é frequentemente usado como matéria prática para programação de jogos.

1.3.2 Revisão da literatura

Os documentos [1] e [2] visam uma explicação baseada em zero, usando exemplos para orientar os leitores a aprender em profundidade, usando o modo de explicação de conhecimento básico → tecnologia central → aplicação avançada → prática real do projeto para explicar várias tecnologias e práticas Java em termos simples e fáceis de entender. Na perspectiva de iniciantes, por meio de linguagem fácil de entender e exemplos coloridos, apresenta detalhadamente todos os aspectos da tecnologia que devem ser dominados no desenvolvimento de programas em linguagem Java. Incluindo: familiaridade com ferramentas de desenvolvimento Eclipse, noções básicas da linguagem Java, classes e objetos, classes de empacotamento, classes de processamento de números, interfaces, herança e polimorfismo, recursos avançados de classes, tratamento de exceções, programação Swing, classes de coleção, entrada e saída de E/S, Reflexão, tipos enumerados e genéricos, multithreading, comunicação de rede, operações de banco de dados, componentes de tabela Swing, componentes de árvore Swing, outros componentes Swing avançados, gerenciadores de layout avançados, manipulação avançada de eventos, desenho AWT e reprodução de áudio, etc. Esses dois documentos cobrem linguagem e tecnologia Java "suficientes", com exemplos ricos e conteúdo detalhado. Para iniciantes e estudantes com uma certa base em Java, eles podem melhorar rapidamente a tecnologia e as habilidades de desenvolvimento dos alunos. Na concepção deste projeto, os conteúdos relacionados ao design de interface gráfica, componentes e design de interface de usuário, processamento de eventos e componentes de construção de janelas, bem como os conhecimentos básicos de Swing e sua série de componentes foram todos referidos a estes dois documentos, que me deu muita inspiração. ajuda.

O documento [3] explica principalmente desenho 2D; produção de animação de jogos; base de programa de rede; interface de jogo aprimorada; inteligência artificial e jogos 2.5D; caça-minas, labirinto, Tetris e outros exemplos de jogos; colisão, sistema de partículas, coordenadas tridimensionais 5D e outros algoritmos de desenho, produção de jogos online multiplayer. Uma série de fórmulas de algoritmos são coletadas para que os leitores possam usá-las de forma mais conveniente. Numa abordagem passo a passo, o processo de design do jogo é analisado gradualmente, levando os leitores a resolver problemas que podem ser encontrados na fase de desenvolvimento do jogo e resumindo a experiência prática na produção de jogos Java. Os princípios de jogos, implementação de animação, processamento de efeitos sonoros, processamento de eventos de mouse e teclado, inteligência artificial e outros conhecimentos na concepção deste curso referem-se todos a este documento.

A literatura [4] discute o princípio do programa e a tecnologia de implementação do clássico jogo de computador Tetris e descreve os requisitos funcionais do programa, estrutura de dados, rotação de gráficos, transformação de coordenadas e outras tecnologias-chave do ponto de vista da engenharia de software. Através deste documento, aprendi mais sobre a área profissional de desenvolvimento de jogos Tetris.

Documento [5] é um livro avançado que se concentra mais em explicar como usar Java para pensar e resolver problemas. Este documento me ajudou muito com ideias e técnicas de programação Java durante a concepção do curso.

2Tecnologias relacionadas

2.1 Introdução a JAVA

    Java é o nome geral da linguagem de programação orientada a objetos Java e da plataforma Java lançada pela Sun Microsystems. É uma linguagem de programação orientada a objetos que pode escrever software aplicativo de plataforma cruzada . A tecnologia Java tem boa versatilidade, eficiência, plataforma cruzada e segurança. É amplamente utilizada em PCs, data centers, consoles de jogos, supercomputadores científicos, telefones celulares e na Internet. Também possui a maior comunidade profissional de desenvolvedores do mundo.

Nos últimos vinte anos, a linguagem Java tornou-se uma das linguagens de programação mais influentes na história dos computadores humanos. Até certo ponto, excedeu até mesmo o escopo de uma linguagem de programação e se tornou uma plataforma de desenvolvimento e um plataforma de desenvolvimento.Modo canônico. Ainda mais: Java se tornou uma espécie de crença. O código aberto, a liberdade e outros espíritos defendidos pela linguagem Java atraíram inúmeros programadores de destaque em todo o mundo. Na verdade, desde a história registrada da humanidade, nunca houve uma linguagem de programação que pudesse atrair tantos programadores excepcionais, e nenhuma linguagem de programação pode derivar tantas estruturas de código aberto.

A linguagem Java é uma linguagem de programação orientada a objetos muito pura. Ela atrai as diversas vantagens da linguagem C e da linguagem C++ e abandona conceitos difíceis de entender, como herança múltipla e ponteiros na linguagem C++. Portanto, o A linguagem Java é poderosa e a simplicidade e a facilidade de uso são dois recursos muito bons. Como representante das linguagens de programação estáticas orientadas a objetos, a linguagem Java incorpora excelentemente a teoria orientada a objetos e permite que os programadores conduzam o desenvolvimento de programação mais complexa de uma forma mais elegante de pensar.

Além disso, as especificações Java EE relevantes na linguagem Java contêm os conceitos de engenharia de software mais populares da atualidade, e várias ideias de design avançadas podem ser implementadas nas especificações, plataformas e estruturas relacionadas do Java EE. Até certo ponto, aprender a ser proficiente em vários aspectos do conhecimento relacionado à linguagem Java equivale a aprender sistematicamente conhecimentos relevantes de desenvolvimento de software, em vez de apenas aprender uma linguagem de programação.

Hoje, a maioria dos sistemas bancários, de telecomunicações, de valores mobiliários, de comércio eletrônico, de governo eletrônico e outros foram construídos usando a plataforma Java EE ou estão gradualmente fazendo a transição para a plataforma Java EE. A especificação Java EE é atualmente a mais madura. é também a especificação de desenvolvimento de aplicativos de nível empresarial mais amplamente utilizada.

2.2Introdução aos componentes Swing

    Swing API é um conjunto extensível de componentes GUI para a criação de aplicativos front-end/GUI baseados em JAVA. Ele é construído sobre a API AWT e serve como um substituto para a API AWT porque quase todos os controles nele correspondem a um controle AWT. Os componentes Swing seguem a arquitetura model-view-controller para atender às diretrizes a seguir. Uma única API é suficiente para suportar múltiplas aparências e estilos; a API é simulada, de modo que a API de nível mais alto não precisa ter dados; a API usa o padrão Java Bean, para que Builder Tools e IDEs possam fornecer melhores serviços para desenvolvedores usá-lo.

    A arquitetura Swing API segue uma arquitetura MVC de base flexível da seguinte maneira. O modelo representa os dados do componente. Uma visualização representa uma representação visual dos dados de um componente. O controlador aceita a entrada do usuário na visualização e reflete as alterações nos dados do componente. Os componentes Swing tratam o modelo como um elemento separado e combinam as partes da visualização e do controlador em elementos da interface do usuário. Usando essa abordagem, o Swing tem uma arquitetura de aparência conectável. As principais características do Swing são:

    Leve - os componentes Swing são independentes da API nativa do sistema operacional, porque os controles da API Swing geralmente são renderizados usando código JAVA puro em vez de usar chamadas de sistema operacional subjacentes.

    Controles avançados - o Swing fornece um conjunto avançado de controles avançados, como árvores, formulários de guias, controles deslizantes, seletores de cores e controles de tabela.

    Personalização Avançada - Os controles Swing podem ser personalizados de forma muito simples porque a aparência visual é independente da representação interna.

    Aparência conectável - A aparência de um aplicativo GUI baseado em Swing pode ser alterada em tempo de execução com base em valores válidos.

2.3 Introdução à plataforma de desenvolvimento Eclipse

Eclipse é uma plataforma de desenvolvimento extensível baseada em Java de código aberto que se concentra em fornecer uma plataforma industrial completa e de qualidade comercial para desenvolvimento de ferramentas altamente integradas. Eclipse é apenas uma estrutura e um conjunto de serviços para construir ambientes de desenvolvimento através de componentes plug-in. O Eclipse vem com um conjunto padrão de plug-ins, incluindo Java Development Tools (JDT).
  O Eclipse começou em abril de 1999. Foi originalmente desenvolvido pela IBM como um ambiente de desenvolvimento IDE de próxima geração para substituir o software comercial Visual Age for Java. A IBM forneceu a base de código inicial do Eclipse, incluindo Platform, JDT e PDE, em novembro de 2001. Contribuiu para a comunidade de código aberto, atualmente liderada pela IBM, o projeto Eclipse se desenvolveu em uma enorme aliança Eclipse, com mais de 150 empresas de software participando do projeto Eclipse, incluindo Borland, Rational Software, Red Hat e Sybase, etc., e é agora liderado pela Governed by the Eclipse Foundation, uma aliança sem fins lucrativos de fornecedores de software. Em 2003, o Eclipse 3.0 selecionou a especificação da plataforma de serviço OSGi como arquitetura de tempo de execução. Em junho de 2007, a versão estável 3.3 foi lançada. A versão 3.4, codinome Ganimedes, foi lançada em junho de 2008.
  Eclipse é um conhecido ambiente de desenvolvimento integrado (IDE) gratuito de plataforma cruzada, originalmente usado principalmente para desenvolvimento de linguagem Java, mas atualmente algumas pessoas usam plug-ins para usá-lo como uma ferramenta de desenvolvimento para outras linguagens de computador, como C++ e Python. O Eclipse era originalmente apenas uma plataforma framework, fornecendo um ambiente de desenvolvimento de plug-ins (Plug-in Development Environment, PDE).Este componente é voltado principalmente para desenvolvedores de software que desejam estender o Eclipse, permitindo a construção de ferramentas perfeitamente integradas com o Ambiente Eclipse. O suporte de muitos plug-ins faz com que o Eclipse tenha uma flexibilidade que é difícil de ter em outros softwares IDE com funções relativamente fixas. Como tudo no Eclipse é um plug-in, fornecer plug-ins para o Eclipse fornece aos usuários um ambiente de desenvolvimento integrado consistente e unificado, para que todos os desenvolvedores de ferramentas tenham um lugar igual para jogar.

Vantagens do Eclipse:

Atualmente, milhões de pessoas em todo o mundo estão usando o Eclipse para desenvolvimento. Por que Eclipse tem tantos fãs? Isso tem muito a ver com o Eclipse integrar muitos recursos em um.

    Eclipse é um software de código aberto. Isso significa que o uso do Eclipse não é apenas gratuito, você também pode aprender as técnicas de programação dos principais desenvolvedores do mundo estudando o código-fonte e pode compartilhar bibliotecas públicas de código-fonte aberto contribuídas por desenvolvedores de todo o mundo.

    O Eclipse é verdadeiramente extensível e configurável. O Eclipse usa um mecanismo de plug-in, que é como um vaso. Você pode adicionar flores ao vaso a qualquer momento e também pode retirar facilmente flores que não são mais necessárias. Atualmente, plug-ins gratuitos e pagos estão florescendo em toda a Internet, e o trabalho de desenvolvimento de plug-ins também está em pleno andamento no país e no exterior.

Eclipse oferece suporte a muitas linguagens de desenvolvimento, não apenas Java. O Eclipse fornece apenas aos desenvolvedores um núcleo mínimo que pode estender as funções do sistema. A arquitetura do plug-in baseada em pontos de extensão possibilita que o Eclipse suporte vários idiomas. Contanto que o plug-in para a linguagem correspondente esteja instalado, o Eclipse poderá suportar o desenvolvimento dessa linguagem. Atualmente, o Eclipse pode suportar C/C++, COBOL, PHP, Perl, Python e outras linguagens. (Embora o Eclipse seja principalmente um ambiente de desenvolvimento Java, sua arquitetura garante suporte para outras linguagens de programação).

   Eclipse fornece suporte para vários recursos de plataforma. Os desenvolvedores podem usar a plataforma com a qual se sentem mais confortáveis ​​e familiarizados, como Windows, Linux, MacOS, etc. O Eclipse possui seu próprio kit de ferramentas gráficas separado para cada plataforma, o que dá aos aplicativos uma aparência de sistema operacional quase nativa e melhor desempenho.

 Baseado na especificação OSGi líder do setor. A especificação OSGi foi lançada pela primeira vez pela Sun Microsystems, IBM, Ericsson, etc. em 1999. Suas plataformas de serviço incluem: gateways de serviço, automóveis, telefones celulares, automação industrial, automação predial, computação em grade de PDA, entretenimento (como iPronto) e IDE , etc. Os sistemas baseados em OSGi são executados na forma de microkernels, para que possam facilmente realizar sistemas de troca dinâmica e de comportamento dinâmico, estáveis ​​e eficientes com os quais a indústria de software sonha. A partir da versão 3.1, o Eclipse abandonou resolutamente sua estrutura original reconhecida pela indústria e adotou OSGi como sua arquitetura. A partir do Eclipse3.2, o Eclipse fornece suporte para desenvolvimento baseado em OSGi e os desenvolvedores podem usá-lo para desenvolver sistemas baseados em OSGi.

   A bela interface homem-máquina do Eclipse foi amplamente elogiada. O Eclipse fornece uma nova API SWT/JFace (em vez de AWT/Swing), que muda o estilo de interface monótono e enfadonho do SWT/Swing, tornando possível desenvolver aplicativos locais com interfaces gráficas ricas, como uma brisa de primavera soprando. O campo de desenvolvimento de desktop Java proporciona às pessoas uma sensação revigorante.

   O Eclipse é lançado por líderes do setor e tem forte poder no setor. A Fundação Eclipse absorveu um grande número de instituições de pesquisa acadêmica e organizações comerciais para liderar o planejamento e desenvolvimento de longo prazo do Eclipse e garantir que o Eclipse esteja na posição de liderança no setor de ferramentas de software.

2.4 Ambiente da plataforma do sistema :

2.4.1 Plataforma de hardware:

   O hardware do computador desenvolvido por este programa é o seguinte:

Memória: 4G

Disco rígido: 500G

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

Ferramentas interativas: teclado, mouse

Visor: display LCD

2.4.2 Plataforma de software:

O ambiente de desenvolvimento deste sistema é o seguinte   

Sistema Operacional: Microsoft Windows 7 Ultimate

Versão JDK: jdk-8u121-windows-x64

Versão do Eclipse: versão Neon.2 (4.6.2), eclipse-inst-win64

Análise do sistema

A análise do sistema é a primeira etapa que damos no processo de desenvolvimento de software, incluindo análise de requisitos do sistema e análise de viabilidade. A análise de requisitos do sistema é usada principalmente para explicar o que é o sistema e para que deve ser usado, e para chegar a um consenso entre desenvolvedores e usuários importantes sobre esta questão. A análise de viabilidade do sistema consiste principalmente em analisar a implementação de todos os recursos do sistema para explicar a racionalidade, viabilidade e inevitabilidade do desenvolvimento e investimento do sistema, e para racionalizar problemas imprevistos que possam surgir. O elo mais desafiador no desenvolvimento de software é a análise de demanda do sistema. O tempo gasto na análise de demanda é, sem dúvida, muito valioso. Se mudanças de demanda ocorrerem com frequência, isso trará problemas para as tarefas de desenvolvimento de software concluídas dentro do planejado. Efeitos adversos muito graves. Fazer um bom trabalho de análise de requisitos de sistema e análise de viabilidade ajudará a melhorar a conveniência do processo de desenvolvimento de software, permitirá o monitoramento e gerenciamento em tempo real do processo de desenvolvimento de software e tornará mais fácil prosseguir conforme planejado, atingindo assim o objetivo de melhorar a qualidade do software.Forneça comunicação e cooperação mais portáteis para desenvolvedores de programas, usuários, etc. Como base original para os resultados do trabalho, a análise de demanda do sistema e a análise de viabilidade também podem expressar indiretamente as funções do sistema para usuários potenciais, permitindo que os usuários julguem se as funções do sistema atendem às necessidades a serem alcançadas.

3.1 Análise de viabilidade

A análise de viabilidade é baseada no conteúdo principal e nas condições de apoio do projeto em termos de tecnologia, economia, engenharia, tecnologia, etc., como demanda de mercado, oferta de recursos, escala de construção, rota de processo, seleção de equipamentos, impacto ambiental, captação de recursos , lucratividade, etc. Pesquisa, análise e comparação de outros aspectos, previsão dos impactos ambientais financeiros, econômicos e sociais que podem ser alcançados após a conclusão do projeto, se vale a pena investir no projeto e como consultar e construir decisões do projeto, fornecem a base para um método abrangente de análise de sistema. A análise de viabilidade deve ser clarividente, justa, confiável e científica.

A fim de garantir a cientificidade, objectividade e imparcialidade do trabalho do estudo de viabilidade e prevenir eficazmente erros e omissões, no estudo de viabilidade, devemos primeiro conduzir investigações e pesquisas de um ponto de vista objectivo e imparcial e fazer um bom trabalho na recolha de dados básicos. Os dados básicos recolhidos devem ser demonstrados e avaliados com base em condições reais objectivas, reflectindo verdadeiramente as leis económicas objectivas, e partindo de dados objectivos e através de análises científicas para tirar uma conclusão sobre se o projecto é viável.

A profundidade do conteúdo do relatório do estudo de viabilidade deve atender aos padrões estipulados pelo estado, o conteúdo básico deve ser completo e o máximo de dados possível deve ser usado para evitar trabalho de má qualidade e formalismo.

Os seguintes pontos-chave devem ser dominados na prática: Demonstrar primeiro e depois tomar decisões; lidar adequadamente com a relação entre as três etapas de proposta de projeto, estudo de viabilidade e avaliação. A pesquisa deve ser interrompida em qualquer fase quando for considerada inviável; investigação e pesquisa devem ser realizadas. Acompanhamento. É necessário dominar informações práticas e confiáveis ​​para garantir a abrangência, importância, objetividade e continuidade da seleção dos dados; comparar múltiplas opções e escolher a melhor. Para projectos relacionados com o estrangeiro, ou projectos que devem estar em conformidade com as normas estrangeiras sob a pressão de factores externos, como a adesão à OMC, o conteúdo e a profundidade do estudo de viabilidade devem ser tão consistentes quanto possível com as normas internacionais.

A fim de garantir a qualidade do estudo de viabilidade, deve ser garantido um ciclo de trabalho suficiente da unidade de projeto de consultoria para evitar comportamentos irresponsáveis ​​​​e precipitados por diversos motivos.

O objetivo da análise de viabilidade é determinar se o problema pode ser resolvido no menor tempo e com o menor custo. O ponto principal da análise de viabilidade não é resolver problemas, mas estudar se vale a pena gastar recursos humanos e financeiros para estudá-los e resolvê-los. Se houver uma maneira simples e fácil, sim.

3.1.1 Análise de viabilidade econômica

    O objectivo da análise de viabilidade económica do sistema é calcular o investimento de capital necessário desde o desenvolvimento e construção até à operação do sistema, bem como a procura de mercado e os benefícios económicos do novo sistema, comparar o orçamento de investimento com os benefícios esperados, e calcular os custos económicos.

Este sistema de jogo é utilizado principalmente para a concepção de cursos de graduação em engenharia de software para estudantes universitários, não havendo necessidade de considerar os benefícios econômicos que ele pode gerar e o futuro status de desenvolvimento do jogo. Os requisitos económicos para o sistema de jogo em si não são elevados, mas os próprios níveis de conhecimento e capacidade dos alunos são melhorados através do desenvolvimento deste sistema de jogo. Tudo o que você precisa é de um computador equipado com o ambiente operacional JDK e a ferramenta de desenvolvimento Java do software Eclipse, portanto, não há necessidade de considerar questões econômicas.

3.1.2 Análise de viabilidade técnica

Existem muitas linguagens de programação que podem ser usadas para escrever jogos Tetris. Este tópico é principalmente para desenvolver o sistema de jogo em um ambiente baseado em Java. Portanto, este sistema usa principalmente componentes Swing em Java para desenvolvimento e requer definição de variável e inicialização., design de interface, inicialização do jogo, entrada no jogo, saída do jogo, manipulação de várias operações durante o jogo e execução de requisitos de código para funções correspondentes. Os requisitos técnicos não são particularmente difíceis e tecnicamente viáveis.

3.1.3 Análise de viabilidade social

O desenvolvimento deste sistema de jogo é utilizado principalmente para elaboração de cursos de graduação e teses, para consolidar o conhecimento de quatro anos de estudos universitários. É principalmente para indivíduos e escolas. É apenas para entretenimento pessoal e elaboração de cursos escolares e verificação de teses de graduação. Não terá qualquer impacto na sociedade, pelo que não há necessidade de considerar quaisquer factores legais, de direitos de autor e outros factores sociais. É completamente viável neste aspecto.

3.2 Análise de requisitos

    A chamada “análise de necessidades” refere-se a uma análise detalhada do problema a ser resolvido, esclarecendo os requisitos do problema, incluindo quais dados precisam ser inseridos, quais resultados são obtidos e o que deve ser produzido no final. Pode-se dizer que a “análise de necessidades” na engenharia de software é determinar o que o computador “faz” e que efeito ele alcança. Pode-se dizer que a análise de requisitos é concluída antes da conclusão do sistema.

    Na engenharia de software, a análise de requisitos refere-se a todo o trabalho necessário para descrever o propósito, o escopo, a definição e a funcionalidade do novo sistema ao criar um novo sistema de computador ou alterar um sistema de computador existente. A análise de requisitos é um processo chave na engenharia de software. Durante esse processo, analistas de sistemas e engenheiros de software determinam as necessidades do cliente. Só depois de estas necessidades serem identificadas é que as soluções para o novo sistema podem ser analisadas e procuradas. A tarefa da fase de análise de requisitos é determinar a funcionalidade do sistema de software.

    Na história da engenharia de software, as pessoas sempre acreditaram que a análise de requisitos é a etapa mais simples da engenharia de software. Mas, ao longo da última década, tem havido uma percepção crescente de que a análise das necessidades é o processo mais importante. Se o analista não conseguir entender corretamente as necessidades do cliente durante a análise da demanda, o software final não atenderá verdadeiramente às necessidades do cliente ou o projeto de software não será concluído dentro do prazo especificado.

3.2.1 Requisitos funcionais

    Todo o sistema de jogo irá gerar aleatoriamente 7 formatos diferentes de blocos compostos por quatro pequenos blocos. Após a rotação, 28 estados serão obtidos. Se a dificuldade do jogo aumentar, seis formatos diferentes de blocos serão adicionados. Após a rotação, 24 tipos serão adicionados. adicionado.estado. Os blocos caem livremente a uma certa velocidade. O jogador controla o movimento esquerdo e direito e a rotação dos blocos através das teclas para cima, para baixo, esquerda e direita do teclado, e coloca os blocos na posição apropriada após a queda. Quando o bloco cair, se uma linha inteira for preenchida com blocos após a queda do bloco, toda a linha será eliminada. Quando uma linha é eliminada, a pontuação do jogador aumenta em 10 pontos. Quando a pontuação atinge 100 pontos, o nível do jogador aumenta em um nível, a velocidade aumenta em um nível e a dificuldade aumenta. Se toda a interface da tela do jogo estiver ocupada após a queda do bloco, o bloco não cairá mais e o jogo falhará. Os requisitos funcionais específicos do jogo são os seguintes:

    ▪ Requisitos de interface do jogo: Uma boa interface do jogo fará os olhos dos jogadores brilharem, e eles poderão sentir plenamente o entretenimento e o relaxamento que o jogo traz. A cor de fundo padrão deste jogo é verde escuro. A tela da interface principal do jogo pode ser personalizada para sua imagem favorita e pode ser alterada. A cor padrão dos quadrados da interface principal é laranja, e a cor padrão dos quadrados de pré-exibição é lavanda. A cor de fundo e a cor de primeiro plano contrastam fortemente para tornar os olhos do jogador mais brilhantes.Quando o jogo atinge um nível alto e a velocidade de queda dos blocos aumenta, os jogadores podem distinguir claramente a forma dos blocos que caem, o que aumenta o ambiente de o jogo. Irritante.

    ▪ Requisitos de formato do jogo: Use uma matriz como estrutura de dados para armazenar 52 estados do bloco, ou seja, um total de 7 formatos, incluindo barra longa de nível primário, formato Z, formato Z reverso, formato de campo, formato 7 , formato 7 reverso e formato T. Deformação de rotação em 4 direções, três blocos no nível intermediário e 12 estados diferentes, e três blocos no nível avançado com 12 estados diferentes. Cada bloco pode girar no sentido anti-horário, e se o bloco pode girar precisa ser avaliado pelas condições.Se o bloco puder cruzar o limite após a rotação, ele não poderá girar e a posição precisará ser ajustada para garantir que ele possa girar.

    ▪ Requisitos de evento de processamento do teclado: Quando o bloco cai, o jogador pode usar as teclas de direção do teclado: a tecla para cima para girar, a tecla para baixo para acelerar a queda, a tecla esquerda para mover para a esquerda, a tecla direita para mover para a direita, e a barra de espaço para realizar a queda com um clique.A tecla da letra P implementa pausa e a tecla da letra C implementa uma série de operações, como continuar.

    ▪ Requisitos de evento de processamento do mouse: Com o mouse, você pode clicar no botão de menu e no botão de ajuda no painel de controle, selecionar itens de menu na barra de menu, iniciar o jogo, selecionar o nível do jogo, alterar a exibição colorida dos blocos no jogo e o plano de fundo da interface principal do jogo Exibir cor e cor de primeiro plano, alterar a imagem de fundo do jogo, bloquear a velocidade de queda, reproduzir sons do jogo e uma série de funções.

▪ Requisitos de exibição: Os requisitos de exibição deste programa de jogo são que quando os blocos caem e preenchem uma linha inteira, a linha será eliminada e as linhas não preenchidas restantes se moverão automaticamente para baixo, uma por uma. Eliminar uma linha aumentará a pontuação em a interface certa em dez pontos. Quando a pontuação aumenta para 100 pontos, o nível aumenta em um nível. Quando o bloco cai e se sobrepõe a todas as linhas da interface principal, o bloco não cai mais, o jogo termina e a interface principal exibe a palavra "Game Over".

3.2.2 Requisitos não funcionais

Requisitos não funcionais: Os requisitos não funcionais do sistema de jogo Tetris incluem a exibição do ícone no canto superior esquerdo da interface principal do jogo, ajustando o tamanho da janela para maximizar e minimizar (mas não incluindo o tamanho da interface principal), e a posição da janela pop-up quando o jogo está em execução.Um conjunto de requisitos não funcionais.

3.2.3  Controle de interface

No sistema operacional Windows, este sistema de jogo russo opera principalmente através do teclado.

Você pode usar o mouse para realizar uma série de operações, como iniciar, sair e configurações. Em primeiro lugar, o jogo usa teclas do teclado para operar o jogo, por isso precisa usar eventos de interface do teclado. Em segundo lugar, durante todo o processo do jogo, você precisa usar o mouse para controlar o jogo, incluindo iniciar, selecionar níveis, alterar configurações, alterar cores, visualizar informações da versão, sair, etc., então você precisa adicionar uma interface para monitorar eventos para cliques e botões do mouse. , escreva o código correspondente para implementar as funções correspondentes do mouse e do teclado.

Projeto do esboço do sistema

4.1  Projeto funcional do sistema

4.1.1  Processo básico de processamento manual de negócios

    Este jogo foi concebido tendo o entretenimento como intenção original e o puzzle como finalidade. Baseia-se num estudo abrangente das funções dos jogos clássicos anteriores de Tetris e introduz novos, acrescentando novas funções para lhe dar nova vitalidade e vitalidade. O processo básico do jogo é explicado em detalhes abaixo.

   Instruções de operação:

   1>Execute o programa e clique em “Iniciar” no painel de controle à direita ou no botão “Iniciar” no menu “Controle” para iniciar o jogo.

   2> Use as teclas para cima, para baixo, para a esquerda, para a direita e a barra de espaço, a tecla P e a tecla C para controlar a deformação, queda, movimento para a esquerda e para a direita do bloco e queda rápida, pausar e continuar com um clique.

   3> Elimine uma linha completa de blocos, a pontuação aumentará automaticamente e o nível aumentará automaticamente em um nível.

   4>À medida que o nível aumenta e a velocidade de queda dos blocos aumenta, pressione os botões "Elementar", "Intermediário" e "Avançado" no painel de controle direito ou no menu "Jogo" para alterar manualmente a dificuldade do jogo. Você também pode clicar nas opções do menu “Cor do bloco” para alterar a cor dos blocos, etc. Você também pode alterar alguns atributos do jogo através das opções do menu “Personalizar”.

   5> Pressione a tecla P no teclado para pausar o jogo e, a seguir, pressione a tecla C para continuar o jogo. Pressionar o botão “Finalizar Jogo” interromperá completamente o jogo em andamento, e pressionar “Iniciar” ou “Reiniciar” no menu “Controle” iniciará um novo jogo.

   6> Quando os blocos ocuparem toda a janela e nenhum bloco novo puder cair, o jogo exibirá uma caixa de diálogo "Game Over" para solicitar o término do jogo.

O fluxograma básico do jogo é mostrado na Figura 4-1:

                        Figura 4-1 Fluxograma básico do jogo

4.1.2  Módulos funcionais do processo básico

Este sistema projeta cada módulo funcional do jogo com base nas diversas funções do jogo. A Figura 4-2 é um diagrama esquemático dos módulos de função do sistema deste jogo. Conforme mostrado na figura, este jogo possui principalmente dois módulos: a área de interface do jogo e a área de controle do jogo. A interface do jogo é dividida em duas partes: exibindo as operações opcionais do jogador e exibindo os resultados das operações do jogador. O controle do jogo é dividido em alguns módulos funcionais como mudança de cor, início, mudança do nível do jogo para elementar, mudança do nível do jogo para intermediário, mudança do nível do jogo para avançado, personalização da velocidade de queda, mudança de fundo, saída e outros.

Figura 4-2 Diagrama esquemático dos módulos de função do sistema

    A Figura 4-3 é um diagrama esquemático do design do módulo da área de interface do jogo. Conforme mostrado na figura, o módulo da área de interface do jogo pode ser subdividido em três módulos funcionais: entrar na nova interface do jogo, processar as operações do jogador e exibir os resultados da operação do jogador .

Figura 4-3 Diagrama esquemático do módulo de interface

    A Figura 3-4 é um diagrama esquemático do design da área de controle do jogo. Conforme mostrado na figura, o módulo da área de controle do jogo é dividido em módulos funcionais, como início, configurações de operação personalizadas, configurações iniciais do nível do jogo, configurações iniciais de cores e saída .

Figura 4-4 Diagrama esquemático do módulo da área de controle

5Desenho detalhado  e implementação do sistema

    Java é uma linguagem de programação puramente orientada a objetos (Orientada a Objetos) e suas muitas vantagens não serão discutidas em detalhes aqui. Partindo do conceito orientado a objetos, este programa pode ser dividido principalmente nos seguintes módulos:

    ●Módulo de exibição da interface principal do jogo

    ●Módulo de bloco e exibição de dados

    ●Módulo de controle de movimento de bloco

    ●Módulo de controle de cores da interface do jogo

    ● Progresso do jogo e módulo de controle de nível

    A habilidade de analisar um objeto reside na sua escalabilidade funcional e eficiência de manutenção. Imagine só, se a função do programa precisar ser expandida ou mantida devido a mudanças no ambiente externo ou às necessidades do usuário, o código terá que ser alterado significativamente ou mesmo reescrito. Dessa forma, a vantagem da orientação a objetos será perdida. , portanto, ao analisar este programa, um módulo altamente independente é usado como objeto para melhorar a escalabilidade e a capacidade de manutenção do programa. A seguir está o design das classes do jogo:

    Classe MyFrame: Herdada da classe JFrame, como classe principal do jogo, é responsável por controlar o corpo principal do jogo e conectar e comandar o hub de cada classe.

    Classe PreView: Herdada da classe JPanel, por ser uma classe de painel de operação, é responsável por colocar a janela principal do jogo, placar, botões de controle de nível e demais janelas para controlar o processo do jogo.

    Classe GameCanvas: herdada da classe JPanel, a classe de thread ChangeBlockColor altera dinamicamente a cor do quadrado da classe canvas.A classe canvas reflete o movimento e a eliminação do quadrado ChangeBlockColor verificando a cor do quadrado.

    Classe Box: Classe Square, os elementos básicos que compõem a caixa. A expressão principal é a cor.

    Classe Block: Como classe de manipulação de blocos, controla o movimento, queda e deformação dos blocos.

5.1  Módulo de exibição da interface principal do jogo

    Um excelente sistema de software não se reflete apenas na diversidade e no poder das funções principais. Se o usuário se deparar com uma interface chata e antiga, o sistema de software não terá sucesso. Portanto, um sistema de software bom e requintado não terá sucesso. O design da interface é um elo extremamente importante. A importância de projetar e produzir uma interface com layout razoável e bons efeitos visuais para os jogadores é evidente.

A interface principal do jogo é desenvolvida usando componentes Swing, e os ouvintes são registrados nela para implementar diversas funções de controle.Com base no design do formulário do jogo, pelo menos três ouvintes precisam ser registrados nele, ou seja, o ouvinte de ação (ActionListener) e ouvinte de teclado.ouvinte (KeyListener), ouvinte de opção (ItemListener).

    De acordo com o projeto preliminar, pode-se determinar que os objetos do componente Swing a serem usados ​​no cliente incluem objetos JFrame, objetos JPanel, objetos JLabel, objetos JButton, objetos JMenuBar, objetos JMenu, objetos JMenuItem, objetos JTextField, objetos JTextArea, JDialog objetos, etc., pelo menos dez objetos componentes Swing. A Figura 5-1 abaixo é uma captura de tela da interface principal do jogo.

Figura 5-1 Captura de tela da interface principal do jogo

A correspondência de cores inicial do design da interface principal deste jogo é baseada no princípio do contraste nítido. A cor de fundo padrão é verde escuro. O ícone do Tetris está definido no canto superior esquerdo. O valor inicial da pontuação é 0, o o valor inicial do nível é 1 e o valor inicial do registro de pontuação mais alta é 0. O tamanho da forma de jogo principal é definido como (520, 580), o painel de faixa de movimento do bloco é controlado por uma matriz bidimensional com 20 linhas e 12 colunas, e o ícone no canto superior esquerdo é definido como um padrão de bloco para fins de identificação.

5.2  Módulo de exibição de tela e caixa

Neste jogo, a tela é projetada como uma imagem personalizada. Você mesmo pode alterar a imagem de fundo de acordo com suas necessidades. Durante o processo de queda dos blocos, os blocos que caem são identificados de acordo com as mudanças de cor.

5.2.1  Design do módulo de tela de fundo

A tela de fundo principal do jogo é uma matriz bidimensional com 20 linhas e 12 colunas. A exibição quadrada é identificada pelas mudanças de cores correspondentes. O formulário principal é preenchido com cores para formar o estilo de fundo e os quadrados. Este jogo usa a classe GameCanvas herdada do JPanel para controlar a exibição da tela de fundo. Rows representa o número de linhas da tela e cols representa o número de colunas da tela. O número de linhas e colunas determina o número de quadrados a tela tem. O principal código de implementação da tela de fundo é o seguinte:

Primeiro, use um construtor da classe canvas para representar o número de linhas, colunas e borda principal de toda a interface principal.

Posição relativa em:

       /**

        * Construtor da classe canvas

        * @param rows int, o número de linhas na tela

        * @param cols int, o número de colunas do canvas

        * O número de linhas e colunas determina o número de quadrados que a tela possui

        */

       public GameCanvas(int linhas, int colunas) {

              this.rows = linhas;

              this.cols = cols;

              this.setOpaque(falso);

              caixas = nova caixa[linhas][cols];

              for (int i = 0; i <caixas.comprimento; i++) {

                     for (int j = 0; j <caixas[i].comprimento; j++) {

                            caixas[i][j] = nova caixa(falso);

                     }

              }

              setBounds(0, 0, 300, 500); //Definir coordenadas de posição relativa

              setBorder(new EtchedBorder(

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

       }

       /**

        * Obtenha o número de linhas de quadrados na tela

        * @return int, o número de linhas na grade

        */

       public int getRows() {

              linhas de retorno;

       }

       /**

        * Obtenha o número de colunas na tela

        * @return int, o número de colunas na grade

        */

       public int getCols() {

              retornar colunas;

       }

    Em segundo lugar, defina um construtor da classe canvas para representar a cor de primeiro e segundo plano de toda a interface principal e obter suas cores de primeiro e segundo plano:

       /**

        * Construtor da classe canvas

        * @param rows é igual a public GameCanvas(int rows, int cols)

        * @param cols é igual a public GameCanvas(int rows, int cols)

        * @param backColor Cor, cor de fundo

        * @param frontColor Cor, cor de primeiro plano

        */

       public GameCanvas(int linhas, int colunas,

                         Cor backColor, Cor frontColor) {

              this(linhas, colunas);

              this.backColor = backColor;

              this.frontColor = frontColor;

       }

       /**

        * Defina a cor de fundo do jogo

       * @param backColor Cor, cor de fundo

        */

       public void setBackgroundColor(Cor backColor) {

              this.backColor = backColor;

       }

       /**

        * Obtenha a cor de fundo do jogo

       * @return Cor, cor de fundo

        */

       cor pública getBackgroundColor() {

              retornar cor de volta;

       }

5.2.2  Visualização do design do módulo de bloco

Blocos e informações de dados são os módulos funcionais mais básicos do jogo. Box, uma classe semelhante a uma grade, é o elemento básico que compõe um bloco. Ele usa sua própria cor para representar a aparência do bloco. MyTask herda a classe TimerTask para cronometrar o paradeiro e usa métodos de contagem para obter mudanças de velocidade. O A classe MyListener herda a classe KeyAdapter para implementar o monitoramento de botões, controlar para cima, para baixo, para a esquerda e para a direita do bloco. Defina uma matriz quadrada 4x4 com um total de 16 células. Use “0” e “1” para indicar se cada quadrado é pintado com uma nova cor ou mantém a cor de fundo.

Cada vez que um novo bloco é obtido, uma das sete formas de blocos é selecionada aleatoriamente. O jogo define uma variável que representa o modelo do novo bloco. Por exemplo, defina um array interno STYLE para representar 28 tipos de blocos, com 7 linhas e 4 colunas, e cada elemento representa um dos blocos. Ou seja, 0<=blockkindnum<=6, 0=<blockstatusnum<=3

Então, quando o bloco cair e você precisar obter um novo bloco, você só precisa obter aleatoriamente um par de valores blockkindnum e blockstatusnum e, em seguida, construir o bloco correspondente com base no valor deste STYLE. A questão restante é como gerar aleatoriamente um par de valores de linha e coluna STYLE.

A classe Math no pacote da linguagem Java fornece um método random() para gerar números aleatórios. Chamar esse método gerará um número de ponto flutuante de precisão dupla entre 0-1. Portanto, toda vez que você quiser obter um novo bloco, você só precisa chamar esse método uma vez para obter um número de ponto flutuante de precisão dupla de 0 a 1, multiplicar o número por 7 e convertê-lo em um número inteiro para obter um inteiro de 1 a 7. , usado para controlar linhas. Multiplique esse número por 4 e converta-o em um número inteiro para obter um número inteiro de 1 a 4, que é usado para controlar a coluna.

A partir disso, múltiplas definições gráficas podem ser combinadas e as seguintes funções podem ser implementadas usando código:

1> Cada execução gera primeiro um valor inicial diferente para o número aleatório.

                  int col = (int) (Math.random() * (gc.getCols() - 3));//Gera colunas em posições aleatórias

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

Figura 5-2 Fluxograma de geração aleatória de blocos

    2> Selecione aleatoriamente uma figura, a Figura 5-2 gera aleatoriamente um diagrama de blocos para descrever especificamente o CNC aleatório gerado

Os gráficos resultantes.

3>As informações de posição do gráfico atual em sua grade 4*4.

    Desenhe uma grade de pré-exibição de 4 linhas e 4 colunas de blocos e gere aleatoriamente um estilo de bloco de pré-exibição. Este jogo usa um array bidimensional para armazenar 28 estilos de blocos.

É importante destacar que: com base no tradicional jogo Tetris, para refletir um pensamento inovador e em linha com o princípio da aprendizagem, este sistema de jogo acrescenta três outros estilos de blocos no nível intermediário e três níveis avançados com base em o jogo tradicional.outros estilos de blocos. Existem 52 estilos de bloco no total. O principal código de implementação para o método de armazenamento específico é o seguinte:

       /**

        *Corresponde a 52 estados de 13 modelos respectivamente

        */

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

              {0xf000, 0x8888, 0xf000, 0x8888}, // Quatro estados da barra longa

              {0x4e00, 0x4640, 0xe400, 0x4c40}, // Quatro estados do tipo 'T'

              {0x4620, 0x6c00, 0x4620, 0x6c00}, // Quatro estados de formato 'Z' reverso

              {0x2640, 0xc600, 0x2640, 0xc600}, // Quatro estados do tipo 'Z'

              {0x6220, 0x1700, 0x2230, 0x7400}, // Quatro estados do tipo '7'

              {0x6440, 0xe200, 0x44c0, 0x8e00}, // Quatro estados do tipo '7' reverso

              {0x6600, 0x6600, 0x6600, 0x6600}, // Quatro estados do bloco

              {0x8c88,0xf200,0x44c4,0x4f00},//Adicionados 3 blocos de estilo intermediário

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

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

              {0xac00,0xcc40,0x6e00,0x8cc0},//Adicionados 3 blocos de estilo avançado

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

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

       };

   Acredito que muitas pessoas conhecem os 7 estilos de blocos do jogo Tetris tradicional, então não farei capturas de tela para mostrar os estilos de blocos comuns, um por um. A seguir estão três modelos de blocos de dificuldade intermediária e três de dificuldade avançada adicionados ao modo de jogo tradicional:

    ●Adicionados três modelos de blocos de dificuldade intermediária (quatro estados de rotação podem ser obtidos após 90 graus, 180 graus, 270 graus e 360 ​​graus)

Figura 5-10 Três modelos adicionais de blocos de dificuldade intermediária

    ●Adicionados três modelos de blocos de dificuldade avançados (quatro estados de rotação podem ser obtidos após 90 graus, 180 graus, 270 graus e 360 ​​graus)

Figura 5-11 Três modelos adicionais de blocos de dificuldade avançados

5.2.3  Projeto do módulo de movimento e rotação do bloco

A inversão e movimentação de blocos é relativamente fácil de implementar. Para mover um bloco, você só precisa alterar a abcissa ou ordenada do bloco e, em seguida, redesenhar o bloco. Para inverter o bloco, você só precisa alterar o valor da matriz de fundo e redesenhar o bloco.

Quando os blocos deste jogo caem, o desenho dinâmico é executado e a interface Cloneable é implementada para indicar que o método Object.clone() pode copiar legalmente a instância desta classe por campos. A classe de operação de bloco BlockOperation herda a classe Thread e substitui o método run() para perceber o paradeiro dinâmico e correto do bloco. Obviamente, é necessário determinar se o bloco está no estado de movimento ou de pausa no thread.

execução pública void ()

       {

              //moving determina se o bloco está caindo dinamicamente

              enquanto (em movimento)

              {

                     tentar

                     {

                            //betweenleveltime indica a diferença de tempo entre níveis adjacentes

                            dormir (entre o tempo e o nível

                                    * (ControlMainGame.maxlevel - nível + flatgene));

                     } catch (InterruptedException, ou seja)

                     {

                            ou seja,printStackTrace();

                     }

                     //pausing determina se o jogo está pausado

                     se (! pausando)

                            em movimento = (moveTo(y + 1, x) && em movimento);

                     //moving está aguardando 100 milissegundos e a movimentação não foi alterada.

             }}

Claro, no jogo também precisamos determinar o problema de fronteira do movimento do bloco. Por exemplo, um bloco tem exatamente uma grade de espaço à sua esquerda antes de poder ser virado, mas há exatamente uma grade de espaço à sua direita Neste caso, se o bloco não puder ser invertido, Flip será inconveniente para os usuários operarem. Se puder ser invertido, ele cruzará o limite e ocupará os blocos existentes. Se quiser virar o bloco sem sair dos limites, você deve mover o bloco um quadrado para a direita depois de virá-lo e, em seguida, desenhar o bloco novamente. Dessa forma, o bloco não irá obstruir outros blocos fixos. O seguinte resolve o problema dos limites.

1> Julgamento de inversão de bloco

O cross-border pode ocorrer em duas situações, uma é quando o bloco cai e fica fixo, e a segunda é quando o espaço envolvente não permite que ele vire.

No primeiro caso, basta referir-se ao julgamento de que o bloco não pode se mover depois de cair.

Para o segundo caso, antes de cada bloco ser virado, o espaço ao redor do bloco deve primeiro ser calculado e virado se o espaço permitir. Caso contrário, não poderá ser invertido.

Como os sete tipos de quadrados são irregulares, o espaço de lançamento necessário para cada tipo de quadrado é diferente. Mesmo em seus diferentes estados de lançamento, o espaço de lançamento necessário também é diferente. A primeira coisa que vem à mente é, naturalmente, fornecer a cada quadrado diferentes espaços de inversão, tipos de blocos, e escrever uma condição de julgamento para cada estado do bloco, mas isso seria muito problemático.

De acordo com a observação, não é difícil descobrir que entre as sete formas de blocos, se um bloco longo cair na forma de uma barra horizontal, ele pode ser virado desde que possa cair. barra vertical, então ela estará na posição após a inversão. A posição deve ter espaço de grade 4x1 antes de poder ser invertida. Para o quadrado em forma de Tian, ​​​​enquanto puder continuar a cair, ele definitivamente será capaz de virar, portanto, enquanto o quadrado em forma de Tian não cair, ele sempre será capaz de virar. As outras cinco formas de blocos têm uma coisa em comum, ou seja, todas têm dois estados invertidos que ocupam três grades de espaço horizontalmente e dois espaços verticalmente. Os outros dois estados invertidos ocupam duas grades de espaço horizontalmente., ocupando três espaços de grade. na direção vertical. Se eles caírem no estado de ocupar três grades na direção horizontal, então, enquanto puderem cair, eles serão capazes de virar. Se eles caírem no estado de duas grades na direção horizontal, então depois de virar, o ambiente deve haver um espaço de grade 3x2.

Portanto, a determinação do lançamento de um bloco deve ser dividida em três situações: a primeira situação é que o bloco não pode ser virado após cair; a segunda situação é que o bloco longo que aparece no estado vertical é virado; a terceira situação é Além das longas tiras e quadrados em forma de campo, os outros cinco quadrados que aparecem ocupando duas grades na direção horizontal são julgados por serem invertidos.

Agora que o problema de em que circunstâncias o bloco pode ser virado foi resolvido, a seguir, devemos resolver o problema da posição do bloco depois de ser virado, porque só sabendo antecipadamente a posição do bloco depois de ter sido virado podemos determinar o alcance espacial dessa posição. Faça uma determinação para ver se ela pode acomodar o bloco.

O que é certo é que não importa como o bloco seja virado, ele ainda estará na matriz de blocos, o que significa que o bloco deve estar dentro de um determinado espaço de grade 4x4 no mapa do jogo.

As coordenadas da matriz de blocos na interface principal do jogo são determinadas. O que é incerto é onde o bloco estará na matriz de blocos após a inversão. Para resolver este problema, podemos limitar o princípio de armazenamento do bloco no matriz de blocos para a esquerda ou para a esquerda. Dessa forma, não importa como você o inverta, sempre haverá blocos na primeira linha e coluna da matriz de blocos. Isso também determina a posição do bloco na matriz de blocos e você também pode saber como o bloco aparecerá no mapa do jogo após ser invertido.

Suponha que as coordenadas horizontais e verticais da matriz de blocos sejam xey, então esta posição é que a linha onde o bloco longo é invertido é a y-ésima linha do mapa do jogo, e as colunas que ela ocupa são a x-ésima a x+3 colunas, as linhas ocupadas pelos cinco tipos de quadrados, exceto a faixa longa e o formato do campo após a inversão, são as linhas y e y + 1 do mapa do jogo, e as colunas que eles ocupam são as colunas x a x + 2.

Portanto, se houver células vazias no espaço acima, os blocos poderão ser invertidos.

2> Correção de virar fora dos limites

Um bloco pode ser virado desde que haja espaço suficiente nele após ser virado, mas e se o espaço após o bloco ser virado não for suficiente, mas houver espaço suficiente no outro lado?

Quando o bloco está no limite, ele pode não apenas cair fora do mapa após ser virado, mas também a matriz pode sair dos limites.Claro, você só precisa definir a matriz do mapa maior para evitar a matriz fora dos limites Para o bloco fora dos limites, se estiver do outro lado dele Se houver espaço suficiente, então o bloco deve ser movido para a outra direção pela unidade apropriada para corrigir o erro do bloco fora dos limites. Conforme mostrado no fluxograma de inversão de bloco na Figura 5-12, a inversão de um bloco requer três determinações: se ele caiu no fundo, se há espaço suficiente após a inversão e se ele cruzou o limite após a inversão.

Figura 5-12 Fluxograma de processamento de inversão de bloco

O jogador opera o teclado para mover e girar os blocos. O código introduz a classe ControlKeyListener e herda a classe KeyAdapter para implementar a função de monitoramento do teclado. A classe KeyAdapter herda da classe Object e implementa a interface KeyListener, uma classe adaptadora abstrata usada para receber eventos de teclado. Os métodos nesta classe estão vazios. Esta classe existe para facilitar a criação de objetos ouvintes. Estenda esta classe para criar um ouvinte KeyEvent e substituir o método do evento necessário, que é a classe ControlKeyListener. Use ControlKeyListener para criar um objeto ouvinte e, em seguida, registre o objeto ouvinte com o componente usando o método addKeyListener do componente. Quando uma tecla é pressionada, liberada ou digitada, o método correspondente no objeto ouvinte é chamado e o KeyEvent é passado para o método apropriado. O código de implementação é o seguinte:

       privateclass ControlKeyListener estende KeyAdapter

       {

              publicvoid keyPressed(KeyEvent ke)

              {

                     se (!game.isPlaying())

                            retornar;

                     BlockOperation blockope = game.getCurBlock();

                     mudar (ke.getKeyCode())

                     {

                            caso KeyEvent.VK_DOWN:

                                   blockope.moveDown();

                                   quebrar;

                            caso KeyEvent.VK_LEFT:

                                   blockope.moveLeft();

                                   quebrar;

                            caso KeyEvent.VK_RIGHT:

                                   blockope.moveRight();

                                   quebrar;

                            caso KeyEvent.VK_UP:

                                   blockope.turnNext();

                                   quebrar;

                            padrão:

                                   quebrar;}}}

5.3Módulo do Painel de Controle 

5.3.1  Design do módulo da barra de menu

     Existem quatro opções de menu “Jogo” e “Ajuda” na barra de menu. A opção “Jogo” é dividida em sete opções: “Iniciar”, “Iniciante”, “Intermediário”, “Avançado”, “Personalizar”, “Bloquear Cor” e “Sair”. Existe uma opção “Sobre” na opção “Ajuda”, que é usada para exibir informações como versão do jogo.

    1> A função do botão "Iniciar" é redesenhar a tela do jogo, semelhante à função de redefinição. O código de implementação de monitoramento deste botão é o seguinte:

       /**

        * Redefinir tela

        */

       redefinição de vazio público() {

              for (int i = 0; i <caixas.comprimento; i++) {

                     for (int j = 0; j <caixas[i].comprimento; j++)

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

              }

              repintar();

       }

    2>Os botões "Elementar", "Intermediário" e "Avançado" são usados ​​para ajustar manualmente o nível do jogo, alterando assim o nível de dificuldade do jogo. O botão "Sair" controla o jogo para sair a qualquer momento e encerrar o jogo.

3>Clique no botão "Sobre" no botão "Ajuda" para exibir informações relacionadas ao software do jogo em si. As informações específicas são mostradas na figura:

                       Figura 4-19 Captura de tela da opção “Sobre”

5.3.2  Design dos botões do painel de controle

O painel de controle do jogo contém campos como estatísticas de pontuação e estatísticas de nível.

Os controles TextField são fornecidos pelas estatísticas do próprio jogo e os jogadores não podem editá-los de forma privada. As regras deste jogo são 10 pontos para cada linha eliminada, e cada 100 pontos adicionais aumentam um nível. A pontuação inicial é 0 e o nível inicial é 1.

A seguir está o código principal para implementar funções como atualização de pontuação e nível:

              /**

               * Determine se a linha está cheia. Se a linha estiver cheia, chame o método de eliminação.

               */

              private void isFullLine() {

                     // TODO stub de método gerado automaticamente

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

                            linha interna = 0;

                            sinalizador booleano = verdadeiro;

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

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

                                          bandeira = falso;

                                          quebrar;

                                   }

                            }

                            if (sinalizador == verdadeiro) {

                                   linha = eu;

                                   gc.delete(linha);//Excluir linha

                                   if(isMusic==true)

                                   {mp.playEraseSound();}

                                   addScor(); //Adiciona pontuação

                                   if(scor%100==0)//Defina para 100 pontos para aumentar um nível

                                   upspeed=true;//Aumenta o sinalizador de velocidade para true

                                   if(velocidade de atualização==verdadeiro)

                                          nível acima();

                            }

                     }

              }

              /**

               * Como as pontuações são calculadas

               */

              private void addScor() {

                     pontuação=pontuação+10;

                     jt9.setText("Pontuação: "+MyFrame.scor);

              }

       }

       redefinição de vazio privado() {

              pontuação=0;

              classificação=0;

              jt10.setText("Nível:"+classificação);

              jt9.setText("Pontuação: "+pontuação);

              velocidade de atualização=falso;

              jogando=verdadeiro;

              runstop=falso;

              gc.setGameOver(falso);

              gc.repaint();

              gc.reset();

       }

As funções dos botões do painel de controle foram codificadas em 4.3.1 e não serão descritas novamente aqui.

6 testes de sistema

6.1 Visão Geral do Teste

O teste do sistema visa confirmar o software, o hardware do computador, o equipamento periférico, a rede e outros elementos juntos para testes de montagem e testes de confirmação de vários sistemas de informação.O teste do sistema consiste em testar todo o sistema do produto com o objetivo de verificar se o sistema atende aos requisitos especificações.Definir e identificar inconsistências ou contradições com as especificações de requisitos para propor uma solução mais abrangente. Depois que o teste do sistema revelar um problema, tente descobrir a causa e a localização do erro e corrija-o. É o requisito geral do sistema baseado em testes de caixa preta e deve abranger todos os componentes do sistema. Os objetos incluem não apenas o software a ser testado, mas também o hardware do qual o software depende, dispositivos periféricos e até mesmo alguns dados, alguns softwares de suporte e suas interfaces.

O teste de sistema é um software de teste integrado que, como parte do sistema de computador, se combina com outras partes do sistema para conduzir uma série de testes rigorosos e eficazes no ambiente operacional real do sistema de computador para identificar possíveis problemas com o software e garantir o funcionamento normal do sistema.

O objetivo do teste de sistema é verificar se o sistema de software final atende aos requisitos do usuário.

Os principais conteúdos incluem:

(1) Teste funcional. Ou seja, o funcionamento do sistema de software de teste está correto de acordo com os requisitos do documento, como a " Especificação de Requisitos do Produto" . Como a correção é o fator de qualidade mais importante do software, o teste funcional é crucial.

(2) Teste de robustez. Isto é, a capacidade de testar a operação normal de um sistema de software sob condições anormais. Robustez tem dois significados: um é tolerância a falhas e o outro é resiliência.

6.1.1  Princípios de teste

 Os princípios básicos do teste de software incluem testes abrangentes da perspectiva dos usuários do produto, descobrindo o maior número possível de problemas e lacunas no processo de uso do sistema, pesquisando e analisando e propondo problemas e sugestões de melhoria em aspectos defeituosos do produto. O princípio de teste detalhado é o seguinte:

(1) O plano de teste de software é o guia de ação para teste de software. O teste real deve ser implementado cuidadosa e rigorosamente, e o plano de teste deve ser implementado rigorosamente com alta viabilidade, especialmente para determinar o método de teste e a finalidade do teste.

(2) Os padrões de teste são estabelecidos com base nas necessidades do usuário. O principal objetivo do teste de software é garantir a consistência do produto e verificar se o produto pode atender às necessidades do cliente. Portanto, durante o processo de teste, você deve sempre olhar para o problema do ponto de vista do usuário. perspectivar e descobrir O impacto dos defeitos e deficiências de software, os erros mais graves no sistema, programas que não atendem às necessidades do usuário e defeitos funcionais.

(3) Os testes não podem ser tratados casualmente.

Especialmente para testes de sistema e testes repetidos, se o plano de teste não for estritamente implementado, é muito provável que novos BUGs sejam gerados por negligência. Portanto, a fase de testes repetidos também deve receber total atenção, pois há muitos erros na detecção precoce, muitos dos quais não são descobertos por negligência.

Propósito:

(1) Garantir que as atividades de teste do sistema sejam realizadas normalmente;

(2) Verificar a incompatibilidade ou contradição entre produtos de software e requisitos de sistema;

(3) Estabelecer um banco de dados completo de rastreamento de defeitos de testes de sistema;

(4) Garantir que grupos e indivíduos relevantes sejam notificados sobre atividades e resultados de testes de sistemas de software em tempo hábil.

6.1.2  Métodos de teste

A fim de testar o sistema de forma abrangente e descobrir os problemas e falhas no sistema, o uso de vários métodos de teste para testar juntos pode resumir de forma mais abrangente as vantagens e desvantagens do projeto do sistema. Os seguintes métodos de teste são usados:

Teste funcional: teste se os pontos de função em cada módulo funcional do sistema podem ser usados ​​normalmente;

Teste manual: testa principalmente entrada, clique e outras funções;

Teste de caixa preta: Após inserir, verifique se o resultado está correto.

Teste de recuperação: Como um teste de sistema, o teste de recuperação concentra-se principalmente em várias condições que causam falha no software e verifica se o processo de recuperação pode ser implementado normalmente. Em alguns casos, o sistema precisa ser tolerante a falhas. Além disso, as falhas do sistema devem ser corrigidas dentro do prazo especificado, caso contrário resultarão em graves perdas económicas. O teste de recuperação verifica principalmente a tolerância a falhas do sistema. Quando ocorre um erro do sistema, o erro pode ser corrigido e o sistema reiniciado dentro de um intervalo de tempo especificado. O teste de recuperação deve primeiro usar vários métodos para forçar a falha do sistema e, em seguida, verificar se o sistema pode ser restaurado o mais rápido possível. Para recuperação automática, a exatidão da reinicialização, dos mecanismos de checkpoint, da recuperação de dados e da reinicialização precisa ser verificada; para sistemas de recuperação de intervenção manual, o tempo médio de reparo precisa ser estimado e determinar se está dentro da faixa aceitável.

Teste de segurança: O teste de segurança é usado para verificar o mecanismo de proteção do sistema para evitar invasões ilegais. Nos testes de segurança, os testadores desempenham o papel de tentar invadir o sistema e utilizar diversos métodos para tentar romper as linhas de defesa. Portanto, o padrão para o projeto de segurança do sistema é encontrar maneiras de tornar mais cara a invasão do sistema. Os testes de segurança verificam a capacidade do sistema de impedir invasões ilegais. Durante o teste de segurança, os testadores fingiram ser intrusos ilegais e usaram vários métodos para tentar romper as linhas de defesa. Por exemplo, ① tentar todos os meios para interceptar ou decifrar senhas; ② personalizar software especialmente para destruir o mecanismo de proteção do sistema; ③ causar deliberadamente falha no sistema e tentar entrar ilegalmente enquanto ele está se recuperando; ④ tentar deduzir as informações necessárias navegando em dados não confidenciais, etc. Teoricamente, com tempo e recursos suficientes, nenhum sistema é inacessível. Portanto, o princípio do projeto de segurança do sistema é fazer com que o custo da intrusão ilegal exceda o valor da informação protegida. Neste ponto não há lucro para os invasores ilegais.

Teste de estresse: O teste de estresse refere-se à implementação de um sistema que usa tráfego, frequência ou volumes de dados anormais sob recursos normais. Os seguintes testes podem ser realizados durante o teste de pressão:

① Se o número médio de interrupções for de uma a duas por segundo, o caso de teste especial será projetado para gerar 10 interrupções por segundo.

② Aumente a quantidade de dados de entrada em uma ordem de magnitude para determinar como a função de entrada responde.

③ No sistema operacional virtual, são necessários casos de teste que exigem a quantidade máxima de memória ou outros recursos, ou são gerados dados excessivos de armazenamento em disco.

Em circunstâncias normais, o sistema deve ser testado repetidamente. Devido às limitações de tempo e funções do sistema, o sistema não pode ser perfeito. Portanto, é necessário examinar vários métodos de teste em conjunto.

Teste de força

O teste de força verifica a resistência de um programa a condições anormais. O teste de estresse sempre força o sistema a funcionar sob configurações de recursos anormais. Por exemplo, ① Quando a frequência normal de interrupções é de uma a duas por segundo, execute um caso de teste que gere dez interrupções por segundo; ② Aumente quantitativamente a taxa de entrada de dados para verificar a capacidade de resposta da subfunção de entrada; ③ O máximo espaço de armazenamento necessário para a operação (ou outros recursos); ④ Execute casos de teste que podem causar falha no sistema operacional da memória virtual ou oscilação violenta dos dados do disco, etc.

Teste de performance

    Para esses sistemas embarcados e em tempo real, mesmo que a parte do software atenda aos requisitos funcionais, ela pode não ser capaz de atender aos requisitos de desempenho. Embora, a partir do teste de unidade, cada etapa do teste inclua testes de desempenho. O testador líder acredita que apenas depois que o sistema estiver verdadeiramente integrado, ele não será capaz de atender aos requisitos de desempenho no ambiente real.O teste de desempenho do sistema é projetado para realizar essa tarefa, a fim de testar de forma abrangente e confiável o desempenho operacional. Os testes de desempenho às vezes são combinados com testes de resistência e geralmente requerem o suporte de outros softwares e hardwares.

6.1.3  Significância e precauções do teste

    O teste de software é um elo extremamente importante no processo de design de software e uma importante garantia para garantir a qualidade do software. A qualidade do método de teste afetará diretamente a qualidade do software.O teste de software pode identificar erros e deficiências e melhorá-los, obtendo assim um sistema eficiente e confiável.

    O software deve ser testado e analisado de vários ângulos para que erros possam ser encontrados. É melhor encontrar pessoas que não tenham nada a ver com o sistema de design ou analistas durante os testes. Porque ao desenvolver software, os desenvolvedores formaram sua própria mentalidade e estão sempre vinculados a essa mentalidade durante os testes. É difícil encontrar erros e é fácil para pessoas e analistas que não têm nada a ver com o design encontrá-los. Onde está o erro ocorreu.

Você deve ser paciente e cuidadoso durante o processo de depuração do programa. Um pequeno erro fará com que toda a função não possa ser realizada e muito tempo será perdido para modificá-la. Deve-se prestar atenção aos seguintes aspectos:

    1> Erro gramatical

    Erros de sintaxe são erros encontrados com frequência. Por exemplo, um comando digitado incorretamente ou parâmetros incorretos passados ​​para uma função gerarão um erro. Erros de sintaxe podem impedir que você continue escrevendo código.

    2> Erro lógico

    Erros lógicos muitas vezes podem ser latentes e difíceis de detectar. Quando há erros lógicos causados ​​por erros de digitação ou fluxo lógico do programa, ele pode ser executado com sucesso, mas os resultados produzidos estão errados. Por exemplo, quando um sinal de maior que é usado em vez de comparar valores, quando um sinal de menor que deveria ser usado, resultados incorretos serão retornados.

    3> Erro de tempo de execução

    Erros de tempo de execução são causados ​​por instruções que tentam realizar ações impossíveis durante a execução. Os erros de tempo de execução devem ser corrigidos para garantir a confiabilidade da operação do software.

    Durante o processo de desenvolvimento deste jogo, uma variedade de medidas eficazes foram usadas para testes para garantir a qualidade do software.O jogo foi testado para rotação de limites, inversão de blocos e testes transfronteiriços, o que garantiu grandemente a qualidade do software e as taxas de erro. No entanto, ainda pode haver alguns outros erros e defeitos no sistema, portanto, o jogo deve passar por repetidos testes de execução para minimizar ao máximo os bugs.

6.2 Teste de códigos e algoritmos de jogos

    1> Ao escrever o método get(), um valor de retorno é necessário, mas não há instrução de retorno no programa, causando um erro quando o programa é compilado. A solução é adicionar uma instrução return ao método e retornar o conteúdo correspondente.

    2> Ao usar uma função aleatória para gerar blocos, nenhum parâmetro é passado para cada bloco e a compilação não pode passar. A solução é passar os parâmetros correspondentes de acordo com a construção de cada bloco.

    3> Ao escrever a posição padrão de cada quadrado do quadrado em forma de T, inicialize a variável i que controla a posição do quadrado como 0. O resultado da operação é que o quadrado em forma de T se torna um quadrado vertical por padrão. A solução é alterar o valor de inicialização da variável i para 1 para obter o efeito projetado.

    4> Ao executar o programa, as pontuações estatísticas são apenas as pontuações após a eliminação de cada linha completa, e as pontuações anteriores serão substituídas e não haverá acúmulo. A solução é alterar o "score=" do programa para "score+=", para que as pontuações possam ser acumuladas.

    5> Os erros no processo do algoritmo concentram-se principalmente em como detectar e eliminar blocos, como processar o acúmulo de pontuações após passar de nível e se atualizar.Esses aspectos foram finalmente resolvidos após discussões com colegas e materiais de referência.

6.3 Teste funcional das opções do menu da interface do jogo

1> Teste do menu “Jogo”

Tabela 6.1 Caso de teste do menu do jogo

Número do caso de teste

Nome do projeto de teste

Etapas de execução de teste

saída

Resultado dos testes

01

Teste do botão "Iniciar"

Clique em "Jogo" → "Iniciar"

reinicialização do jogo

sucesso

02

Teste do botão "Finalizar jogo"

Clique em "Jogo" → "Finalizar jogo"

game Over

sucesso

03

Teste de botão "básico"

Clique em "Jogo" → "Básico"

O nível do jogo é selecionado como iniciante

sucesso

04

Teste do botão "Intermediário"

Clique em "Jogo" → "Intermediário"

O nível do jogo é selecionado como intermediário

sucesso

05

Teste do botão "Avançado"

Clique em "Jogo" → "Avançado"

O nível do jogo está selecionado como Avançado

sucesso

06

Teste de botão "Personalizado"

Teste de botão "Personalizado"

Uma caixa de diálogo é exibida para alterar informações personalizadas

sucesso

07

Teste deslizante "Velocidade de queda"

Clique em "Jogo" → "Personalizar" → "Velocidade de queda"

Arraste o controle deslizante para alterar a velocidade de queda do bloco

sucesso

08

Teste de botão de opção "Forma de bloco"

Clique no botão de opção "Jogo" → "Personalizar" → "Forma do bloco"

Você pode escolher a forma do bloco entre elementar, intermediário ou avançado para alterar a forma do bloco.

sucesso

09

Teste da caixa de seleção "Se a caixa subirá automaticamente"

Clique na caixa de seleção "Jogo" → "Personalizar" → "Se o bloco subirá automaticamente"

Você pode verificar os quadrados pequenos. Se você marcá-los, os quadrados subirão automaticamente. Se você não marcá-los, os quadrados não subirão automaticamente.

sucesso

10

Teste da caixa de seleção "Reproduzir som durante o jogo"

Clique na caixa de seleção "Jogo" → "Personalizar" → "Se reproduzir sons durante o jogo"

Você pode marcar a pequena caixa. Se estiver marcada, o som será reproduzido durante o jogo. Se não estiver marcada, o som não será reproduzido durante o jogo.

sucesso

11

Caixa de seleção "Alterar plano de fundo"

Clique na caixa de seleção "Jogo" → "Personalizar" → "Se reproduzir sons durante o jogo"

Você pode marcar o pequeno quadrado. Se você selecioná-lo, a imagem de fundo do jogo será alterada. Se você desmarcar, a imagem de fundo do jogo não será alterada.

sucesso

12

Teste do botão OK e Cancelar

Clique no botão "Jogo" → "Personalizar" → "OK" ou "Cancelar"

Clique em OK para salvar as configurações alteradas e sair da caixa de diálogo; clique em Cancelar para sair da caixa de diálogo sem alterar as configurações.

sucesso

13

Teste do botão "Bloquear cor"

Clique em "Jogo" → "Bloquear cor"

Uma caixa de diálogo é exibida e você pode alterar a cor do bloco, HSB, RGB e outras informações personalizadas.

sucesso

14

Teste do botão "Sair"

 Clique em "Jogo" → "Sair"

Saia do jogo e feche a janela principal da interface

sucesso

2> Teste do menu "Ajuda"

Tabela 6.2 Caso de teste do menu "Ajuda"

Número do caso de teste

Nome do projeto de teste

Etapas de execução de teste

saída

Resultado dos testes

15

Teste do botão "Sobre"

Clique em "Ajuda" → "Sobre"

Uma caixa de diálogo aparece, solicitando a versão do jogo e outras informações.

sucesso

6.4 Testes funcionais de eventos-chave

Tabela 6.3 Principais casos de teste de função de evento

Número do caso de teste

Nome do projeto de teste

Etapas de execução de teste

saída

Resultado dos testes

16

Teste de movimento de bloco

Durante o jogo, clique em "Esquerda, Direita, Baixo"

Os blocos se movem normalmente e não sairão dos limites

sucesso

17

Teste de rotação de bloco

Durante o jogo, clique na tecla de direção "para cima"

Os blocos podem ser revertidos sem fronteiras ou obstáculos.

sucesso

6.5 Teste de função de empilhamento e eliminação de blocos

Tabela 6.4 Casos de teste da função de empilhamento e eliminação de blocos

Número do caso de teste

Nome do projeto de teste

Etapas de execução de teste

saída

Resultado dos testes

18

Teste de empilhamento de blocos

Quando o bloco cai no fundo ou entra em contato com um obstáculo

Os blocos foram empilhados com sucesso na parte inferior

sucesso

19

Teste de eliminação de bloco

Quando ocorre uma linha completa

Todas as linhas completas são eliminadas e os blocos descem um por um.

sucesso

20

teste de fim de jogo

Quando a tela está cheia

Uma janela de sessão aparece, solicitando "Game Over"

sucesso

6.6  Resultados do teste

Após vários métodos de teste para testar vários aspectos e funções do sistema, os resultados do teste mostram que o sistema atende basicamente aos requisitos gerais de design e que as funções esperadas estão basicamente concluídas. O sistema pode basicamente atender aos requisitos no início do projeto e desenvolvimento e o teste termina.No entanto, a função geral não é poderosa o suficiente e a inovação é um pouco inferior.Como a primeira versão de desenvolvimento, o jogo ainda precisa de melhorias adicionais em muitos aspectos, como funções e design de interface.

para concluir

Antes de fazer meu projeto de graduação, meu desenvolvimento relacionado a Java era apenas no nível de conhecimento teórico. Este projeto de graduação me fez entender o princípio de "o que você aprende no papel é, em última análise, superficial, mas você deve praticar se souber." " A falta de experiência real em desenvolvimento de software é a conclusão que tirei para mim mesmo. Através deste projeto de graduação, concluí todas as tarefas de desenvolvimento do jogo Tetris. Encontrei muitos problemas durante todo o processo de desenvolvimento, como desenho e deformação de blocos, problemas de criação de thread, controle de sincronização, julgamento completo de linha, processamento de eliminação de linha e implementação da função de registro de pontuação mais alta, mas no final resolvi um por um. , alguns dos pontos mais importantes são resumidos a seguir:

Primeiro, para me familiarizar com as funções relacionadas e o design do Tetris, costumo baixar a versão autônoma do jogo Tetris dos principais sites de download de jogos e estudar a implementação das funções e o design da interface, pensar e consultar os dados para análise e design gradual Após repetidas modificações e argumentos, o desenvolvimento de todo o jogo foi concluído.

Em segundo lugar, no processo de design do jogo, adoto o padrão de design do básico ao fino e o princípio de teste do pequeno ao grande. Primeiro projete a estrutura do jogo e teste-a camada por camada, depois adicione código de implementação específico e conduza gradualmente testes mais detalhados. Durante o processo de design, muitas vezes encontro problemas. Através de pensamentos e testes repetidos, descobrirei meus erros e os corrigirei, e então prosseguirei para a próxima etapa para garantir que nada dê errado e tentarei o meu melhor para reduzir a carga de trabalho de depuração final.

Em terceiro lugar, a indústria do design de graduação pode ser considerada como um processo de aprendizagem constante de coisas novas.Desde a não compreensão do design no início até a conclusão bem-sucedida no final, percebo a importância do aprendizado contínuo na prática, o que é importante para mim entrar no trabalho no futuro.significado educacional. Através da criação do meu projeto de graduação, tive um conhecimento mais profundo do curso Java, que também lançou uma base certa para o meu futuro emprego.

O projeto de graduação é a última etapa do nosso estágio de aprendizagem como estudantes. É uma aplicação abrangente de conhecimentos básicos e conhecimentos profissionais. É um processo abrangente de reaprendizagem e, em seguida, de melhoria. O processo de capacidade de aprendizagem dos alunos, pensamento independente e capacidade de trabalho é também um treinamento e graduação O nível de design também reflete o nível abrangente de educação universitária, por isso a escola atribui grande importância ao design de graduação e fortalece a orientação do trabalho de design de graduação e da educação de mobilização. No processo de estudo universitário, o projeto de graduação é uma parte importante da nossa participação social no trabalho prático, é também para a nossa capacidade de aprender e resolver problemas da vida, e é uma transformação da vida escolar e da vida social. Após concluir meu projeto de graduação, procurei integrar o projeto de pesquisa e o trabalho prático. Isso é mais propício para fortalecermos nossas habilidades.

Após um período de muito trabalho e com a ajuda de alguns colegas e professores, finalmente concluí meu projeto de formatura, o que é uma tarefa importante. Olhando para trás em nosso processo de design, pode-se dizer que dificuldade e facilidade coexistem. Entre eles, incorporar o conhecimento aprendido na universidade é na verdade um grande desafio para mim, e também é um teste de conhecimento universitário. 

No processo de projeto de graduação, encontramos muitas dificuldades, e muitas delas eram problemas que nunca havíamos encontrado antes. Se não fizéssemos nós mesmos, poderia ser difícil encontrar o conhecimento que nos falta até certo ponto. Para nós, encontrar o problema, Para resolver o problema, este é o mais prático. Diante de problemas difíceis de resolver sozinho, esses problemas podem ser resolvidos com a ajuda de professores e alunos na obtenção de algumas informações, para que o projeto de graduação seja concluído com sucesso. Entende-se que o conhecimento deste projecto ainda é muito profundo, pelo que devemos continuar a explorar não só agora, mas também no futuro.

A combinação entre teoria e prática inclui não apenas o conhecimento da participação em sala de aula, mas também a combinação de treinamento de competências e orientação sobre como os alunos entendem e entram em contato com coisas socialmente relevantes. Os projetos de graduação dos alunos, sob a orientação do conhecimento teórico profissional, podem resolver alguns problemas práticos de diversas maneiras. Durante o processo de design, os alunos podem utilizar o conhecimento teórico para a prática, não apenas para aprofundar sua compreensão do conhecimento teórico profissional, mas também para enriquecer e desenvolver o conhecimento teórico deste livro e transformá-lo em experiência e habilidades de nível superior. Devido ao modelo de ensino existente, existe uma séria separação entre o conhecimento e as habilidades teóricas e a prática de produção. Os alunos são incapazes de aprender o conhecimento fora da sala de aula. Os problemas práticos de produção são muitas vezes irrelevantes para a aprendizagem e não podem ser aplicados de forma eficaz. Através de uma seleção razoável de tópicos, os alunos são orientados a usar conscientemente sistemas de conhecimentos e habilidades para analisar e pensar, e contribuir para a integração orgânica do conhecimento teórico e da prática.

A sociedade está em constante mudança. Atualmente, a sociedade está se transformando e se desenvolvendo, e as exigências de talentos estão cada vez maiores. Use a perspectiva para analisar os problemas, aprender a inovar e aprender a se adaptar às exigências do desenvolvimento social. Fora da escola, entre na sociedade, aproveite as oportunidades de hoje e crie o futuro. A influência e o conhecimento do professor me permitiram compreender muitas verdades e enfrentar os desafios futuros com certo espírito inovador. 

    Resumindo, para este projeto de graduação, sinto que não só me familiarizei mais com alguns conhecimentos profissionais do que antes, mas também exercitei minha habilidade prática e sinto que ganhei muito. Ao mesmo tempo, você também terá uma pequena sensação de realização porque trabalhou duro durante esta tarefa. No futuro trabalho real, devemos também trabalhar duro, não buscando o melhor, apenas buscando o melhor! Além disso, gostaria de expressar minha sincera gratidão aos meus instrutores e colegas de classe pela ajuda neste processo de projeto de formatura!

O programa atende basicamente às necessidades dos usuários tanto técnica quanto funcionalmente. No entanto, devido ao design inicial, as funções não são suficientemente perfeitas e os detalhes do design ainda são 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 um fenômeno psicológico típico denominado "Efeito Zaigarnik", em homenagem ao psicólogo russo Bruma Zegarnik. Na década de 1830, Zeigarnik descobriu num café movimentado que os garçons tinham lembranças incríveis – mas apenas até a refeição ser entregue. Eles conseguem se lembrar do que uma mesa de 12 pessoas pediu, mas depois que a comida e as bebidas são servidas, eles esquecem tudo e não conseguem se lembrar de suas memórias anteriormente sólidas. Zeigarnik deu o nome de si mesmo a esse fenômeno de persistir na memória tarefas inacabadas.

O Efeito Zeigarnik é uma das razões pelas quais os programas de inteligência são tão populares. Você pode não se importar em que ano a BBC foi fundada ou quantos países no mundo têm pelo menos um McDonald's, mas quando surgir uma pergunta como essa, você se sentirá desconfortável se não souber a resposta (a propósito, a resposta é 1927 e 61%). As perguntas permanecem em sua mente até serem respondidas.

Princípio do jogo

Tetris mantém nossos nervos sob controle criando tarefas constantemente. Cada link do jogo nos leva a resolver um mistério: depois de alinhar ou completar uma coluna, os gráficos desaparecem, mas novos aparecem constantemente e o ciclo recomeça. Cadeias de tarefas parcialmente resolvidas e recém-formadas são muito convenientes para passar o tempo, e sentimentos repetidos de satisfação e ansiedade preenchem cada momento.

Outra razão para a popularidade do Tetris é que as tarefas a serem concluídas são justapostas com soluções potenciais - cada um dos blocos que surgiram gradualmente tem sua própria forma de posicionamento. Tetris é um mundo visual simples onde soluções podem ser alcançadas rapidamente manipulando cinco botões (esquerda, direita, virar à esquerda, virar à direita e pousar, é claro). Estudos com jogadores de Tetris mostram que as pessoas geralmente preferem girar os blocos para ver se combinam, em vez de pensar nisso enquanto observam os blocos caírem. É claro que ambos os métodos são possíveis, mas no mundo do Tetris é a acção que vem sempre em primeiro lugar - e essa é a chave do apelo. Ao contrário da vida, Tetris conecta diretamente o que vemos e pensamos ao lidar com problemas, e podemos tomar medidas imediatas sobre o problema.

O efeito Zeigarnik é a descrição de um fenômeno, mas não pode explicar sua causa e efeito. Este é um truque comum usado pelos psicólogos. Parece que eles resolveram os mistérios dos seres humanos dando-lhes nomes. Na verdade, tudo o que fizeram foi nomeá-los avidamente com seus próprios nomes e não resolveram o problema de forma alguma. Uma explicação razoável para esta realidade é que os circuitos cerebrais se reorganizam no processo de atingir objetivos. Se esse objetivo for alcançado, os pensamentos passarão para outras coisas.

Os jogos de quebra-cabeça exploram o princípio da realização psicológica para nos frustrar continuamente até que estejamos satisfeitos. Tetris vai um passo além ao criar uma cadeia contínua entre o fracasso e o sucesso. Como um parasita inteligente, o Tetris explora o prazer psicológico das pessoas ao completar e reutilizar jogos. À medida que jogamos, nos deleitamos brevemente com a diversão de organizar os blocos, mesmo que a parte racional e madura da nossa personalidade entenda que este é basicamente um jogo sem sentido. Mas não é esse o caso de todos os jogos divertidos, certo?

Referências:

Projeto de graduação do sistema de jogo Tetris baseado em Java (relatório do projeto + defesa PPT + código fonte + banco de dados + screenshots + vídeo de implantação) icon-default.png?t=N5K3https://download.csdn.net/download/dwf1354046363/87813602

174 exemplos de projetos de graduação em Java, incluindo vídeos de implantação_Blog de Yi Xiaoxia-blog CSDN Vários projetos de graduação em Java são escolhidos por você mesmo e há mais de 160 conjuntos de projetos de graduação em Java com vídeos explicativos e uma coleção https://cv2022.blog.csdn .net/article/details/124463185?spm=1001.2014.3001.5502

Acho que você gosta

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