Найти тему

JAVA. Игра «Поймай каплю»

package поймай_каплю

 

import javax.imageio.ImageIO; 

import javax.swing.*; 

import java.awt.*; 

import java.awt.event.MouseAdapter; 

import java.awt.event.MouseEvent; 

import java.io.IOException; 

 

public class GameWindow extends JFrame { 

 

 private static GameWindow game_window; 

 private static long last_frame_time; 

 private static Image background; 

private static Image game_over; 

 private static Image drop; 

 private static float drop_left = 200; 

 private static float drop_top = -100; 

 private static float drop_v = 200; 

 private static int score; 

 

 public static void main(String[] args) throws IOException { 

 background = ImageIO.read(GameWindow.class.getResourceAsStream("background.jpg")); 

 game_over = ImageIO.read(GameWindow.class.getResourceAsStream("game_over.png")); 

 drop = ImageIO.read(GameWindow.class.getResourceAsStream("drop.png")); 

 

 game_window = new GameWindow(); 

 game_window.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 

 game_window.setLocation(200, 100); 

 game_window.setSize(906, 478); 

 game_window.setResizable(false); 

 last_frame_time = System.nanoTime(); 

 GameField game_field = new GameField(); 

 game_field.addMouseListener(new MouseAdapter() { 

 [id384774802|@Override] 

 public void mousePressed(MouseEvent e) { 

 int x = e.getX(); 

 int y = e.getY(); 

 float drop_right = drop_left + drop.getWidth(null); 

 float drop_bottom = drop_top + drop.getHeight(null); 

 boolean is_drop = x >= drop_left && x <= drop_right && y >= drop_top && y <= drop_bottom; 

 if (is_drop){ 

 drop_top = -100; 

 drop_left = (int) Math.random() * (game_field.getWidth() - drop.getWidth(null)); 

 drop_v = drop_v + 25; 

 score ++; 

 game_window.setTitle("Score: " + score); 

 

 } 

 } 

 }); 

 game_window.add(game_field); 

 game_window.setVisible(true); 

 } 

 

 private static void onRepaint (Graphics g){ 

 long current_time = System.nanoTime(); 

 float delta_time = (current_time - last_frame_time) * 0.000000001f; 

 last_frame_time = current_time; 

 

 drop_top = drop_top + drop_v * delta_time; 

g.drawImage(background, 0, 0, null); 

g.drawImage(drop, (int) drop_left, (int) drop_top, null); 

if (drop_top > game_window.getHeight())g.drawImage(game_over, 280, 120, null); 

 } 

 

 private static class GameField extends JPanel{ 

 

 [id384774802|@Override] 

 protected void paintComponent (Graphics g){ 

 super.paintComponent(g); 

 onRepaint(g); 

 repaint(); 

 

 } 

 } 

}

-2
-3
-4
-5
-6