Estou com uma dificuldade em terminar a atividade Jogos Classicos parte 2. Há um travamento sem apontar o erro. https://editor.p5js.org/danilo.ss/sketches/t9awIGS0z
Estou com uma dificuldade em terminar a atividade Jogos Classicos parte 2. Há um travamento sem apontar o erro. https://editor.p5js.org/danilo.ss/sketches/t9awIGS0z
Olá Danilo, tudo bem? espero que sim.
Desde já gostaria de agradecer a paciência em aguardar uma resposta.
Analisando seu game e vasculhando, encontro o bug na função verificaColisao
no arquivo ator.js
há um erro na sua escrita do código que gera o travamento, como podemos observar:
function verificaColisao(){
//collideRectCircle(x1, y1, width1, height1, cx, cy, diameter)
for (let i = 0; i < imagemCarro.length; i = i++){ //o erro do travamento se encontra aqui.
//resto da função…
O valor de i
ele é responsável por controlar o for, na sua lógica o i = i++ o que gera bugs, você pode usar o operador de incremento que é "++
" ficando ì++
ou de outra forma, usando i = i + 1
ambos funcionam mais a melhor prática é usar o i++
sua função com as correções.
function verificaColisao(){
//collideRectCircle(x1, y1, width1, height1, cx, cy, diameter)
for (let i = 0; i < imagemCarro.length; i = i++){
colisao = collideRectCircle(xCarros[i], yCarros[i], comprimentoCarro, alturaCarro, xAtor, yAtor, 15)
if(colisao){
voltaAtorParaPosicaoInicial();
somDaColisao.play();
if (pontosMaiorQueZero){
meusPontos -= 1;
}
}
}
}
Seu código passou pelo BOSS
agora vamos passar por bugs mais fáceis rsrs,
Vamos colocar a função feita em aula que estava faltando em seu código, que é a voltaAtorParaPosicaoInicial
no arquivo ator.js
:
function voltaAtorParaPosicaoInicial(){
yAtor = 366;
}
Há outras pequenas correções em seu código como fechamento de ()
em algumas funções chamadas por ti, deixo o código completo.
//código do ator
let xAtor = 85;
let yAtor = 366;
let colisao = false;
let meusPontos = 0;
function mostraAtor(){
image(imagemDoAtor, xAtor, yAtor, 30,30);
}
function movimentaAtor(){
if (keyIsDown(UP_ARROW)){
yAtor -= 3;
}
if (keyIsDown(DOWN_ARROW)){
if(podeSeMover()){
yAtor += 3;
}
}
}
function verificaColisao(){
//collideRectCircle(x1, y1, width1, height1, cx, cy, diameter)
for (let i = 0; i < imagemCarro.length; i++){
colisao = collideRectCircle(xCarros[i], yCarros[i], comprimentoCarro, alturaCarro, xAtor, yAtor, 15)
if (colisao){
somDaColisao.play();
voltaAtorParaPosicaoInicial();
if(pontosMaiorQueZero()){
meusPontos -= 1;
}
}
}
}
function colidiu (){
yAtor = 366}
function incluiPontos(){
textAlign (CENTER);
textSize (25)
fill(color(255,240,60))
text(meusPontos, width / 5, 27 )
}
function marcaPonto(){
if (yAtor < 15){
meusPontos += 1
somDoPonto.play();
voltaAtorParaPosicaoInicial();
}
}
function pontosMaiorQueZero(){
return meusPontos > 0
}
function podeSeMover(){
return yAtor < 366;
}
function voltaAtorParaPosicaoInicial(){
yAtor = 366;
}
Depois é só arrumar a funtion draw()
no arquivo sketch.js
;
function draw() {
background(imagemDaEstrada);
mostraAtor();
mostraCarro();
movimentaCarro();
movimentaAtor();
voltaPosicaoInicialDoCarro();
verificaColisao();
incluiPontos();
marcaPonto();
}
Deste modo o seu game volta a funcionar normalmente, continue se esforçando e estudando, um grande abraço!