не могу что не так с этими пунктами?
package com.javarush.task.task23.task2312;
import java.awt.event.KeyEvent;
import java.util.List;
import java.util.TreeSet;
public class Room {
private int width;
private int height;
private Snake snake;
private Mouse mouse;
public static Room game;
public Room(int width, int height, Snake snake) {
this.width = width;
this.height = height;
this.snake = snake;
game = this;
}
public Snake getSnake() {
return snake;
}
public Mouse getMouse() {
return mouse;
}
public int getWidth() {
return width;
}
public int getHeight() {
return height;
}
public void setWidth(int width) {
this.width = width;
}
public void setHeight(int height) {
this.height = height;
}
public void setSnake(Snake snake) {
this.snake = snake;
}
public void setMouse(Mouse mouse) {
this.mouse = mouse;
}
/**
* Основной цикл программы.
* Тут происходят все важные действия
*/
public void run() {
//Создаем объект "наблюдатель за клавиатурой" и стартуем его.
KeyboardObserver keyboardObserver = new KeyboardObserver();
keyboardObserver.start();
//пока змея жива
while (snake.isAlive()) {
//"наблюдатель" содержит события о нажатии клавиш?
if (keyboardObserver.hasKeyEvents()) {
KeyEvent event = keyboardObserver.getEventFromTop();
//Если равно символу 'q' - выйти из игры.
if (event.getKeyChar() == 'q') return;
//Если "стрелка влево" - сдвинуть фигурку влево
if (event.getKeyCode() == KeyEvent.VK_LEFT)
snake.setDirection(SnakeDirection.LEFT);
//Если "стрелка вправо" - сдвинуть фигурку вправо
else if (event.getKeyCode() == KeyEvent.VK_RIGHT)
snake.setDirection(SnakeDirection.RIGHT);
//Если "стрелка вверх" - сдвинуть фигурку вверх
else if (event.getKeyCode() == KeyEvent.VK_UP)
snake.setDirection(SnakeDirection.UP);
//Если "стрелка вниз" - сдвинуть фигурку вниз
else if (event.getKeyCode() == KeyEvent.VK_DOWN)
snake.setDirection(SnakeDirection.DOWN);
}
snake.move(); //двигаем змею
print(); //отображаем текущее состояние игры
sleep(); //пауза между ходами
}
System.out.println("Game Over!");
}
public void print() {
//Создаем массив, куда будем "рисовать" текущее состояние игры
//Рисуем все кусочки змеи
//Рисуем мышь
//Выводим все это на экран
int[][] gameField = new int[getHeight()][getWidth()];
for(SnakeSection snakeSection : snake.getSections()){
gameField[snakeSection.getY()-1][snakeSection.getX()-1] = 1;
}
gameField[mouse.getY()][mouse.getX()] = 3;
gameField[snake.getY()-1][snake.getX()-1] = 2;
for(int height = 0; height < gameField.length; height++){
for(int width = 0; width < gameField[height].length; width++){
switch (gameField[height][width]){
case 1 : System.out.print("x"); break;
case 2 : System.out.print("X"); break;
case 3 : System.out.print("^"); break;
default : System.out.print(".");
}
}
System.out.println();
}
}
public void eatMouse() {
createMouse();
}
public void createMouse() {
int x = (int) (Math.random() * width);
int y = (int) (Math.random() * height);
mouse = new Mouse(x, y);
}
public static void main(String[] args) {
game = new Room(10, 10, new Snake(5, 5));
game.snake.setDirection(SnakeDirection.DOWN);
game.createMouse();
game.run();
}
public void sleep() {
try {
switch (getSnake().getSections().size()){
case 1 : Thread.sleep(500); break;
case 2 : Thread.sleep(480); break;
case 3 : Thread.sleep(460); break;
case 4 : Thread.sleep(440); break;
case 5 : Thread.sleep(420); break;
case 6 : Thread.sleep(400); break;
case 7 : Thread.sleep(380); break;
case 8 : Thread.sleep(360); break;
case 9 : Thread.sleep(340); break;
case 10 : Thread.sleep(320); break;
case 11 : Thread.sleep(300); break;
case 12 : Thread.sleep(280); break;
case 13 : Thread.sleep(260); break;
case 14 : Thread.sleep(240); break;
case 15 : Thread.sleep(220); break;
default : Thread.sleep(200);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}