Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import javax.swing.*;
- import java.awt.*;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.awt.event.KeyAdapter;
- import java.awt.event.KeyEvent;
- import java.io.IOException;
- import java.util.ArrayList;
- import java.util.Iterator;
- import java.util.Random;
- public class GameField extends JPanel implements ActionListener, Runnable {
- private Timer timer = new Timer(20, this); // частота обновления кадров (отрисовки) , запускает фукцию экшн перформед каждые 20 мс
- private Image img = new ImageIcon("Images/background.jpg").getImage();
- private Player player = new Player();
- private Thread enemiesRespawn = new Thread(this);
- private java.util.List<Enemy> enemies = new ArrayList<Enemy>();
- public GameField() throws IOException {
- timer.start();
- enemiesRespawn.start();
- addKeyListener(new MyKeyAdapter());
- setFocusable(true);
- }
- public class MyKeyAdapter extends KeyAdapter {
- public void keyPressed(KeyEvent e){
- player.keyPressed(e);
- }
- public void keyReleased(KeyEvent e){
- player.keyReleased(e);
- }
- }
- public void paint(Graphics graphics) {
- graphics = (Graphics2D) graphics;
- graphics.drawImage(img, 0, player.layer1, null);
- graphics.drawImage(img, 0, player.layer2, null);
- graphics.drawImage(player.img, player.x, player.y, null);
- int distance = player.getDistance();
- graphics.setColor(Color.ORANGE);
- Font font = new Font("Arial", Font.BOLD, 20);
- graphics.setFont(font);
- graphics.drawString("Score: " + distance, 190, 35);
- Iterator<Enemy> i = enemies.iterator();
- while (i.hasNext()) {
- Enemy enemy = i.next();
- if (enemy.getX() >= 1200 || enemy.getX() <= -1200) {
- i.remove(); // удаляем элемент из коллекции
- } else {
- enemy.move();
- graphics.drawImage(enemy.img, enemy.getX(), enemy.getY(), null);
- }
- }
- }
- // вызывается каждый раз, когда что-либо происходит
- @Override
- public void actionPerformed(ActionEvent e) {
- player.move();
- repaint();
- testCollision();
- }
- private void testCollision() {
- Iterator<Enemy> i = enemies.iterator();
- while (i.hasNext()) {
- Enemy enemy = i.next();
- if (player.getRectangle().intersects(enemy.getRectangle())) {
- JOptionPane.showMessageDialog(null, "YOU LOSE!!!!" + "\nYOUR SCORE IS " + player.getDistance());
- System.exit(1);
- }
- }
- }
- @Override
- public void run() {
- while (true) { // бесконечное создание врагов
- Random random = new Random(); // случайная задержка
- try {
- Thread.sleep(random.nextInt(2000)); // ститический метод, "заснем" на случайный промежуток времени
- enemies.add(new Enemy(random.nextInt(400), 0, random.nextInt(15)+5));
- } catch (InterruptedException | IOException e) {
- e.printStackTrace();
- }
- }
- }
- }
- import javax.imageio.ImageIO;
- import java.awt.*;
- import java.awt.event.KeyEvent;
- import java.awt.image.BufferedImage;
- import java.io.File;
- import java.io.IOException;
- public class Player {
- BufferedImage img = ImageIO.read(new File("Images/rocket_2.png"));
- private final int width = img.getWidth();
- private final int hight = img.getHeight();
- private static final int maxRight = 400;
- private static final int maxLeft = 2;
- private static int speed = 6;
- private int direction = 0;
- private int acceleration = 0;
- private int distance = 0;
- private int checkPoint = 500;
- private int n = 1;
- int layer1 = 0;
- int layer2 = -1334;
- int x = 190;
- int y = 480;
- public Player() throws IOException {
- }
- public Rectangle getRectangle() {
- return new Rectangle(x, y, width-40, hight-35);
- }
- public void move() {
- distance += speed;
- if (distance >= checkPoint) {
- checkPoint += (1000 * n);
- n += 1;
- acceleration += 1;
- speed += acceleration;
- }
- x += direction;
- if (x <= maxLeft) {
- x = maxLeft;
- }
- if (x >= maxRight) {
- x = maxRight;
- }
- if (layer2 + speed >= 0) {
- layer1 = layer2 + speed;
- layer2 = layer1 - 1334;
- } else {
- layer1 += speed;
- layer2 += speed;
- }
- }
- public void keyPressed(KeyEvent e) {
- int key = e.getKeyCode();
- if (key == KeyEvent.VK_RIGHT) {
- direction = 5;
- }
- if (key == KeyEvent.VK_LEFT) {
- direction = -5;
- }
- }
- public void keyReleased(KeyEvent e) {
- int key = e.getKeyCode();
- if (key == KeyEvent.VK_RIGHT | key == KeyEvent.VK_LEFT) {
- direction = 0;
- }
- }
- public int getWidth() {
- return width;
- }
- public int getHight() {
- return hight;
- }
- public static int getSpeed() {
- return speed;
- }
- public int getDistance() {
- return distance;
- }
- }
- import javax.imageio.ImageIO;
- import java.awt.*;
- import java.awt.image.BufferedImage;
- import java.io.File;
- import java.io.IOException;
- public class Enemy {
- BufferedImage img = ImageIO.read(new File("/Users/test/Documents/Game/MyGame/Images/enemy.png"));
- private final int width = img.getWidth();
- private final int hight = img.getHeight();
- private int x;
- private int y;
- private int speed;
- public Enemy(int x, int y, int speed) throws IOException {
- this.x = x;
- this.y = y;
- this.speed = speed;
- }
- public Rectangle getRectangle() {
- return new Rectangle(x, y, width-35, hight-30);
- }
- public void move() {
- y = y + Player.getSpeed() + speed;
- }
- public int getX() {
- return x;
- }
- public int getY() {
- return y;
- }
- }
- import javax.swing.*;
- import java.awt.*;
- public class DrawScreenSaver extends JPanel {
- Image img = new ImageIcon("/Users/test/Documents/Game/MyGame/Images/spaceX.jpg").getImage();
- @Override
- protected void paintComponent(Graphics graphics) {
- super.paintComponent(graphics);
- graphics = (Graphics2D) graphics;
- graphics.drawImage(img, 0, 0, null);
- }
- }
- import javax.imageio.ImageIO;
- import javax.swing.*;
- import java.awt.*;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.awt.image.BufferedImage;
- import java.io.File;
- import java.io.IOException;
- public class Main {
- static JFrame frame = new JFrame("SPACE BATTLE");
- static JButton button = new JButton("PLAY");
- static JPanel panel = new JPanel();
- static DrawScreenSaver screen = new DrawScreenSaver();
- static GameField gameField;
- static {
- try {
- gameField = new GameField();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- public static void main(String[] args) {
- // write your code here
- frame.setSize(500, 700);
- button.setPreferredSize(new Dimension(200, 100));
- button.setBorderPainted(false);
- button.setFont(new Font("Arial", Font.BOLD, 40));
- button.setForeground(new Color(255, 188, 59));
- button.addActionListener(new Handler());
- frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- frame.setLocationRelativeTo(null);
- frame.getContentPane().add(screen);
- screen.setLayout(new GridBagLayout());
- screen.add(button);
- frame.setVisible(true);
- }
- public static class Handler implements ActionListener {
- @Override
- public void actionPerformed(ActionEvent e) {
- if (e.getSource() == button) {
- // frame.getContentPane().remove(reader);
- /*frame.getContentPane().remove(panel);
- frame.getContentPane().add(reader);*/
- frame.getContentPane().remove(screen);
- frame.getContentPane().add(gameField);
- frame.setVisible(true);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement