-Tutorial 01-
-Tutorial 02-
Para animar nosso jogo irei usar as coordenadas x e y e para isso criei uma função que aumenta o valor de duas variáveis criadas, x e y são as coordenadas de um círculo. Para criar esse círculo usamos a setRenderingHint, e o anti-aliasing para deixar a imagem melhor, então para evitar que o círculo fique marcado por onde passa utilizei o comando super.paint() que limpa a tela.
Depois adicionei um Game Loop para que o jogo funcione, fique em um ciclo infinito e não pare. Foi preciso uma repetição dos métodos para que o jogo se atualizasse o tempo todo.
-Tutorial 03-
Nessa parte fiz a bolinha bater na tela como se fosse uma barreira e que ela fosse para outro lado ao bater assim ficaria delimitada apenas na janela na qual visualizamos, para isso comecei criando uma lógica para bolinha as coordenadas dela e com isso vou definir a velocidade na qual ela vai se mover dentro da janela, coordenadas x e y. Para que a bolinha perceba que está perto da borda e assim retorne usei "if" que vai checar se a coordenada fica negativa ou passa do limite, e se acontecer, a bolinha receberá um valor que coloque ela para se mover ao contrário.
Depois disso criei uma classe para a bola onde vão estar suas funcionalidades e só vai precisar chamar os seus métodos na classe Game. Então criei uma classe chamada Ball e passei todo o código para ela, para que tudo funcionasse certinho criei uma variável game do tipo Game dentro da classe Ball. Depois criei um método para que pintasse a bolinha da tela dentro da classe Ball e dentro da classe Game chamei um método construtor da classe Ball.
O joguinho funciona como antes, só que agora deixamos mais organizado.
-Tutorial 04-
Nessa parte trabalhei em como usar o teclado no joguinho, utilizamos dois recursos o KeyEvent, que trabalha com o código da tecla pressionada, e o KeyListener, que trabalha detectando os eventos que irão acontecer ao pressionar ou soltar. Criei um método construtor para a classe e nela criei um objeto do KeyListener (MyKeyListener), na classe KeyboardExample criei outra, e nela coloquei tres metodos, keyTyped, keyReleased e keyPressed.
E agora quando executamos o programa e apertamos uma tecla ou solta ela, o NetBeans receberá uma informação dessa ação realizada e o evento selecionado irá acontecer.
-Tutorial 05-
Agora vou juntar o conceito de utilizar teclas e eventos do teclado e executar algo com isso.
Criei uma classe que vai ser a raquete que vamos controlar e utilizar para rebater a bolinha, para criá-la utilizar variáveis para marcar as coordenadas e um construtor para definir a variável do tipo Game e usarmos seus métodos, para raquete será utilizada apenas a coordenada x, ela vai se mover apenas na horizontal. Depois disso vou implementar a detecção dos eventos ao teclar no teclado e usar eles para mover a raquete, para isso precisei que a classe game conseguisse acionar os eventos do teclado, dentro dos eventos que quero utilizar vou chamar métodos dentro da classe Raquete, esses métodos são os intuitos, sempre que por apertada/soltada um teclado evento vai acionar o método da tecla e usar de parâmetro essa tecla.
-Tutorial 06-
Aqui vi como pode utilizar a colisão no programa, a bolinha tem que rebater na raquete e para isso precisa-se da colisão entre elas, o programa precisa saber o momento certo de executar a colisão entre elas, então para isso utilizei a classe Rectangle do pacote Awt para definir a área de colisão da bolinha e da raquete, então criei um método desse tipo nas classes da Raquete e da bolinha.
Depois disso criei o método que vai informar a área da raquete e da bolinha, esse método vai retornar o objeto do tipo Rectangle que tem valores e posições iguais dos elementos das classes. Agora será preciso criar um método que vai identificar que a bolinha e a raquete está colidindo ou não e que esse método tem que alterar a posição da bolinha, os dois métodos serão implementados na classe Ball.
Para isso coloquei um if para verificar se a colisão é verdadeira, se for a aceleração de y da bolinha vai ser negativo. O método de identificar colisão identifica se é verdadeiro ou falso. Dentro da classe game tem um método de gameover que será acionado caso a bolinha passe da raquete e atinja o fundo da janela, isso informa que o jogo acabou e aparecerá um botão de OK e ao clicar sairá do jogo. Ao concluir esse processo o programa vai estar funcionando, mas precisa de mais alguns passos para se tornar realmente um jogo.
-Tutorial 07-
-Tutorial 08-
Sempre que a bolinha atualizar vai ser criada uma variável que informa que a bola trocou de direção ou não, a variável vai determinar se o som deve tocar ou não. O gameover eu implementei um método gameover da classe Game, e nesse método chamei outro para o loop back tocar o áudio de gameover.
-Tutorial 09-
Nesse passo vou deixar o jogo mais difícil quanto mais o jogador jogar, a raquete vai se movendo mais rápido assim como a bolinha. Na classe game, dentro dela criei uma variável de interagir (speed), ela que vai representar a pontuação do jogador e vou alterar a velocidade da bolinha e da raquete, ela começa com 1 para mostrar a pontuação do jogo. Para usar essa variável preciso apenas usar no lugar de 1 e -1 que estava alterando as coordenadas da bolinha e da raquete, depois precisei fazer a speed aumentar ao bater com a raquete e nisso eu usei o ++ para colocar 1 no valor dessa variável.
Para mostrar a pontuação no método paint da Game usei o drawstring que possibilita desenhar um texto na tela, dentro da drawString usei o String.ValueOf para definir a posição x e y do texto.
Agora na tela é mostrada a quantidade de pontos que o jogador consegue fazer.
Oi Thays, se atente à maneira como o enunciado pede: um post para cada parte. Isso tem um por quê!!! Além disso, não sei de onde tiraram que só bastava entregar o JAR quando eu pedi no enunciado para compactarem a pasta do projeto e entregarem a pasta compactada, ou seja, os fontes.
ResponderExcluirO ultimo trabalho era o mais completo e que exigia um pouco mais da autoria de vocês. Não foi interessante vocês desistirem de entregar o resultado. Afinal, eu praticamente resolvi o trabalho na aula de 01/07. Ficou faltando pouca coisa.
ResponderExcluir