Game Development Reference
In-Depth Information
public void updateShip() {
int width = getWidth();
int height = getHeight();
double dx, dy, speed;
if (!playing)
return;
/**
* Rotate the ship if left or right cursor key is down.
*/
if (left) {
ship.angle += Constants.SHIP_ANGLE_STEP;
if (ship.angle > 2 * Math.PI)
ship.angle -= 2 * Math.PI;
}
if (right) {
ship.angle -= Constants.SHIP_ANGLE_STEP;
if (ship.angle < 0)
ship.angle += 2 * Math.PI;
}
/**
* Fire thrusters if up or down cursor key is down.
*/
dx = Constants.SHIP_SPEED_STEP * -Math.sin(ship.angle);
dy = Constants.SHIP_SPEED_STEP * Math.cos(ship.angle);
if (up) {
ship.deltaX += dx;
ship.deltaY += dy;
}
if (down) {
ship.deltaX -= dx;
ship.deltaY -= dy;
}
/**
* Don't let ship go past the speed limit.
*/
if (up || down) {
speed = Math.sqrt(ship.deltaX * ship.deltaX + ship.deltaY
* ship.deltaY);
if (speed > Constants.MAX_SHIP_SPEED) {
dx = Constants.MAX_SHIP_SPEED * -Math.sin(ship.angle);
dy = Constants.MAX_SHIP_SPEED * Math.cos(ship.angle);
if (up)
ship.deltaX = dx;
else
ship.deltaX = -dx;
if (up)
Search WWH ::




Custom Search