당신은 주제를 찾고 있습니까 “자바 슈팅 게임 – 자바(Java)로 슈팅 게임 만들기 (1.화면 구성)“? 다음 카테고리의 웹사이트 https://you.charoenmotorcycles.com 에서 귀하의 모든 질문에 답변해 드립니다: https://you.charoenmotorcycles.com/blog. 바로 아래에서 답을 찾을 수 있습니다. 작성자 동현 이(가) 작성한 기사에는 조회수 7,850회 및 좋아요 47개 개의 좋아요가 있습니다.
자바 슈팅 게임 주제에 대한 동영상 보기
여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!
d여기에서 자바(Java)로 슈팅 게임 만들기 (1.화면 구성) – 자바 슈팅 게임 주제에 대한 세부정보를 참조하세요
[자바(Java)] 슈팅 게임 만들기 (1.화면 구성)Intellij 설치법 : https://jwprogramming.tistory.com/99
소스 코드 : https://github.com/DongChyeon/Java-Mini-Projects/tree/master/ShootingGame
이미지 폴더 : https://github.com/DongChyeon/Java-Mini-Projects/tree/master/ShootingGame/src/images
자바 슈팅 게임 주제에 대한 자세한 내용은 여기를 참조하세요.
자바 비행기 게임 만들어보기 #1 – 빙허의 개발일기
오늘 자바의 Swing ( JFrame )에 대해 익숙해지기 위해서 GUI화면 상에 … 2D 슈팅 비행기 게임인 만큼 비행기를 움직이면서 미사일도 발사하고 스킬 …
Source: binghedev.tistory.com
Date Published: 5/24/2022
View: 192
조승현-기말-프로젝트-슈팅게임 – Home – IT GIT
import java.awt.event.KeyEvent; import java.util.Timer; import java.util.TimerTask;. public ShootingGame extends JFrame {
Source: itgit.cu.ac.kr
Date Published: 8/8/2021
View: 1254
JButton으로 슈팅게임 1-1 시작 패널 – MintPearl
그래픽에 두려움을 가진 사람으로서, 버튼으로 슈팅게임 만들기에 도전하기로 했어요! 이제 막 자바 공부 한 달 차로, 알고있는 선에서 만드는 …
Source: mintpearl-story.tistory.com
Date Published: 11/10/2021
View: 3633
[자바게임] 비행기 슈팅게임-paperplane 레포트 – 해피캠퍼스
[자바게임] 비행기 슈팅게임-paperplane · 소개글. 01. 개발 관련 게임 동향 및 게임 제작 동기 1.1 관련 게임 동향 1.2 게임 제작 동기 · 컴파일 실행환경. JAVA · 참고 자료.Source: www.happycampus.com
Date Published: 10/23/2022
View: 518
자바 소스코드: 움직이는 물체를 맞추는 사격 게임
import java.net.*; Ex5 extends JFrame{ Ex5(){ this.setTitle(“사격 게임”); this.setDefaultCloseOperation(JFrame.
Source: whiteit.tistory.com
Date Published: 8/8/2021
View: 9816
주제와 관련된 이미지 자바 슈팅 게임
주제와 관련된 더 많은 사진을 참조하십시오 자바(Java)로 슈팅 게임 만들기 (1.화면 구성). 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.
주제에 대한 기사 평가 자바 슈팅 게임
- Author: 동현
- Views: 조회수 7,850회
- Likes: 좋아요 47개
- Date Published: 2020. 9. 28.
- Video Url link: https://www.youtube.com/watch?v=HJtS3VcChPY
자바 비행기 게임 만들어보기 #1
자바를 배우고, 한번도 나만의 프로젝트를 해본 적이 없다.
즉, 처음부터 내가 모든 것을 설계하고, 코드를 짜본적이 없다는 것이다.
자바 공부를 하고는 있는데, 문득 뭔가 정체되있다는 기분이 들었다.
여러 개발 블로그에 동기부여를 받아, 나의 첫번째 사이드 프로젝트를 시작해보려고 한다.
‘시작이 반이다’라는 말이 있지 않은가?? 오늘부터 꾸준히 집중해서 만들어 보려고 한다.
모든 코드는 Github에 공유 할 생각이다.
틀린 개념이나 비효율적인 부분이 많을 것입니다.
여러 문제점에 대한 댓글 환영합니다~
주제
1945같은 2D로 된 비행기 게임을 구현할 예정이다.
Unity를 쓰지않고, 자바의 GUI를 사용할 예정이다.
이루고자 하는 목표
자바 익숙해지기 ( 클래스, 스레드 등등 )
객체지향 설계해보기
순서
오늘 자바의 Swing ( JFrame )에 대해 익숙해지기 위해서 GUI화면 상에 비행기를 띄워서 움직이는 것 까지 구현 해볼 예정이다.
자바 GUI로 비행기 출력
비행기 움직이기
자바 GUI로 비행기 출력
import javax.swing.*; import java.awt.*; // Main public class Main { public static void main(String[] args){ new Game_View(); } } public class Game_View extends JFrame { Toolkit imageTool = Toolkit.getDefaultToolkit(); Image flight = imageTool.getImage(“res/img/F4K.png”); public Game_View(){ // 프레임의 대한 설정. setTitle(“JFrame 테스트”); // 프레임 제목 설정. setSize(854,480); // 프레임의 크기 설정. setResizable(false); // 프레임의 크기 변경 못하게 설정. setVisible(true); // 프레임 보이기; setDefaultCloseOperation(DISPOSE_ON_CLOSE); // 프레임의 x버튼 누르면 종료; } @Override public void paint(Graphics g) { g.drawImage(flight, 100,100,this); // 비행기 이미지 출력. } }
비행기 출력 성공!
JFrame과 paint를 사용해서 비행기를 그려보았다. 이제 비행기의 움직임을 구현해보겠다.
비행기 움직이기
2D 슈팅 비행기 게임인 만큼 비행기를 움직이면서 미사일도 발사하고 스킬도 사용하고 해야한다.
이번엔 비행기를 움직이는 것까지 구현을 해 볼 예정이다.
import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Game_View extends JFrame implements Runnable{ // 이미지 파일 불러오는 툴킷. Toolkit imageTool = Toolkit.getDefaultToolkit(); Image flight = imageTool.getImage(“res/img/F4K.png”); // 플레이어 비행기의 위치값. int xpos = 100; int ypos = 100; public Game_View(){ // 프레임의 대한 설정. setTitle(“JFrame 테스트”); // 프레임 제목 설정. setSize(854,480); // 프레임의 크기 설정. setResizable(false); // 프레임의 크기 변경 못하게 설정. setVisible(true); // 프레임 보이기; // setDefaultCloseOperation(DISPOSE_ON_CLOSE); // 프레임의 x버튼 누르면 프레임스레드 종료. setDefaultCloseOperation(EXIT_ON_CLOSE); // 프레임의 x버튼 누르면 프로세스 종료. // 키 어댑터 ( 키 처리용 ) addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { switch(e.getKeyCode()) { case KeyEvent.VK_UP: ypos-=5; break; case KeyEvent.VK_DOWN: ypos+=5; break; case KeyEvent.VK_LEFT: xpos-=5; break; case KeyEvent.VK_RIGHT: xpos+=5; break; } } }); } // 움직임에 따른 그림 그리기. @Override public void paint(Graphics g) { System.out.println(“paint called”); g.clearRect(0,0,854, 480); g.drawImage(flight, xpos,ypos,this); } // repaint 스레드. @Override public void run() { try{ while(true) { repaint(); Thread.sleep(15); } } catch (Exception e){ e.printStackTrace(); } } } public class Main { public static void main(String[] args){ Game_View game_view = new Game_View(); new Thread(game_view).start(); } }
움직임 성공.
키 어댑터를 사용하여 키를 누를때마다 이벤트가 발생시키게 하였으며, repaint()를 지속적으로 해야해서 스레드를 하나 생성하여 새로운 흐름을 만들게 하였다. ( 뒤 포스터에서 수정 되었다. )
지속적으로 전체 화면을 지웠다가 다시 그리는거라 자주 깜빡거린다. 하지만 그래도 키 리스너를 연결시켜서 입력값에 따른 비행기의 움직임을 구현해보았다.
JButton으로 슈팅게임 1-1 시작 패널
그래픽에 두려움을 가진 사람으로서, 버튼으로 슈팅게임 만들기에 도전하기로 했어요!
이제 막 자바 공부 한 달 차로, 알고있는 선에서 만드는 것이므로, 수정이 필요한 부분은 조언 부탁드립니다.
– 전제 : 프레임 하나에 패널을 바꿔가며 화면을 바꾸는 형식을 취함
게임을 선택하는 프레임에 이 게임을 패널로 붙이는 방식
그러므로, 기본적으로 클래스는 패널이고, 기능은 패널에 추가로 붙임
public class Main_StartHere extends JFrame { Main_FirstPage firstPage; //게임 선택 패널 public Main_StartHere(){ this.setSize(500,800); //프레임 사이즈 설정 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //엑스 누르면 프로그램을 종료하도록 this.setResizable(false); //사이즈 변경 못하게 고정 this.setLocationRelativeTo(null); //스크린의 중앙에 뜨게 함 firstPage = new Main_FirstPage(this); this.add(firstPage); this.setVisible(true); //화면에 보이게 } public static void main(String[] args) { new Main_StartHere(); } }
– ‘Main_FirstPage’ 패널을 붙여줌
-엑션리스너로 버튼을 클릭하면 메인 프레임에 있는 메소드를 불러옴
package miniGame_Main_ChooseGame; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JPanel; public class Main_FirstPage extends JPanel implements ActionListener{ Main_StartHere main; private JButton btnGame1, btnGame2, btnGame3 ; //게임1, 게임2, 게임3 public Main_FirstPage(Main_StartHere main){ this.main = main; makeBtn(); } private void makeBtn() { //미니 게임 버튼 btnGame1 = new JButton(“Game1”); //버튼 생성 btnGame2 = new JButton(“Game2”); btnGame3 = new JButton(“Game3”); btnGame1.addActionListener(this); //엑션리스너 등록 btnGame2.addActionListener(this); btnGame3.addActionListener(this); this.add(btnGame1); //패널에 버튼 추가 this.add(btnGame2); this.add(btnGame3); } @Override public void actionPerformed(ActionEvent e) { if (e.getSource() == btnGame1) { main.Main_FiratPageToNext(1); } else if (e.getSource() == btnGame2) { main.Main_FiratPageToNext(2); } else if (e.getSource() == btnGame3) { main.Main_FiratPageToNext(3); } } }
– 메인페이지(Main_StartHere)에 해당 메소드를 넣어줌
– ‘Main_FirstPage’에서 입력한 번호에 따라 붙일 게임 패널을 결정하는 메소드
-‘Main_FirstPage’를 지우고, 이프문으로 해당 패널을 붙인 뒤 프레임 화면을 갱신한다.
– (중요) this.repaint();
this.revalidate();
void Main_FiratPageToNext(int i) { this.remove(firstPage); if (i == 1) { yunGame = new GameYun_MainPnl(this); this.add(yunGame); } else if (i ==2) { anGame = new Game2_MainPnl(this); this.add(Game2); } else if (i ==3) { parkGame = new Game3_MainPnl(this); this.add(Game3); } this.repaint(); this.revalidate(); }
-‘GameYun_MainPnl’
– 이미지는 저작권 무료사이트에서 가져왔고, 글과 화살표는 포토샵으로 넣음
– JLabel로 표현하는데는 한계가 있기도 하고, 비효율적이라 생략
– 다음페이지 가는 버튼 부분에 미리 이미지를 넣고, 비슷한 크기로 버튼을 놓은 뒤 투명하게 처리함
-엑션리스너로 버튼을 클릭하면 메인 프레임에 있는 메소드를 불러옴
– (중요) 아래와 같이 배경화면을 입력하지 않고 이미지 아이콘을 생성해서 배경을 삽입하게되면
버튼이 패널의 뒤로 숨는 오류가 발생하므로, 되도록이면 아래와 같이 처리
+ 다른 해결 방법이 있다면 조언 부탁
import java.awt.Graphics; import java.awt.Image; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.JButton; import javax.swing.JPanel; import miniGame_Main_ChooseGame.Main_StartHere; //타 폴더 public class GameYun_MainPnl extends JPanel implements ActionListener{ Main_StartHere main; private Image backgroundImage; //배경 이미지 private JButton btnNext; public GameYun_MainPnl(Main_StartHere main){ this.main = main;//프레임을 가지고 온다 this.setSize(500,800); this.setLayout(null); try {//배경 이미지 삽입 backgroundImage = ImageIO.read(new File(“오프닝1.jpg”)); } catch (IOException e) { e.printStackTrace(); } btnNext = new JButton(); // 다음 페이지로 가는 버튼 btnNext.setBounds(290, 705, 150, 50); btnNext.setBorderPainted(false); btnNext.setFocusPainted(false); btnNext.setContentAreaFilled(false); btnNext.addActionListener(this); this.add(btnNext); } @Override protected void paintComponent(Graphics g) { //이미지 작업 super.paintComponent(g); g.drawImage(backgroundImage,0,0,500,800,null); } @Override public void actionPerformed(ActionEvent e) { main.GameYun_MainPnlToNext(); } }
-Main_StartHere의 아래에 다음 패널을 연결하는 메소드를 추가한다.
– 이 방법의 단점은 페이지가 많을수록 메소드 수가 계속 늘어난다는 것
public void GameYun_MainPnlToNext() { //1번 패널에서 2번 메인 패널로 이동 this.remove(yunGame); main2 = new MainPnl2(this); this.add(main2); this.repaint(); this.revalidate(); }
-오늘은 졸리니까 여기 까지 :<
[자바게임] 비행기 슈팅게임-paperplane 레포트
파일의 다운로드가 제대로 되지 않거나 파일형식에 맞는 프로그램으로 정상 작동하지 않는 경우
다른 자료와 70% 이상 내용이 일치하는 경우 (중복임을 확인할 수 있는 근거 필요함)
인터넷의 다른 사이트, 연구기관, 학교, 서적 등의 자료를 도용한 경우
자료의 설명과 실제 자료의 내용이 일치하지 않는 경우
자바 소스코드: 움직이는 물체를 맞추는 사격 게임
package javaapplication30 ; import java.applet.* ; import java.awt.* ; import java.awt.event.* ; import javax.swing.* ; import javax.swing.event.* ; import java.net.* ; class Ex5 extends JFrame { Ex5(){ this . setTitle( “사격 게임” ); this . setDefaultCloseOperation( JFrame . EXIT_ON_CLOSE ); GamePanel p = new GamePanel (); this . add(p); this . setLocationRelativeTo( null ); this . setSize( 300 , 300 ); this . setResizable( false ); this . setVisible( true ); p . startGame(); } } class GamePanel extends JPanel { TargetThread targetThread; JLabel base = new JLabel (); JLabel bullet = new JLabel (); JLabel target; //AudioClip sound; GamePanel(){ this . setLayout( null ); base . setSize( 40 , 40 ); base . setOpaque( true ); base . setBackground( Color . black); ImageIcon img = new ImageIcon ( “chicken.jpg” ); target = new JLabel (img); //이미지 크기만큼 레이블 크기 설정 target . setSize(img . getIconWidth(),img . getIconHeight()); bullet . setSize( 10 , 10 ); bullet . setOpaque( true ); bullet . setBackground( Color . red); this . add(base); this . add(target); this . add(bullet); //URL url = Ex5.class.getResource(“LASER.wav”); //sound = Applet.newAudioClip(url); } public void startGame (){ base . setLocation( this . getWidth() / 2 – 20 , this . getHeight() – 40 ); bullet . setLocation( this . getWidth() / 2 – 5 , this . getHeight() – 50 ); target . setLocation( 0 , 0 ); //타겟을 움직이는 스레드 targetThread = new TargetThread (target); targetThread . start(); //베이스에 초점을 두고 엔터키 입력에 따라 bullet스레드 실행 base . requestFocus(); base . addKeyListener( new KeyListener (){ BulletThread bulletThread = null ; @Override public void keyTyped ( KeyEvent ke ) { } @Override public void keyPressed ( KeyEvent ke ) { if (ke . getKeyChar() == KeyEvent . VK_ENTER ){ //스레드가 죽어있는 상태인지 확인 if (bulletThread == null || ! bulletThread . isAlive()){ //sound.play(); //총알로 타겟을 맞췄는지 확인하기 위해 2개의 레이블과 타겟스레드를 넘겨준다. bulletThread = new BulletThread (bullet,target,targetThread); bulletThread . start(); } } } @Override public void keyReleased ( KeyEvent ke ) { } }); } class TargetThread extends Thread { JLabel target; TargetThread ( JLabel target ){ this . target = target; target . setLocation( 0 , 0 ); } public void run (){ while ( true ){ int x = target . getX() + 5 ; //5픽셀씩 이동 int y = target . getY(); //프레임 밖으로 나갈경우 if (x > GamePanel . this . getWidth()) target . setLocation( 0 , 0 ); //프레임 안에 있을경우 5픽셀씩 이동 else target . setLocation(x, y); //0.02초마다 이동 try { sleep( 20 ); } //스레드가 죽게되면 초기 위치에 위치하고, 0.5초를 기다린다. catch ( Exception e){ target . setLocation( 0 , 0 ); try { sleep( 500 ); } catch ( Exception e2){} } } } } class BulletThread extends Thread { JLabel bullet,target; Thread targetThread; public BulletThread ( JLabel bullet , JLabel target , Thread targetThread ){ this . bullet = bullet; this . target = target; this . targetThread = targetThread; } public void run (){ while ( true ){ if (hit()){ //타겟이 맞았다면 targetThread . interrupt(); //타겟 스레드를 죽인다. //총알은 원래 위치로 이동 bullet . setLocation(bullet . getParent() . getWidth() / 2 – 5 , bullet . getParent() . getHeight() – 50 ); return ; //총알 스레드도 죽인다. } else { int x = bullet . getX(); int y = bullet . getY() – 5 ; //5픽셀씩 위로 이동한다.=총알 속도가 5픽셀 //총알이 프레임 밖으로 나갔을 때 if (y < 0 ){ //총알 원래 위치로 이동 bullet . setLocation(bullet . getParent() . getWidth() / 2 - 5 , bullet . getParent() . getHeight() - 50 ); return ; //총알 스레드를 죽인다. } //총알이 프레임 안에 있으면 5픽셀씩 이동한다. else bullet . setLocation(x, y); } //0.02초마다 5픽셀씩 이동 try { sleep( 20 ); } catch ( Exception e){} } } private boolean hit (){ int x = bullet . getX(); int y = bullet . getY(); int w = bullet . getWidth(); int h = bullet . getHeight(); if (targetContains(x,y) || targetContains(x + w - 1 ,y) || targetContains(x + w - 1 ,y + h - 1 ) || targetContains(x,y + h - 1 )) return true ; else return false ; } private boolean targetContains ( int x , int y ){ //타겟의 x좌표가 총알 x좌표보다 작거나 같으며 총알 x좌표보다 타겟 x좌표 + 타겟의 가로 길이가 크고 if (((target . getX() <= x) && (x < target . getX() + target . getWidth())) //타겟의 y좌표가 총알 y좌표보다 작거나 같으며 총알 y좌표보다 타겟 y좌표 + 타겟의 세로 길이가 크면 && ((target . getY() <= y) && (y < target . getY() + target . getHeight()))) return true ; else return false ; } } } public class JavaApplication30 { public static void main ( String [] args ) { new Ex5 (); } } <결과>
2016/11/14 – [자바] – 자바 소스코드: 아무거나 빨리 눌러 바 채우기
2016/11/14 – [자바] – 자바 소스코드: 스레드 충돌 예제
2016/11/14 – [자바] – 자바 소스코드: 스레드 충돌 방지 예제
#자바 #자바 소스코드 #명품자바 프로그래밍 13장 5번 #명품 자바 프로그래밍 13장 #움직이는 물체를 맞추는 사격 게임 #스레드 #키 리스너
키워드에 대한 정보 자바 슈팅 게임
다음은 Bing에서 자바 슈팅 게임 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.
이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!
사람들이 주제에 대해 자주 검색하는 키워드 자바(Java)로 슈팅 게임 만들기 (1.화면 구성)
- 자바
- JAVA
- 슈팅게임
- 프로그래밍
- 코딩
자바(Java)로 #슈팅 #게임 #만들기 #(1.화면 #구성)
YouTube에서 자바 슈팅 게임 주제의 다른 동영상 보기
주제에 대한 기사를 시청해 주셔서 감사합니다 자바(Java)로 슈팅 게임 만들기 (1.화면 구성) | 자바 슈팅 게임, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.