2
respostas

[Bug] Joguinho Freeway - Depois que adicionei os sons, o jogo desapareceu! - Lógica de Programação

Alguém pode me ajudar, please!! :(

O jogo estava quase pronto quando tentei adicionar os sons: Criei uma pasta nova onde fiz upload de todos os sons; criei um arquivo novo para armazenar esses sons com os nomes das variáveis e a função preload; adicionei esse arquivo novo em index

; e adicionei os sons em .loop na função setup de sketch.js; assim como o som de marcar ponto e perder ponto nos momentos certos.

No entanto, quando cliquei para rodar o jogo, não funcionou! Consigo ouvir o som da trilha em loop, e mais nada! O jogo inteiro deu bug!

Antes disso, estava funcionando tudo certinho: eu tinha a imagem da estrada como background do jogo, os carrinhos passando em velocidades diferentes, a vaquinha se movimentando e quando colidia com os carrinhos voltava a posição inicial. O placar também era exibido e aumentava 1 ponto quando a vaquinha chegava ao final e diminuia 1 ponto quando havia colisao (desde que os pontos estivessem positivos).

A mensagem de erro exibida no console e essa: p5.js says: [sketch.js, line 7] An error with message "[object Arguments]is not a valid color representation." occurred inside the p5js library when background was called. If not stated otherwise, it might be an issue with the arguments passed to background. (http://p5js.org/reference/#/p5/background)

No caso, a linha 7 no arquivo sketch.js é essa aqui embaixo, e fica dentro da function draw(){: background(roadImage);

Eu entendo que eles querem dizer que essa "cor" chamada "roadImage" não existe. Mas antes de eu fazer o upload dos sons do jogo, estava funcionando tudo certinho, pois "roadImage" e o nome que eu dei para a imagem da estrada, que eu estava usando de background para o jogo. Ah e tambem ja tentei colocar uma cor aleatoria no lugar dessa imagem, so para ver se o resto do jogo iria rodar, mas não deu certo porque começou a encontrar outros bugs dai. Não sei o que fazer!

Alguém tem alguma sugestão sobre o que pode ter acontecido? Me dêem um a luz, pufavô!!

2 respostas

Olá Camila, compartilha o seu código para agente poder lé ajudar.

Claro Carlos!

Aqui vai!

ESTE É O CÓDIGO NO ARQUIVO sketch.js:

function setup() { createCanvas(500, 400); backgroundMusic.loop(); }

function draw() { background(roadImage); showActor(); showCars(); moveCars(); moveActor(); carsStartOver(); verifyCollision(); showScore(); scorePoint(); }

Este é o código no arquivo images.js:

//images of the game

let roadImage; let actorImage; let carImage; let carImage2; let CarImage3;

function preload(){ roadImage = loadImage ("images/estrada.png") actorImage = loadImage ("images/ator-1.png") carImage = loadImage ("images/carro-1.png") carImage2 = loadImage ("images/carro-2.png") carImage3 = loadImage ("images/carro-3.png") carImages = [carImage, carImage2, carImage3, carImage3, carImage2, carImage] }

ESTE É O CÓDIGO NO ARQUIVO actor.js:

//actor code

let xActor = 100 let yActor = 370;

let collision = false;

let myPoints = 0;

function showActor(){ image (actorImage, xActor, yActor, 30, 30) }

function moveActor(){ if (keyIsDown(UP_ARROW)){ yActor -= 5 } }

function verifyCollision(){ for (let i = 0; i < carImages.length; i++){ collision = collideRectCircle (xCars[i], yCars[i],wCars, hCars, xActor, yActor, 15) if (collision){ cowGoesBack(); if (positivePoints()){ myPoints -= 1; soundCollision.play(); } } } }

function cowGoesBack(){ yActor = 370 }

function showScore(){ textAlign(CENTER); textSize (25); fill(255,215,0); text (myPoints, width / 5, 25); }

function scorePoint(){ if (yActor < 20){ myPoints += 1; cowGoesBack() } }

function positivePoints(){ return myPoints > 0; }

CÓDIGO NO ARQUIVO car.js:

//car codes

let yCars = [40, 95, 150, 210, 265, 315]; let speedCars = [2, 4.5, 3, 3.5, 2.5, 5]; let xCars = [500, 500, 500, 500, 500, 500]; let wCars = 60; let hCars = 40;

function showCars(){ for (let i = 0; i < carImages.length; i++){ image (carImages[i], xCars[i], yCars[i], wCars, hCars); } }

function moveCars(){ for (i = 0; i < carImages.length; i++){ xCars[i] -= speedCars[i]; } }

function carsStartOver(){ for (let i = 0; i < carImages.length; i++){ if (wentThrough (xCars[i])){ xCars[i] = 600} } }

function wentThrough(xCars){ return xCars < -50; }

CÓDIGO NO ARQUIVO sounds.js:

//sounds of the game let backgroundMusic; let soundPoint; let soundCollision;

function preload(){ backgroundMusic = loadSound ("sounds/trilha.mp3"); soundPoint = loadSound ("sounds/pontos.wav"); soundCollision = loadSound ("sounds/colidiu.mp3") }

ESTE É O CÓDIGO NO ARQUIVO index.html:

ALÉM DESSES ARQUIVOS, TEM TAMBEM: p5.collide2d.js (que eu adicionei depois de ter baixado do GitHub); E as pastas com imagens e sons. (lembrando que elas estavam todas funcionando e exibindo corretamente ate o ultimo passo que foi quando eu tentei adicionar os sons).