즐거운프로그래밍

[자바] 간단한 슈팅게임 만들기 예제 1

수수께끼 고양이 2023. 10. 24. 16:55
728x90
반응형

 

참고 링크

GitHub - yongjun-hong/Java_Shooting_Game: Java를 이용한 간단한 Shooting game

 

GitHub - yongjun-hong/Java_Shooting_Game: Java를 이용한 간단한 Shooting game

Java를 이용한 간단한 Shooting game. Contribute to yongjun-hong/Java_Shooting_Game development by creating an account on GitHub.

github.com

 

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.security.Key;

public class Main {
    public static void main(String[] args) {
        EventQueue.invokeLater(() -> {
            ShootingGame game = new ShootingGame();
            game.setVisible(true);

        });
    }
}
    class ShootingGame extends JFrame {
        public ShootingGame() {

            this.add(new Screen()); // must be here!

            this.setTitle("Shooting Game");
            this.setResizable(false);
            this.pack();
            this.setLocationRelativeTo(null);
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 닫기 버튼 누르면 닫히는 명령어
        }
    }
    class Screen extends JPanel {
    private Image gameScreenImg;
    private Player player;

    public Screen() {
        gameScreenImg = new ImageIcon("images/game_Screen.jpg").getImage();
        int w = gameScreenImg.getWidth(this);
        int h = gameScreenImg.getHeight(this);
        this.setPreferredSize(new Dimension(w,h));
        this.setFocusable(true);

        player=new Player(w,h);

        this.addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent e) {
                super.keyPressed(e);
                if(e.getKeyCode()==KeyEvent.VK_ESCAPE) {
                    System.exit(0);
                }
                player.update(e);
                repaint(
                        player.getX()-5,
                        player.getY()-5,
                        player.getW()+10,
                        player.getH()+10);
            }
        });
    }
    public void paintComponent(Graphics g) {
        super.paintComponent(g);

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

        player.draw(g);

        Toolkit.getDefaultToolkit().sync();
    }
    }
    class Player {
        private Image playerImg;
        private int x, y;
        private int w, h;
        private int screenWidth, screenHeight;

        Player(int screenWidth, int screenHeight) {
            playerImg = new ImageIcon("images/player.png").getImage();
            x = 0;
            y = 0;
            w = playerImg.getWidth(null);
            h = playerImg.getHeight(null);
            this.screenWidth=screenWidth;
            this.screenHeight=screenHeight;
        }

        void draw(Graphics g) {
            g.drawImage(playerImg, x, y, null);
        }

        void update(KeyEvent e) {
            if (e.getKeyCode() == KeyEvent.VK_LEFT) {
                x -= 5;
                if (x < 0) {
                    x = 0;
                }
            }
            if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
                x += 5;
                if (x + w > screenWidth) {
                    x = screenWidth - w;
                }
            }
            if (e.getKeyCode() == KeyEvent.VK_UP) {
                y -= 5;
                if (y < 0) {
                    y = 0;
                }
            }
            if (e.getKeyCode() == KeyEvent.VK_DOWN) {
                y += 5;
                if (y + h > screenHeight) {
                    y = screenHeight - h;
                }
            }
        }
    int getX() {return x;}
    int getY() {return y;}
    int getW() {return w;}
    int getH() {return h;}
    }

 

비행기를 방향키로 움직일 수 있습니다

 

 

728x90
반응형