Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

JAVA. Объясните, пожалуйста, код (метод gameUpdate())

Emil Vronski Ученик (85), на голосовании 4 года назад
Объясните, пожалуйста, код (детально метод gameUpdate()) https://pastebin.com/uZJagWT1

public class Main extends Application {
Pane root;
Rectangle player, bot;
Circle ball;
Line line;
AnimationTimer timer;
private final int WIDTH = 600, HEIGHT = 400;
private int speedX = 4, speedY = 4, dv = speedX, dy = speedY;
@Override
public void start(Stage primaryStage) throws Exception {
primaryStage.setTitle("Game");
primaryStage.setScene(new Scene(createContent()));
primaryStage.show();
primaryStage.getScene().setOnKeyPressed(event -> {
if (event.getCode() == KeyCode.UP)player.setLayoutY(player.getLayoutY()-30);
if (event.getCode() == KeyCode.DOWN)player.setLayoutY(player.getLayoutY()+30);
});
}
private Parent createContent(){
root = new Pane();
root.setPrefSize(WIDTH, HEIGHT);
root.setStyle("-fx-background-color: black");
line = new Line(WIDTH/2,0,WIDTH/2,HEIGHT);
line.setStroke(Color.WHITE);
bot = new Rectangle(10,80,Color.WHITE);
bot.setLayoutX(0);
bot.setLayoutY(HEIGHT/2-40);
player = new Rectangle(10,80,Color.WHITE);
player.setLayoutX(WIDTH-10);
player.setLayoutY(HEIGHT/2-40);
ball = new Circle(5);
ball.setFill(Color.WHITE);
ball.setStyle("-fx-background-color: white");
ball.setLayoutX(WIDTH/2);
ball.setLayoutY(HEIGHT/2);
root.getChildren().addAll(line,bot,player,ball);
timer = new AnimationTimer(){
@Override
public void handle(long now){
gameUpdate();
}
};
timer.start();
return root;
}
private void gameUpdate(){
double x = ball.getLayoutX(), y = ball.getLayoutY();
if (x <= 10 && y > bot.getLayoutY() && y < bot.getLayoutY()+80) dv = speedX;
if (x >= WIDTH-12.5 && y > player.getLayoutY() && y < player.getLayoutY()+80) dv = -speedX;
if (y <= 0 ) dy = speedY;
if (y >= HEIGHT-5) dy = -speedY;
ball.setLayoutX(ball.getLayoutX()+dv);
ball.setLayoutY(ball.getLayoutY()+dy);
if(x < WIDTH/2 && bot.getLayoutY() > y)bot.setLayoutY(bot.getLayoutY()-5);
if(x < WIDTH/2 && bot.getLayoutY()+80 < y)bot.setLayoutY(bot.getLayoutY()+5);
}
Голосование за лучший ответ
ппп Мыслитель (9213) 4 года назад
Там происходит изменение координат объектов "игры". Таймер вызывает этот метод с какой-то частотой, в результате чего создается впечатление о перемещении объектов
Похожие вопросы