Advertisement
DrShpak

Untitled

Nov 18th, 2018
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.67 KB | None | 0 0
  1. import javax.swing.*;
  2. import java.awt.*;
  3. import java.awt.event.ActionEvent;
  4. import java.awt.event.ActionListener;
  5. import java.awt.event.KeyAdapter;
  6. import java.awt.event.KeyEvent;
  7. import java.io.IOException;
  8. import java.util.ArrayList;
  9. import java.util.Iterator;
  10. import java.util.Random;
  11.  
  12. public class GameField extends JPanel implements ActionListener, Runnable {
  13.  
  14.     private Timer timer = new Timer(20, this); // частота обновления кадров (отрисовки) , запускает фукцию экшн перформед каждые 20 мс
  15.  
  16.     private Image img = new ImageIcon("Images/background.jpg").getImage();
  17.  
  18.     private Player player = new Player();
  19.  
  20.     private Thread enemiesRespawn = new Thread(this);
  21.  
  22.     private java.util.List<Enemy> enemies = new ArrayList<Enemy>();
  23.  
  24.  
  25.     public GameField() throws IOException {
  26.         timer.start();
  27.         enemiesRespawn.start();
  28.         addKeyListener(new MyKeyAdapter());
  29.         setFocusable(true);
  30.     }
  31.  
  32.     public class MyKeyAdapter extends KeyAdapter {
  33.  
  34.         public void keyPressed(KeyEvent e){
  35.  
  36.             player.keyPressed(e);
  37.         }
  38.  
  39.         public void keyReleased(KeyEvent e){
  40.  
  41.             player.keyReleased(e);
  42.         }
  43.     }
  44.  
  45.     public void paint(Graphics graphics) {
  46.  
  47.         graphics = (Graphics2D) graphics;
  48.  
  49.         graphics.drawImage(img, 0, player.layer1, null);
  50.         graphics.drawImage(img, 0, player.layer2, null);
  51.  
  52.         graphics.drawImage(player.img, player.x, player.y, null);
  53.  
  54.         int distance = player.getDistance();
  55.         graphics.setColor(Color.ORANGE);
  56.         Font font = new Font("Arial", Font.BOLD, 20);
  57.         graphics.setFont(font);
  58.         graphics.drawString("Score: " + distance, 190, 35);
  59.  
  60.         Iterator<Enemy> i = enemies.iterator();
  61.         while (i.hasNext()) {
  62.             Enemy enemy = i.next();
  63.             if (enemy.getX() >= 1200 || enemy.getX() <= -1200) {
  64.                 i.remove(); // удаляем элемент из коллекции
  65.             } else {
  66.                 enemy.move();
  67.                 graphics.drawImage(enemy.img, enemy.getX(), enemy.getY(), null);
  68.             }
  69.         }
  70.     }
  71.  
  72.     // вызывается каждый раз, когда что-либо происходит
  73.     @Override
  74.     public void actionPerformed(ActionEvent e) {
  75.         player.move();
  76.         repaint();
  77.         testCollision();
  78.     }
  79.  
  80.     private void testCollision() {
  81.  
  82.         Iterator<Enemy> i = enemies.iterator();
  83.         while (i.hasNext()) {
  84.             Enemy enemy = i.next();
  85.             if (player.getRectangle().intersects(enemy.getRectangle())) {
  86.                 JOptionPane.showMessageDialog(null, "YOU LOSE!!!!" + "\nYOUR SCORE IS " + player.getDistance());
  87.                 System.exit(1);
  88.             }
  89.         }
  90.     }
  91.  
  92.  
  93.     @Override
  94.     public void run() {
  95.         while (true) { // бесконечное создание врагов
  96.             Random random = new Random(); // случайная задержка
  97.             try {
  98.                 Thread.sleep(random.nextInt(2000)); // ститический метод, "заснем" на случайный промежуток времени
  99.  
  100.                 enemies.add(new Enemy(random.nextInt(400), 0, random.nextInt(15)+5));
  101.             } catch (InterruptedException | IOException e) {
  102.                 e.printStackTrace();
  103.             }
  104.         }
  105.     }
  106. }
  107.  
  108.  
  109.  
  110. import javax.imageio.ImageIO;
  111. import java.awt.*;
  112. import java.awt.event.KeyEvent;
  113. import java.awt.image.BufferedImage;
  114. import java.io.File;
  115. import java.io.IOException;
  116.  
  117. public class Player {
  118.  
  119.     BufferedImage img = ImageIO.read(new File("Images/rocket_2.png"));
  120.  
  121.     private final int width = img.getWidth();
  122.     private final int hight = img.getHeight();
  123.     private static final int maxRight = 400;
  124.     private static final int maxLeft = 2;
  125.  
  126.     private static int speed = 6;
  127.     private int direction = 0;
  128.     private int acceleration = 0;
  129.     private int distance = 0;
  130.     private int checkPoint = 500;
  131.     private int n = 1;
  132.  
  133.     int layer1 = 0;
  134.     int layer2 = -1334;
  135.  
  136.     int x = 190;
  137.     int y = 480;
  138.  
  139.     public Player() throws IOException {
  140.  
  141.     }
  142.  
  143.     public Rectangle getRectangle() {
  144.         return new Rectangle(x, y, width-40, hight-35);
  145.     }
  146.  
  147.     public void move() {
  148.  
  149.         distance += speed;
  150.  
  151.         if (distance >= checkPoint) {
  152.  
  153.             checkPoint += (1000 * n);
  154.             n += 1;
  155.             acceleration += 1;
  156.             speed += acceleration;
  157.         }
  158.  
  159.         x += direction;
  160.         if (x <= maxLeft) {
  161.             x = maxLeft;
  162.         }
  163.         if (x >= maxRight) {
  164.             x = maxRight;
  165.         }
  166.  
  167.  
  168.         if (layer2 + speed >= 0) {
  169.             layer1 = layer2 + speed;
  170.             layer2 = layer1 - 1334;
  171.         } else {
  172.             layer1 += speed;
  173.             layer2 += speed;
  174.         }
  175.     }
  176.  
  177.     public void keyPressed(KeyEvent e) {
  178.  
  179.         int key = e.getKeyCode();
  180.  
  181.         if (key == KeyEvent.VK_RIGHT) {
  182.             direction = 5;
  183.  
  184.         }
  185.  
  186.         if (key == KeyEvent.VK_LEFT) {
  187.             direction = -5;
  188.         }
  189.  
  190.     }
  191.  
  192.     public void keyReleased(KeyEvent e) {
  193.  
  194.         int key = e.getKeyCode();
  195.  
  196.         if (key == KeyEvent.VK_RIGHT | key == KeyEvent.VK_LEFT) {
  197.             direction = 0;
  198.         }
  199.     }
  200.  
  201.     public int getWidth() {
  202.         return width;
  203.     }
  204.  
  205.     public int getHight() {
  206.         return hight;
  207.     }
  208.  
  209.     public static int getSpeed() {
  210.         return speed;
  211.     }
  212.  
  213.     public int getDistance() {
  214.         return distance;
  215.     }
  216. }
  217.  
  218.  
  219.  
  220. import javax.imageio.ImageIO;
  221. import java.awt.*;
  222. import java.awt.image.BufferedImage;
  223. import java.io.File;
  224. import java.io.IOException;
  225.  
  226. public class Enemy {
  227.  
  228.     BufferedImage img = ImageIO.read(new File("/Users/test/Documents/Game/MyGame/Images/enemy.png"));
  229.  
  230.     private final int width = img.getWidth();
  231.     private final int hight = img.getHeight();
  232.  
  233.     private int x;
  234.     private int y;
  235.     private int speed;
  236.  
  237.     public Enemy(int x, int y, int speed) throws IOException {
  238.         this.x = x;
  239.         this.y = y;
  240.         this.speed = speed;
  241.     }
  242.  
  243.     public Rectangle getRectangle() {
  244.         return new Rectangle(x, y, width-35, hight-30);
  245.     }
  246.  
  247.     public void move() {
  248.         y = y + Player.getSpeed() + speed;
  249.     }
  250.  
  251.     public int getX() {
  252.         return x;
  253.     }
  254.  
  255.     public int getY() {
  256.         return y;
  257.     }
  258.  
  259.  
  260. }
  261.  
  262.  
  263.  
  264. import javax.swing.*;
  265. import java.awt.*;
  266.  
  267. public class DrawScreenSaver extends JPanel {
  268.  
  269.     Image img = new ImageIcon("/Users/test/Documents/Game/MyGame/Images/spaceX.jpg").getImage();
  270.  
  271.     @Override
  272.     protected void paintComponent(Graphics graphics) {
  273.         super.paintComponent(graphics);
  274.         graphics = (Graphics2D) graphics;
  275.         graphics.drawImage(img, 0, 0, null);
  276.     }
  277. }
  278.  
  279. import javax.imageio.ImageIO;
  280. import javax.swing.*;
  281. import java.awt.*;
  282. import java.awt.event.ActionEvent;
  283. import java.awt.event.ActionListener;
  284. import java.awt.image.BufferedImage;
  285. import java.io.File;
  286. import java.io.IOException;
  287.  
  288. public class Main {
  289.  
  290.     static JFrame frame = new JFrame("SPACE BATTLE");
  291.     static JButton button = new JButton("PLAY");
  292.     static JPanel panel = new JPanel();
  293.     static DrawScreenSaver screen = new DrawScreenSaver();
  294.     static GameField gameField;
  295.  
  296.     static {
  297.         try {
  298.             gameField = new GameField();
  299.         } catch (IOException e) {
  300.             e.printStackTrace();
  301.         }
  302.     }
  303.  
  304.     public static void main(String[] args) {
  305.     // write your code here
  306.  
  307.         frame.setSize(500, 700);
  308.         button.setPreferredSize(new Dimension(200, 100));
  309.         button.setBorderPainted(false);
  310.         button.setFont(new Font("Arial", Font.BOLD, 40));
  311.         button.setForeground(new Color(255, 188, 59));
  312.  
  313.         button.addActionListener(new Handler());
  314.         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  315.  
  316.         frame.setLocationRelativeTo(null);
  317.  
  318.         frame.getContentPane().add(screen);
  319.         screen.setLayout(new GridBagLayout());
  320.         screen.add(button);
  321.  
  322.         frame.setVisible(true);
  323.     }
  324.  
  325.     public static class Handler implements ActionListener {
  326.  
  327.         @Override
  328.         public void actionPerformed(ActionEvent e) {
  329.             if (e.getSource() == button) {
  330.  
  331. //                frame.getContentPane().remove(reader);
  332.  
  333.  
  334.                 /*frame.getContentPane().remove(panel);
  335.                 frame.getContentPane().add(reader);*/
  336.  
  337.                 frame.getContentPane().remove(screen);
  338.                 frame.getContentPane().add(gameField);
  339.                 frame.setVisible(true);
  340.             }
  341.         }
  342.     }
  343. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement