Не проходит валидация, хотя условие выполнено. И я так и не смог понять, почему не отрисовывается платформа, соответственно в игре нельзя победить
package com.javarush.games.moonlander;
import com.javarush.engine.cell.*;
import java.util.ArrayList;
public class Rocket extends GameObject {
private double speedY = 0;
private double speedX = 0;
private double boost = 0.05;
private double slowdown = boost / 10;
private RocketFire downFire;
private RocketFire leftFire;
private RocketFire rightFire;
public Rocket(double x, double y) {
super(x, y, ShapeMatrix.ROCKET);
ArrayList <int[][]> listD = new ArrayList<int[][]>();
listD.add(ShapeMatrix.FIRE_DOWN_1);
listD.add(ShapeMatrix.FIRE_DOWN_2);
listD.add(ShapeMatrix.FIRE_DOWN_3);
downFire = new RocketFire(listD);
ArrayList <int[][]> listL = new ArrayList<int[][]>();
listL.add(ShapeMatrix.FIRE_SIDE_1);
listL.add(ShapeMatrix.FIRE_SIDE_2);
leftFire = new RocketFire(listL);
ArrayList <int[][]> listR = new ArrayList<int[][]>();
listR.add(ShapeMatrix.FIRE_SIDE_1);
listR.add(ShapeMatrix.FIRE_SIDE_2);
rightFire = new RocketFire(listR);
}
public void move(boolean isUpPressed, boolean isLeftPressed, boolean isRightPressed) {
speedY += isUpPressed ? -boost : boost;
y += speedY;
speedX += isLeftPressed ? -boost : 0;
speedX += isRightPressed ? boost : 0;
x += speedX;
if (!isLeftPressed && !isRightPressed){
speedX += speedX > slowdown ? -slowdown : 0;
speedX += speedX < -slowdown ? slowdown : 0;
x += speedX;
}
checkBorders();
}
private void checkBorders() {
if (x < 0) {
x = 0;
speedX = 0;
} else if (x + width > MoonLanderGame.WIDTH) {
x = MoonLanderGame.WIDTH - width;
speedX = 0;
}
if (y <= 0) {
y = 0;
speedY = 0;
}
}
public boolean isStopped() {
return speedY < 10 * boost;
}
public boolean isCollision(GameObject object) {
int transparent = Color.NONE.ordinal();
for (int matrixX = 0; matrixX < width; matrixX++) {
for (int matrixY = 0; matrixY < height; matrixY++) {
int objectX = matrixX + (int) x - (int) object.x;
int objectY = matrixY + (int) y - (int) object.y;
if (objectX < 0 || objectX >= object.width || objectY < 0 || objectY >= object.height)
continue;
if (matrix[matrixY][matrixX] != transparent && object.matrix[objectY][objectX] != transparent)
return true;
}
}
return false;
}
public void land(){
y-=1;
}
public void crash(){
matrix = ShapeMatrix.ROCKET_CRASH;
}
}