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
반응형
'즐거운프로그래밍' 카테고리의 다른 글
[자바] 직렬화(Serialization) (0) | 2023.10.24 |
---|---|
[자바] 간단한 슈팅게임 만들기 예제 2 (1) | 2023.10.24 |
[자바] 대화 상자 프로그램 포팅 : Java JWT 기반(복리 이자 계산기 만들기 2) (0) | 2023.10.24 |
[자바] 대화 상자 프로그램 포팅 : Java JWT 기반(복리 이자 계산기 만들기 1) (0) | 2023.10.24 |
[자바] Canvas의 이해와 활용(그림 파일 불러오기) (0) | 2023.10.24 |