Inicializando o Jogo: A Roda da Fortuna Versão 1

Tempo de leitura: 4 min

Escrito por Michel Adriano Medeiros
em 03/07/2020

Começando a Programar o Jogo

A estrutura de dados do Array e ArrayList pavimentou a estrada para implementar o jogo Roda Da Fortuna em texto. Já descrevemos a estória do jogo. Agora vamos começar a fazer a primeira versão.

A estrutura é feita de dois tipos de objetos: o initializer e o player como as interações entre eles. Apesar de o jogo Roda da Fortuna 1 ter três jogadores, qualquer jogador pode entrar no jogo, contudo somente um jogador joga por vez.

Para ficar mais fácil o desenvolvimento do joga na sua primeira versão, vamos apenas fazer o jogo com um jogador. Vamos ver algumas ações do jogo:

InitializerPlayer
1. Crie uma palavra ou frase2. O jogador insere um caractere qualificado
3. Verifica se o caractere existe na palavra ou frase4. Se o jogador acertar vá para o passo2. Se o jogador errar, o próximo jogador inicia no passo 2.

A Roda da Fortuna 1, inicia com uma palavra ou frase, o qual é um tipo de String, o jogador insere um caractere que é um tipo char. Assim que o jogador insere o caractere, o caractere é buscado dentro da palavra.

Como mencionado, um String é diferente de um array de char. Felizmente, uma String também consiste em caracteres. A classe String tem um método charAt() que pode adotar para procurar char individuais inseridas pelo jogador.

O resultado da busca pode não dar certo, ache um caractere ou mais. O caractere encontrado está indexado em uma posição que pode ser mostrado em um campo onde está guardada a palavra ou frase. Devido ao fato de não sabermos quantas vezes o jogador irá acertar o caractere, podemos utilizar o ArrayList<Integer>.

A Primeira Versão

Nessa primeira versão, vamos ignorar as funcionalidades e ações do painel que mostra os caracteres. Vamos implementar apenas algumas funcionalidades, tais como o initializer e o jogador(player) que estiver jogando.

Vamos ter quatro classes no jogo, vejamos o diagrama.

A classe de UML indica que a classe main WheelFortune.java “utiliza” a classe GamePanel.java. Aqui, “utiliza” significa que a classe WheelFortune.java instância um objeto da classe GamePanel.java e “utiliza” funcionalidade para completar tarefas atribuídas a ele.

O Pseudo Código

Com isso, a classe GamePanel.java utiliza a classe Initializer.java e Player.java. Isso significa que a classe GamePanel.java “utiliza” as funcionalidades dos dois objetos e fornece uma comunicação que permite trabalharem juntos para realizar o objetivo do jogo. O pseudo código do jogo Roda da Fortuna 1 pode ficar assim.

1. O projeto Roda da Fortuna 1 tem quatro classes: WheelFortune.java, GamePanel.java, Initializer.java e Player.java.

2. A classe principal WheelFortune1.java instância um objeto gamePanel da classe GamePanel.java.

3. A classe GamePanel.java faz o seguinte:

a) Instância um objeto initializer da classe Initializer.java e um objeto da classe Player.java

b) Chama initializer.initSentence() para inicializar a frase “Hello World.”

c) Chama player.inputGuess() para deixar o jogador inserir um guessedChar (letra que o jogador acha que tem na frase).

d) Passa o guessedChar para o método initializer.receiveGuess(), o qual procura o guessedChar pela frase. Se a letra for encontrada, o indexador na frase é adicionado dentro do ArrayList idxList. Depois de terminado o processo, o método retorna o idxList para a classe GamePanel.java.

e) Se o idxList estiver vazia, significa que a letra não foi encontrada, o programa termina a execução.

f) Se o idxList não estiver vazia indica que pelo menos uma letra foi encontrada, o jogador continua seu jogo indo para o passo 3.

A classe GamePanel.java implementa a “raiz” do programa e a “raiz” tem um “while” até o passo 3f e começa no 3c. Os métodos correspondentes são despachados das classes Initializer.java e Player.java correspondentemente.

O maior recurso é o método initializer.receiveGuess() que procura na palavra a letra guardada no guessedChar. Vamos ao código.

Classe Initializer.java do projeto Roda da Fortuna 1

O método initializer.receiveGuess(inputChar) demonstra a partida em processo. A sentence é uma String, mas o parâmetro inputChar é um simples char.

O  método charAt() da classe String é invocado com um simples caractere da sentence e compara com o inputChar.

Esse código adiciona o “index” dentro do ArrayList idxList para ser utilizando mais tarde. O “for” inicia no index 0 e vai até o (sentence.length() – 1) para comparar o inputChar com todos os caracteres da sentence. Assim que o “for” terminar, o ArrayList idxList irá guardar todos os indexes que ocorreram da partida.

O método initializer.receiveGuess() é modelado como uma função, o qual retorna o ArrayList idxList para chamar o gamePanel. O gamePanel checa o tamanho do idxList e mostra no console da aplicação. Se o guessedChar não encontrar nenhuma letra, o programa é terminado.

O jogo ainda não vai funcionar porque não temos as outras classes para fazer a execução do jogo. Mas logo teremos.

https://www.youtube.com/watch?v=PQ8K6nINzf4

Curso Java Para Iniciantes

Fonte: Learning Java with Games

Você vai gostar também:

Para enviar seu comentário, preencha os campos abaixo:

Deixe um comentário


*


*


Seja o primeiro a comentar!

Damos valor à sua privacidade

Nós e os nossos parceiros armazenamos ou acedemos a informações dos dispositivos, tais como cookies, e processamos dados pessoais, tais como identificadores exclusivos e informações padrão enviadas pelos dispositivos, para as finalidades descritas abaixo. Poderá clicar para consentir o processamento por nossa parte e pela parte dos nossos parceiros para tais finalidades. Em alternativa, poderá clicar para recusar o consentimento, ou aceder a informações mais pormenorizadas e alterar as suas preferências antes de dar consentimento. As suas preferências serão aplicadas apenas a este website.

Cookies estritamente necessários

Estes cookies são necessários para que o website funcione e não podem ser desligados nos nossos sistemas. Normalmente, eles só são configurados em resposta a ações levadas a cabo por si e que correspondem a uma solicitação de serviços, tais como definir as suas preferências de privacidade, iniciar sessão ou preencher formulários. Pode configurar o seu navegador para bloquear ou alertá-lo(a) sobre esses cookies, mas algumas partes do website não funcionarão. Estes cookies não armazenam qualquer informação pessoal identificável.

Cookies de desempenho

Estes cookies permitem-nos contar visitas e fontes de tráfego, para que possamos medir e melhorar o desempenho do nosso website. Eles ajudam-nos a saber quais são as páginas mais e menos populares e a ver como os visitantes se movimentam pelo website. Todas as informações recolhidas por estes cookies são agregadas e, por conseguinte, anónimas. Se não permitir estes cookies, não saberemos quando visitou o nosso site.

Cookies de funcionalidade

Estes cookies permitem que o site forneça uma funcionalidade e personalização melhoradas. Podem ser estabelecidos por nós ou por fornecedores externos cujos serviços adicionámos às nossas páginas. Se não permitir estes cookies algumas destas funcionalidades, ou mesmo todas, podem não atuar corretamente.

Cookies de publicidade

Estes cookies podem ser estabelecidos através do nosso site pelos nossos parceiros de publicidade. Podem ser usados por essas empresas para construir um perfil sobre os seus interesses e mostrar-lhe anúncios relevantes em outros websites. Eles não armazenam diretamente informações pessoais, mas são baseados na identificação exclusiva do seu navegador e dispositivo de internet. Se não permitir estes cookies, terá menos publicidade direcionada.

Visite as nossas páginas de Políticas de privacidade e Termos e condições.

Importante: Este site faz uso de cookies que podem conter informações de rastreamento sobre os visitantes.
Criado por WP RGPD Pro