7
respostas

[Dúvida] Implementar sistema de níveis

Olá, pessoal Eu gostaria de saber se existe alguma forma de manipular os valores de listas declaradas para atualizá-los sempre que uma ação ocorre dentro do jogo. Por exemplo:

function marcaPonto(){
  if (yAtor < 14){
    meusPontos += 1;
    somDoPonto.play();
    voltaPosicaoInicial();
  }
}

Com a ação mostrada acima, o console acrescenta 1 ponto para cada vez que eu atravessar a rodovia. Posterior a isso, eu queria poder modificar as velocidades dos veículos cada vez que meu ator consegue passar toda a rodovia, em "velocidadeCarros" e "velocidadeLambretas", para assim aumentar gradativamente a dificuldade do jogo.

//Código dos carros
let xCarros = [900, 900, 900, 900];
let yCarros = [120, 220, 330, 430];
let velocidadeCarros = [6, 4.3, 6.6, 4.8];
let comprimentoCarros = 95;
let alturaCarros = 45;

//Código das lambretas
let xLambretas = [900, 900];
let yLambretas = [38, 513];
let velocidadeLambretas = [3.7, 5.9];
let comprimentoLambretas = 60;
let alturaLambretas = 40;

Queria fazer isso para tornar o jogo mais emocionante. Quem puder me ajudar, agradeço, pois é uma ideia pessoal que não pertence ao projeto principal ensinado pelo Guilherme Lima.

7 respostas
//Código dos carros
let xCarros = [900, 900, 900, 900];
let yCarros = [120, 220, 330, 430];

//Criando variável para cada um dos carros
let velocidadeCarro1 = 6;
let velocidadeCarro2 = 4.3;
let velocidadeCarro3 = 6.6;
let velocidadeCarro4 = 4.8;

let velocidadeCarros = [velocidadeCarro1, velocidadeCarro2, velocidadeCarro3, velocidadeCarro4];

let comprimentoCarros = 95;
let alturaCarros = 45;

//Código das lambretas
let xLambretas = [900, 900];
let yLambretas = [38, 513];

//Criando variável para cada um dos carros
let velocidadeLambreta1 = 3.7;
let velocidadeLambreta2 = 5.9;

let velocidadeLambretas = [velocidadeLambreta1, velocidadeLambreta2];
let comprimentoLambretas = 60;
let alturaLambretas = 40;

function marcaPonto(){
      if (yAtor < 14){
            meusPontos += 1;
            somDoPonto.play();
            voltaPosicaoInicial();
      }

      aumentaVelocidadesVeiculos();
}

function aumentaVelocidadesVeiculos() {
        elocidadeCarro1 =  elocidadeCarro1 + 1;
        velocidadeCarro2 = velocidadeCarro2 + 1;
        velocidadeCarro3 = velocidadeCarro3 + 1;
        velocidadeCarro4 = velocidadeCarro4 + 1;

        velocidadeLambreta1 = velocidadeLambreta1 + 1;
        velocidadeLambreta2 = velocidadeLambreta2 + 1;
}

Não pude testar porque não tenho mais esse projeto freeway, mas acredito que o código funcione. Use o console log para ver se de fato as velocidades estão aumentando. Qualquer coisa eu tento ajudar novamente.

Perfeito Lucas, eu vou testar essa solução e então rodar o código. Agradeço pela sua disposição em ajudar! Forte abraço!!

Pior que não deu certo. Não apresentou nenhum erro, mas também não alterou as velocidades.

[]C:\Users\Jeanderson\Videos\Desktop\video.mp4()

function marcaPonto(){
      if (yAtor < 14){
            meusPontos += 1;
            somDoPonto.play();
            aumentaVelocidadesVeiculos();
            voltaPosicaoInicial();
      }
}

É que não tenho acesso ao código inteiro, mas acredito que não funcionou porque eu chamei a função que acrescenta depois da função que volta para a posição inicial.

Tenta ai e fala.

Pois então Lucas, não funcionou dessa forma também. Eu cheguei a alterar parâmetros dessa função que você criou, mudando o operador para "-" ao invés de "+", alterando o valor que era somado ou subtraído, e mudando outros aspectos de outras funções, como aquela que verifica em que ponto "y" o ator pontua. Também declarei a função "aumentaVelocidadeVeiculos()" em outras partes do código, e por algum motivo não reconheceu. Mas percebi um comportamento interessante: a partir do momento que eu removi as listas relacionadas às velocidades e coloquei os valores separados, o código foi reconhecido, mas todos os veículos ficam com a mesma velocidade. Se removêssemos todas as listas, provavelmente observaríamos o comportamento dando certo, mas o código ficaria muito extenso. É preciso achar alguma forma de conservar as listas e tornar possível a alteração de cada índice dela.

Eu imagino que ele não consiga aumentar o valor, porque como a IDE lê os códigos de cima para baixo, o programa deve acabar lendo as declarações de variáveis da velocidade novamente, fazendo assim com elas tenham o mesmo valor declarado. Acho que para solucionar isso, teríamos que colocar as declarações das variáveis das velocidades em uma função com parâmetros, passando as velocidades nos parâmetros.

Entendo. Há a possibilidade de fazermos isso? Se há, como poderíamos fazer?