W ponizszym kodzie wystepuja zdefiniowane obstacle1, obstacle2...itd. czy jest moze sposob na zapisanie tego wszystkiego krocej? Chodzi o to, zebym przy dodawaniu nastepnych przeszkod nie musial dopisywac do kazdej funkcji tego samego ze zmienionym obstacle1.x na obstacle2.x. (wystepuja one w funkcjach obstacleMove, obstacleDraw i collision)
https://codepen.io/laniewski/pen/yLzZqze
0
2
var obstacle1=new Object();
obstacle1.x = canvas.width + 1 * canvas.width / 5;
obstacle1.y = canvas.height - 1 * canvas.height / 5;
var obstacle2=new Object();
obstacle2.x = canvas.width + 2 * canvas.width / 5;
obstacle2.y = canvas.height - 2 * canvas.height / 5;
Można zamienić przykładowo na
class Obstacle {
static count = 0;
constructor(width, height) {
Obstacle.count++;
this.x = width + Obstacle.count * width / 5;
this.y = height - Obstacle.count * height / 5;
}
}
const obstacle1 = new Obstacle(canvas.width, canvas.height);
const obstacle2 = new Obstacle(canvas.width, canvas.height);
/*
Tablica w tym wypadku byłaby lepsza, bo miałbyś od razu dostęp do wszystkich elementów ale musiałbyś wprowadzić więcej zmian w kodzie
const obstacles = [
new Obstacle(canvas.width, canvas.height),
new Obstacle(canvas.width, canvas.height)
];
*/
EDIT:
Dorzucam jeszcze linki do dokumentacji, żebyś wiedział co robią poszczególne elementy
https://developer.mozilla.org/pl/docs/Web/JavaScript/Reference/Global_Objects/Array
https://developer.mozilla.org/pl/docs/Web/JavaScript/Reference/Classes
https://developer.mozilla.org/pl/docs/Web/JavaScript/Reference/Statements/const