gameloop = {
let { x, y, r, xSpeed, ySpeed} = mutable ball;
while (true) {
if (reverse) {
x = x + xSpeed;
y = y + ySpeed;
} else {
x = x - xSpeed;
y = y - ySpeed;
}
if ( x - r < 0) {
xSpeed = -xSpeed;
mutable ball = {x, y, r, xSpeed, ySpeed};
yield Promises.delay(1000, true);
}
if ( x + r > w) {
xSpeed = -xSpeed;
mutable ball = {x, y, r, xSpeed, ySpeed};
yield Promises.delay(1000, false);
}
if ( y + r > h) {
ySpeed = -ySpeed;
mutable ball = {x, y, r, xSpeed, ySpeed};
yield Promises.delay(1000, mutable ball);
}
if ( y - r < 0) {
ySpeed = -ySpeed;
mutable ball = {x, y, r, xSpeed, ySpeed};
yield Promises.delay(1000, mutable ball);
}
mutable ball = {x, y, r, xSpeed, ySpeed}
yield false
}
}