Как я могу обращаться к случайным образом генерируемым значениям X и Y, когда они вставляются в массив. В моем коде: ax и ay номера - это случайным образом генерируемые значения, на которые я хочу ссылаться на более позднем этапе, и использовать их в цикле. Я буду генерировать много объектов, и я хочу использовать каждый отдельный топор и ay в вычислениях. В настоящий момент система использует только первые значения, сгенерированные или последние. Я немного нуб и ценю руководство.
function create() {
ax = Math.random() * width;
ay = Math.random() * height;
asteroids.push(new gameObject("asteroid", 0, 0, 0, 0, "asteroid11.png", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ax, ay, 250, 240, 0, 120, 1, 0, 0))
guns.push(new gameObject("g", 0, 0, 0, 0, "gun3.png", 0, 0, ax + 125 - 67, ay - 23, 138, 78, 0, 0, 72, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
bullets.push(new gameObject("b", ax + 125 - 67 + 138 / 2 - 14, ay - 23 + 78 / 2 - 15, 25, 25, "ball.png", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
}
Легкое решение - вернуть ax
, ay
из create
:
function create() {
ax = Math.random() * width;
ay = Math.random() * height;
asteroids.push(new gameObject("asteroid", 0, 0, 0, 0, "asteroid11.png", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ax, ay, 250, 240, 0, 120, 1, 0, 0))
guns.push(new gameObject("g", 0, 0, 0, 0, "gun3.png", 0, 0, ax + 125 - 67, ay - 23, 138, 78, 0, 0, 72, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
bullets.push(new gameObject("b", ax + 125 - 67 + 138 / 2 - 14, ay - 23 + 78 / 2 - 15, 25, 25, "ball.png", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
return [ax, ay];
}
Однако это не очень понятно. Лучше всего было бы реорганизовать генерацию случайной ширины и высоты в автономные функции:
const randomWidth = () => Math.random() * width;
const randomHeight = () => Math.random() * height;
const create = (ax, ay) => {
asteroids.push(new gameObject("asteroid", 0, 0, 0, 0, "asteroid11.png", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ax, ay, 250, 240, 0, 120, 1, 0, 0))
guns.push(new gameObject("g", 0, 0, 0, 0, "gun3.png", 0, 0, ax + 125 - 67, ay - 23, 138, 78, 0, 0, 72, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
bullets.push(new gameObject("b", ax + 125 - 67 + 138 / 2 - 14, ay - 23 + 78 / 2 - 15, 25, 25, "ball.png", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
};
// in your loop
for (/* ... */) {
const ax = randomWidth();
const ay = randomHeight():
create(ax, ay);
// do something with 'ax' and 'ay'
}
ax
иay
отcreate
.