Name This Game

Modelos


Protótipo Geral Interativo
*Clique na janela do jogo e use SPACE para atirar e RIGHT e LEFT para se mover*

Temos acima os protótipos:

  1. Movimento do Mergulhador
  2. Tiro de Arpão
  3. Movimento da Lancha
  4. Movimento do Tubarão
  5. Morte do Tubarão

  • Animação de quadros
    1. Todos os personagens possuem uma animação de alguns quadros. O módulo da variável de tempo representa qual quadro de movimento será exibido.
      Resto de tempo dividido por número de quadros, resultará no quadro em questão.

      Resto(tempo/quantQuadros) = quadroAtual

      quantQuadros = 2;
      switch (temp%quantQuadros)
      ___ case 0:
      ___ ___ Imagem(01);
      ___ case 1:
      ___ ___ Imagem(02);
    2. Um boleando na movimentação dirá se vai para a direita ou para a esquerda;

      DiraçãoDireita = true/false;

  • Movimentação
    1. Para mover horizontalmente a cada intervalo de tempo a localização no eixo X irá incrementar o valor da velocidade. Para direita irá somar, para esquerda subtrair;

      eixoX = eixoX + velocidade

      posiçãoX = posiçãoX + velocidade;
      if(direção == direita)
      ___ velocidade = +5;
      else
      ___ velocidade = -5;
    2. O mergulhador só se moverá com o clique das respectivas teclas;
    3. A lancha, ao sua extremidade tocar a borda da janela o sentido do movimento será trocado;

      eixoX >= larguraMaximaDaJanela;
      eixoX <= larguraMinimaDaJanela;

      if(xLancha >= LarguraDaJanela)
      ___ direção = esquerda
      if(xLancha <= 0)
      ___ direção = direita
    4. O Tubarão tem a mesma movimentação da lancha com um acréscimo, quando ele inverte o movimento ele aumenta sua velocidade e desci (soma) um pouco mais no eixo Y;

      velocidade = velocidade + nivelDificuldade;
      eixoY = eixoY + alturaTubarao/2;

      if(xTubarão >= LarguraDaJanela)
      ___ direção = esquerda;
      else if(xTubarão <= 0)
      ___ direção = direita;

      velocidadeTubarão += 5;
      yTubarão += 25;
  • Mergulhador
    1. Para atirar o arpão, ao clicar no SPACE será gravado o X do jogador, e o projetio será lançado, a partir da altura do mergulhador até a superfície;

      eixoYArpao = eixoXMergulhador;
      eixoY = eixoY - velocidadeArpão;

      if(SPACE)
      ___ xArpão = xMergulhador;
      ___ atirar = true;
      ___ yArpão = yMergulhador;

      if(atirar)
      ___ yArpão -= velocidadeArpão;

      if(yArpão > ySuperficie)
      ___ atirar = false;
    2. Caso o jogador toque na mangueira de oxigênio, sua barra de vida aumenta. e Também recebe 10 pontos;

      ( eixoXMergulhador + larguraMergulhador/2 ) > eixoXMangueira
      and
      ( eixoXMergulhador - larguraMergulhador/2 ) < eixoXMangueira

      if(xMergulhador + 50 > xMang && xMergulhador - 50 < xMang)
      ___ oxi += 3;
      ___ ponto += 10;
  • Companheiro da lancha
    1. A cada time “definido como 10 segundos”, cria uma linha com o ponto inicial XLancha e YLancha e como ponto final XLancha e YMergulhador;

      Resto( tempo / Segundos * frameRate ) == 0

      if(temp%( 10 segundos * frameRate) == 0)
      ___ line(xLancha, yLancha , xLancha, yMergulhador);
  • Tubarão
    1. Se o XArpao e YArpao estiver em contato com o XTubarão e YTubarão, o XTubarão será alterado para XTubarãoInicial e YTubarãoInicial com VelocidadeTubarãoInicial. Acrescentando ainda 100 a variavel Ponto;

      ( eixoXTubarão + larguraTubarão/2 ) > eixoXArpão
      and
      ( eixoXTubarão - larguraTubarão/2 ) < eixoXArpão
      and
      ( eixoYTubarão + alturaTubarão/2 ) > eixoYArpão
      and
      ( eixoYTubarão - alturaTubarão/2 ) < eixoYArpão

      if(
      ___ xTubarão + 50 > xArpao && xTubarão - 50 < xArpao &&
      ___ yTubarão + 20 > yArpao && yTubarão - 20 < yArpao
      )
      ___ xTubarão = xTubarãoInicial
      ___ yTubarão = yTubarãoInicial
      ___ vTubarão = VelocidadeTubarãoInicial
      ___ Ponto +=100
      ___ atirar = false
      ___ xArpão = 0
    2. Quando o yTubarão for igual ao YMergulhador, a imagem do tubarão será alterada para o mergulhador sendo devorado e o mergulhador irá desaparecer. Após o tubarão se retirar da tela, a quantidade do tesouro irá diminuir e o mergulhador irá reaparecer;

      eixoYTubarão == eixoYMergulhador

      if(YTubarão == YMergulhador)
      ___ imagemTubarão = TubarãoEMergulhador
      ___ mergulhadorVivo = false

      if(XTubarão >= LarguraDaJanela || XTubarão <= 0)
      ___ tesouro -= 1
      ___ mergulhadorVivo = true
  • Polvo Gigante
    1. A cada tempo definido pela variável velocidadePovo surge um novo tentáculo, em um local aleatorio. O máximo de tentáculos é 8;

      Resto( tempo / VelocidadeEmSegundos * frameRate ) == 0
      and
      quantTentaculos < 8

      if(temp%( velocidadePovo segundos * frameRate) == 0 && quantTentaculos < 8)
      ___ int localX = random(min, max);
      ___ quantTentaculos += 1;
      ___ mapTentaculos[quantTentaculos*10] = {
      ___ ___ localX , yTentaculo, líder , rastro
      ___ };
      A variável booleana líder é uma flag que mostra a ponta do tentáculo (0 ou 1);
      yTentaculo representa a base no polvo gigante;
      10 é o tamanho do tentáculo até o fundo do mar;
      A variável rastro mostra o último movimento do tentáculo, a ser repetido posteriormente por seus “filhos”;

    2. A cada ciclo nasce mais um bloco ao tentáculo;

      Se(Resto( tempo / VelocidadeEmSegundos * frameRate ) == 0
      and
      quantTentaculos > 0)

      Function addTentaculo()

      if(temp%( velocidadePovo segundos * frameRate) == 0 && quantTentaculos > 0)
      ___ for(int i = 0; i < mapTentaculos.length; i += 10)
      ___ ___ for(int j = 0; j < 10; j ++)
      ___ ___ ___ if( mapTentaculos[i+j] [0] < 0)
      ___ ___ ___ ___ ___ mapTentaculos[quantTentaculos*10] = {
      ___ ___ ___ ___ ___ ___ mapTentaculos[i+j -1] [0] ,
      ___ ___ ___ ___ ___ ___ yTentaculo,
      ___ ___ ___ ___ ___ ___ 0,
      ___ ___ ___ ___ ___ ___ mapTentaculos[i+j -1] [3]
      ___ ___ ___ ___ ___ };
    3. A movimentação dos tentáculos é em formato de onda. Onde o tentaculo filho acompanha o movimento do seu pai;

      MovimentoPai = +1;
      MovimentoFilho = MovimentoPai -1;

      if(mapTentaculos[ i ][ 2 ] == 1)
      ___ mapTentaculos[ i ][ 3 ] = rastro( mapTentaculos[ i ][ 3 ] + 1);
      else
      ___ mapTentaculos[ i ][ 3 ] = rastro(mapTentaculos[ i - 1 ][ 3 ] - 1);
      O movimento anterior é passado para o anterior antes que o “primogênito” seja atualizado.

    4. se a ponta do tentáculo for atingida pelo arpão.

      ( eixoXTentaculo + larguraTentaculo/2 ) > eixoXArpão
      and
      ( eixoXTentaculo - larguraTentaculo/2 ) < eixoXArpão
      and
      ( eixoYTentaculo + alturaTentaculo/2 ) > eixoYArpão
      and
      ( eixoYTentaculo - alturaTentaculo/2 ) < eixoYArpão
      and
      tentaculoLider == true

      for(int i = 0; i < mapTentaculos.length; i += 10)
      ___ if(
      ___ ___ mapTentaculos[ i ][ 2 ] == 1 &&
      ___ ___ mapTentaculos[ i ][ 0 ] + 5 > XArpao &&
      ___ ___ mapTentaculos[ i ][ 0 ]- 5 < XArpao &&
      ___ ___ YTmapTentaculos[ i ][ 1 ] + 5 > YArpao &&
      ___ ___ YTmapTentaculos[ i ][ 1 ] - 5 < YArpao
      ___ )

MAMI 2018.1