자바 매일 쿨 러 닝 게임 전체 코드 실현(소스 코드 첨부)

49029 단어 Java매일게임.
우선 필요 한 문 서 를 작성 하 십시오.
1.프로젝트 명칭:(RunDay)
2.기능 소개:
관문 돌파 게임,유저 로그 인 후 게임 입장 을 선택,키 보드 를 통 해 유저 의 상하 좌우 이동 을 제어,회피
장애물 과 금 화 를 먹 으 면 게이머 들 이 피 하 는 장애물 이 많 을 수록 쿨 링 거리 가 멀 어 지고 게이머 들 이 먹 는 금화 가 많 을 수록 득점 이 높다.
3.기능 모듈:
1,로그 인 인터페이스
사용자 이름(입력 상자,명문)비밀번호(입력 상자,비밀문서)로그 인,취소 단추
2,메뉴 선택 인터페이스
게임 시작 단추(그림 단추)도움말 단추 종료 단추
3.버퍼 로드 인터페이스
진 도 를 자동 으로 불 러 옵 니 다.불 러 온 후 다음 화면 으로 이동 합 니 다.
4.게임 메 인 화면
이동 하 는 배경 사진,동태 적 인 게이머,다섯 가지 장애물 이 지속 적 으로 나타 나 고 게이머 와 장애물 의 충돌,
일시 정지,계속 기능,유저 의 이동 기능
5,종료 인터페이스
플레이어 의 득점,쿨 링 거 리 를 획득 합 니 다.게임 을 계속 하고 메 인 메뉴 로 돌아 가 는 기능.
개발 자:Huey
버 전 번호:1.0
6.개발 시간:2020.11.16
개발 모드:MVC 모드
M:Model(데이터 층)은 실체 류 를 저장 합 니 다.
V:View(디 스 플레이 층)는 인터페이스 에 관 한 클래스 를 저장 합 니 다.
C:Controller(제어 층)는 관련 논리 층 코드 를 저장 합 니 다.
기업 급 프로젝트 명명 규범:
cn.sqc.runday.view
1.로그 인 인터페이스
인터페이스 기능 수요 도 는 다음 과 같다.

다음 에 우 리 는 관련 사진 소 재 를 가 져 오 는 준 비 를 좀 더 한다.
매일 쿨 하 게 달 리 는 그림(Image)자원 을 데스크 톱 에 압축 해제 한 후(Image 파일 은 다음 그림 과 같 습 니 다:)

Eclipse 에 복사 하려 면 src 를 누 르 고 Ctrl+V 를 누 르 십시오.

본 고 는 cn.sqc.runday.view 라 는 인터페이스 내용 을 실현 할 것 이다.
관련 코드 는 다음 과 같 습 니 다.

package cn.sqc.runday.view;
import java.awt.Font;
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.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
/**
 * 
 * @author Huey
 * @date 2020-11-16
 *     :                      
 *
 */
public class LoginFrame extends JFrame{
//     (  )
 JLabel userLabel;
//      (     )
 JTextField userField;
//    (  )
 JLabel userLabel2;
//     (     )
 JPasswordField userField2;
//    、    (  )
 JButton Login,Cancel;
public LoginFrame() {//   alt / (    ) 
 userLabel = new JLabel("   "); 
//    
 userLabel.setFont(new Font("    ",Font.BOLD,18)); 
 userLabel2 = new JLabel("   ");
 userLabel2.setFont(new Font("    ",Font.BOLD,18));
//    :    
 userLabel.setBounds(20, 220, 100, 30);//x  ,y  ,         
this.add(userLabel);//                ,    
 userLabel2.setBounds(20, 280, 100, 30);
this.add(userLabel2);
//      
 userField = new JTextField();
 userField.setBounds(80, 220, 100, 30);
//         
 userField.setBorder(BorderFactory.createLoweredBevelBorder());
//         
 userField.setOpaque(false);
this.add(userField);
 userField2 = new JPasswordField();
 userField2.setBounds(80, 280, 100, 30);
 userField2.setBorder(BorderFactory.createLoweredBevelBorder());
 userField2.setOpaque(false);
this.add(userField2);
//    
 Login = new JButton("  ");
 Login.setBounds(45,350,60,36);
//Login.setBackground(new Color(44,22,44));//   
//Login.setForeground(Color.BLUE);//    
//           
 Login.addActionListener(new ActionListener() {//ActionListener alt /
@Override
public void actionPerformed(ActionEvent e) {
//System.out.println("      ");
//           
 String userName = userField.getText();
 String passWord = userField2.getText();//    :     ,    
if("Huey".equals(userName) && "123".equals(passWord)){
//    
 JOptionPane.showMessageDialog(null, "  "+userName+"        ");
//       
//      
 dispose();
 }else if("".equals(userName) || "".equals(passWord)){
//    
 JOptionPane.showMessageDialog(null, "    /       ,     !");
 }else{
 JOptionPane.showMessageDialog(null, "    /       ,     !");
 }
 }
 });
this.add(Login);
//    
 Cancel = new JButton("  ");
 Cancel.setBounds(135,350,60,36);
this.add(Cancel);
 Cancel.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
 dispose();
 }
 });
//      ,        
 LoginPanel panel = new LoginPanel();
this.add(panel); 
//           
this.setSize(900,530);
this.setLocationRelativeTo(null);//    
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setUndecorated(true);
//     Logo  
this.setIconImage(new ImageIcon("Image/115.png").getImage());//    
this.setVisible(true);
 }
//    main   main + Alt /
public static void main(String[] args) {
new LoginFrame();
 }
class LoginPanel extends JPanel{//  
//      
 Image background;//------ctr shift + o   
public LoginPanel() {//-----alt /          {   ,     
//      ,   background  
try {//-----      ,           
 background = ImageIO.read(new File("Image/login.jpg"));//----read   File  
 } catch (IOException e) {//-------      
//         
 e.printStackTrace();
 }
 }
//    
@Override
public void paint(Graphics g) {
super.paint(g);
//      
 g.drawImage(background, 0, 0,900,530, null);//900,530   
 }
 }
}
//throws ......   ,         ,    :   
코드 구 조 를 더욱 명확 하 게 보기 위해 서 일부 코드 의 역할 도 메 인 을 드 립 니 다.
LoginFrame 역할 영역 마지막 까지}

LoginPanel 코드 블록:

실행 결과 캡 처:
1.인터페이스

2.로그 인
2.1 사용자 이름과 비밀번호 가 비어 있 는 경우:

2.2 사용자 이름 이나 비밀번호 입력 이 잘못된 경우:


2.3.사용자 이름과 비밀번호 입력 이 정확 한 경우:


팝 업 창 에 있 는"확인"을 누 르 면 바로 종료 합 니 다.
3.탈퇴
"취소"를 누 르 면 됩 니 다.
2.게임 시작 화면
앞에서 우 리 는 로그 인 인터페이스의 구축 을 완성 했다.그 다음 에 게임 인터페이스의 구축 을 완성 하고 로그 인 인터페이스 와 게임 인터페이스 를 시작 하 는 다 리 를 구축 할 것 이다.
사용자 이름과 비밀 번 호 를 입력 하면 게임 시작 인터페이스 에 들 어 갈 수 있 는 기능 을 실현 합 니 다.
인터페이스 기능 요구 도:

구체 적 인 요구:
마우스 가 게임 시작 단 추 를 옮 기 면 단 추 는 어둠 에서 밝 아 지고 마 우 스 를 옮 기 면 단 추 는 밝 음 에서 어 두 워 집 니 다.
도움말,떠 나 기 버튼 이 같 습 니 다.
또한,클릭 하여 떠 날 때 현재 화면 을 닫 는 효 과 를 실현 해 야 합 니 다.
상위 코드:

package cn.sqc.runday.view;

import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

import cn.sqc.runday.controller.WindowFrame;

public class MainFrame extends JFrame implements MouseListener {
 //            
 /**
 * 1.1、                          logo  
 1.2、      MainPanel,        

 2.      
 */
 //2.1                   
 JLabel start,help,exit;

 JPanel MainPanel;

 public MainFrame() {//    ,    。  main     
 //2.2
 start = new JLabel(new ImageIcon("Image/hh1.png"));//ImageIcon:  
 start.setBounds(350,320,150,40);
 start.setEnabled(false);//false      
 start.addMouseListener(this);
 this.add(start);

 help = new JLabel(new ImageIcon("Image/hh2.png"));
 help.setBounds(350,420,150,40);
 help.setEnabled(false);
 help.addMouseListener(this);
 this.add(help);

 exit = new JLabel(new ImageIcon("Image/hh3.png"));
 exit.setBounds(350, 520, 150, 40);
 exit.setEnabled(false);
 exit.addMouseListener(this);
 this.add(exit);


 /**1.           */
 MainPanel panel = new MainPanel();
 this.add(panel);

 //                          logo  
 this.setSize(1200,730);//  
 this.setLocationRelativeTo(null);//  
 this.setUndecorated(true);//    
 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//    
 this.setIconImage(new ImageIcon("Image/115.png").getImage());//logo
 this.setVisible(true); 
 }

 public static void main(String[] args) {
 new MainFrame();
 }

 //2、      MainPanel,        
 class MainPanel extends JPanel{//   MainPanel , MainFrame   
 Image background; 
 public MainPanel() {
 try {
 background = ImageIO.read(new File("Image/main.png"));
 } catch (IOException e) {
 e.printStackTrace();
 }
 }
 @Override
 public void paint(Graphics g) {
 super.paint(g);
 g.drawImage(background, 0, 0,1200,730, null);
 }
 }

//           implements MouseListener  ,     
 @Override
 public void mouseClicked(MouseEvent e) {
 //    
 if(e.getSource().equals(start)){
 //       
 new WindowFrame().Start();
 //      
 //dispose();
 }else if(e.getSource().equals(exit)){
 dispose();
 }else if(e.getSource().equals(help)){
 JOptionPane.showMessageDialog(null, "         :Huey");
 }

 }
 @Override
 public void mousePressed(MouseEvent e) {
 // TODO Auto-generated method stub

 }
 @Override
 public void mouseReleased(MouseEvent e) {
 // TODO Auto-generated method stub

 }
 @Override
 public void mouseEntered(MouseEvent e) {
 //     
 if(e.getSource().equals(start)){//e     。e.getSource()    
 //       (start)  (    )
 start.setEnabled(true);
 }else if(e.getSource().equals(help)){
 help.setEnabled(true);
 }else if(e.getSource().equals(exit)){
 exit.setEnabled(true);
 }
 }
 @Override
 public void mouseExited(MouseEvent e) {
 //    
 if(e.getSource().equals(start)){
 start.setEnabled(false);
 }else if(e.getSource().equals(help)){
 help.setEnabled(false);
 }else if(e.getSource().equals(exit)){
 exit.setEnabled(false);
 }
 }
}
테스트:
위의 아 쉬 움 을 먼저 메 우 고 new MainFrame()을 더 합 니 다.어구우리 가 방금 쓴 시작 게임 화면 을 호출 합 니 다.

로그 인 화면:

확인 을 누 르 십시오

우리 가 작성 한 로그 인 게임 인터페이스 에 완벽 하 게 들 어 갑 니 다:

지금 보기 시작 버튼:

도움말 단추:

도움말 버튼 클릭:

종료 단추:

클릭:

큰 성 과 를 거두다.
3.버퍼 로 딩 게임 인터페이스
앞에서 우 리 는 게임 인터페이스의 구축 을 완성 했다.다음은 버퍼 로드 인터페이스 구축 을 실현 할 것 입 니 다.그리고 앞의 두 인터페이스 와 의 다 리 를 구축한다.
정확 한 사용자 이름 비밀 번 호 를 입력 한 후 게임 시작 인터페이스 에 들 어가 게임 시작 단 추 를 클릭 한 후 버퍼 로 딩 인터페이스 에 들 어 가 는 기능 을 실현 합 니 다.
인터페이스 설명도:

구체 적 인 요구:
캐 시 로드 인터페이스:배경 그림,진도 바
  • 동적 로드 과정.(루틴
    우 리 는 동적 버퍼 로드 과정 을 실현 하고 진 도 를 움 직 이려 면 스 레 드 의 개념 을 도입 해 야 한다.스 레 드:
    Thread 클래스 에서 이렇게 정의 합 니 다:
    스 레 드 는 프로그램 에서 실행 되 는 스 레 드 입 니 다.자바 가상 컴퓨터 는 프로그램 이 여러 개의 실행 스 레 드 를 동시에 실행 할 수 있 도록 합 니 다.
    예 를 들 어 바 이 두 네트워크 로 영화 한 편 을 다운로드 하 는 것 이 스 레 드 입 니 다.만약 당신 이 여러 편의 영 화 를 동시에 다운로드 한다 면,이것 은 다 중 스 레 드 입 니 다.
    1.스 레 드 는 6 가지 상태 가 있 습 니 다.새로 만 들 기,실행,차단,대기,시간 측정 대기 와 종료.
    새 스 레 드:new 연산 자 를 사용 하여 새 스 레 드 를 만 들 때 스 레 드 는'새 스 레 드'상태 에 있 습 니 다.
    실행 가능(실행 가능):start()방법 을 호출 합 니 다.
    차단:스 레 드 가 대상 의 내 장 된 자 물 쇠 를 가 져 와 야 할 때 이 자 물 쇠 는 다른 스 레 드 에 의 해 가지 고 있 습 니 다.
    대기:스 레 드 가 다른 스 레 드 알림 스케줄 러 가 실 행 될 때 까지 기 다 립 니 다.
    시간 계산 대기:Thread 와 같은 시간 매개 변 수 를 포함 하 는 sleep().
    종료:run()방법 이 실행 되 거나 이상 이 발생 했 을 때.
    2.스 레 드 를 만 드 는 두 가지 방법:
    1.Runnable 실현
    2.Thread 클래스 구현
    직접 코드 올 리 기:
    
    package cn.sqc.runday.controller;
    
    import java.awt.BorderLayout;
    import java.awt.Color;
    
    import javax.swing.ImageIcon;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JProgressBar;
    
    /**
     * 
     * @author Huey
     * @date 2020-11-18
     *       :    、   
     *       。(  )
     * 
     */
    public class WindowFrame extends JFrame implements Runnable{
     JLabel background;
     //   
     JProgressBar jdt;
    
     //         
     public void Start(){
     WindowFrame frame = new WindowFrame();
     Thread t = new Thread(frame);//t    
     //    
     t.start();
     dispose();
     }
     public WindowFrame() {
     background = new JLabel(new ImageIcon("Image/hbg.jpg"));
     this.add(BorderLayout.NORTH,background);//      
     jdt = new JProgressBar();
     jdt.setStringPainted(true);//            。0%
     jdt.setBackground(Color.ORANGE);
     this.add(BorderLayout.SOUTH,jdt);
     //   568 * 340
     this.setSize(568,340);
     this.setLocationRelativeTo(null);
     this.setDefaultCloseOperation(3);
     this.setUndecorated(true);
     this.setIconImage(new ImageIcon("Image/115.png").getImage()); 
     this.setVisible(true); 
     }
     public static void main(String[] args) {
     new WindowFrame().Start();
     }
     @Override
     public void run() {
     //     ,         
     int [] values = {0,1,3,10,23,32,40,47,55,66,76,86,89,95,99,99,99,100};
     for(int i=0; i<values.length; i++){//      
     jdt.setValue(values[i]);
     //    
     try {
     Thread.sleep(200);
     } catch (InterruptedException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
     }//200  
     }
     }
    
    }
    인터페이스 코드 를 불 러 오고 다 리 를 만 듭 니 다.

    지금,우 리 는 첫 번 째 로그 인 인터페이스 부터 테스트 를 시작 합 니 다.

    클릭 하여 게임 시작:

    비 정지 화면...


    성공 실현!
    4.게임 메 인 화면
    다음 에 게임 메 인 화면 을 실현 할 것 입 니 다.기능 은 다음 과 같 습 니 다.
    이동 하 는 배경 그림,동적 유저,유저 의 이동 기능,
    다섯 가지 장애물 이 지속 적 으로 나타 나 고 게이머 와 장애물 의 충돌,
    일시 정지,계속 기능.
    우선 전체적인 효 과 를 살 펴 보 자.
    움 직 이 는 그림 이 너무 커서 몇 초 에 Gif 가 10 조 원 이에 요.어 쩔 수 없 이 사진 전시 효과.
    점프,득점,낙하,장애물:

    장애물 에 부 딪 힌 후 유 저 는 밀 려 갔다.

    다음은 각 기능 의 논 리 를 설명 한다.
    1.디 스 플레이 창 을 만 들 고 게임 을 탑재 하 는 메 인 패 널 류 를 만 듭 니 다.
    GameFrame.java
    
    package cn.sqc.runday.view;
    
    import javax.swing.ImageIcon;
    import javax.swing.JFrame;
    
    import cn.sqc.runday.controller.GamePanel;
    
    /**
     * @author Huey
     *2020-11-27   12:40:22
     *      :    ,         
     */
    
    public class GameFrame extends JFrame {
     //        
     public static final int WIDTH=1500;
     public static final int HEIGHT=900;
     public GameFrame() {
     //2.4        ,        
     GamePanel panel = new GamePanel();
     panel.action();//       
     this.addKeyListener(panel);//       
     this.add(panel);
    
     /**1.        */
     this.setSize(WIDTH,HEIGHT);
     this.setLocationRelativeTo(null);
     this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     this.setIconImage(new ImageIcon("Image/115.png").getImage());
     this.setUndecorated(true);
     this.setVisible(true); 
     }
    
     public static void main(String[] args) {
     new GameFrame();
     }
    }
    2.게임 메 인 패 널 클래스(핵심 논리 클래스):배경 그림 스크롤 효과
    배경 그림 두 장 을 사용 하여 배경 그림 스크롤 효 과 를 실현 하 는 논 리 는 다음 과 같 습 니 다.

    다음은 영상 으로 보 여 드 리 겠 습 니 다.
    플레이어 동적 효과
    중국 초기 에 유명한 애니메이션 인 은 그 당시 에 컴퓨터 가 없 었 기 때문에 한 폭 의 그림 이 필요 했다.그 다음 에 그림 을 신속하게 재생 하여 동태 적 인 화면(진·애니메이션 이 라 고 부 르 고 싶 습 니 다)을 형성 하고 이 를 위해 더빙 을 해 야 했 습 니 다.짧 은 10 분 동안 애니메이션 은 7000 에서 10000 장의 원 화 를 그 려 야 합 니 다!
    여기 서 우리 게이머 들 의 달리기 자 세 는 9 장의 그림 으로 구성 된다.

    다음 그림 설명:

    다음은 유저 의(생 성,이동,그리 기)를 실현 하 는 기본 코드 입 니 다.뒤의 장애물 의 실현 도 모두 이 작성 논 리 를 따 릅 니 다.
    코드 를 더욱 편리 하 게 읽 기 위해 최선 을 다 했 습 니 다.아직 잘 모 르 는 부분 이 있다 면 댓 글 교 류 를 환영 합 니 다.
    Person.java
    
    package cn.sqc.runday.model;
    
    import java.awt.Graphics;
    import java.awt.Image;
    import java.io.File;
    import java.io.IOException;
    
    import javax.imageio.ImageIO;
    
    import cn.sqc.runday.view.GameFrame;
    
    /**
     * @author Huey
     * @date 2020-11-23
     *       
     */
    public class Person {//1.    
     private Image image;//1.1         
     private Image[] images;//1.2       
    
     public static final int WIDTH = 120;//1.3    
     public static final int HEIGHT = 120;
    
     //1.4        
     private int x,y;
     int index;//        
     //    
     private int score;
     //      
     private int distance;
    
     public Person() {//2.  
     //     images  
     init();//2.1   ,        !      
     //               2.6
     image = images[0];
    
     x = 90;//2.7
     y = 580;//    
     index = 0;
     score = 0;
     distance = 0;
     }
     //        5.1
     public void drop() {
     y += 5;
     if(y>=580){//      ,     ,           
     y = 580;
     }
     }
     //       
     public void step(){
     //       
     image = images[index ++ /3%images.length];
     //      (          ,      )
     }
     //       
     public void paintPerson(Graphics g){
     g.drawImage(image, x, y, WIDTH, HEIGHT, null);
     }
    
     //           
     public boolean outOfBounds(){
     return this.x >= GameFrame.WIDTH || this.x <= -WIDTH;
     }
     private void init() {//2.2
     images = new Image[9];
     for(int i = 0; i<images.length; i++){//2.3
     try {//2.5
     images[i] = ImageIO.read(new File("Image/"+(i+1) + ".png"));//2.4
     } catch (IOException e) {//2.5
     // TODO Auto-generated catch block
     e.printStackTrace();
     }
     }
     }
    //2.8   ,Source,GGAS
     public Image getImage() {
     return image;
     }
    
     public void setImage(Image image) {
     this.image = image;
     }
    
     public Image[] getImages() {
     return images;
     }
    
     public void setImages(Image[] images) {
     this.images = images;
     }
    
     public int getX() {
     return x;
     }
    
     public void setX(int x) {
     this.x = x;
     }
    
     public int getY() {
     return y;
     }
    
     public void setY(int y) {
     this.y = y;
     }
    
     public static int getWidth() {
     return WIDTH;
     }
    
     public static int getHeight() {
     return HEIGHT;
     }
     public int getIndex() {
     return index;
     }
     public void setIndex(int index) {
     this.index = index;
     }
     public int getScore() {
     return score;
     }
     public void setScore(int score) {
     this.score = score;
     }
     public int getDistance() {
     return distance;
     }
     public void setDistance(int distance) {
     this.distance = distance;
     }
    
    }
    3.몇 가지 장애물 의 출현 장애물 1:게
    
    package cn.sqc.runday.model;
    
    import java.awt.Graphics;
    import java.awt.Image;
    import java.awt.Paint;
    import java.io.File;
    
    import javax.imageio.ImageIO;
    
    import cn.sqc.runday.view.GameFrame;
    
    public class Barrs_1 {
     private Image image;
     private Image [] images;
     public static final int WIDTH=100;
     public static final int HEIGHT=110;
     private int x,y;
     int index;
     private int speed;
    
     public Barrs_1() {//   !
     images = new Image[2];
     try {
     images[0]=ImageIO.read(new File("image/a2.png"));
     images[1]=ImageIO.read(new File("image/a4.png")); 
     } catch (Exception e) {
     // TODO: handle exception
     } 
     image = images[0];
     x=GameFrame.WIDTH+100;
     y=580;
     speed =30;
     index = 0;
     }
    
     public void step() {//    
     image =images[index++/5%images.length];
     x-=speed;//                    ,      
     }
     public void paintBarrs(Graphics g) {
     g.drawImage(image, x,y,WIDTH,HEIGHT, null);
    }
     public boolean outofBounds(){
     return this.x <=-WIDTH;
     }
    public Image getImage() {
     return image;
    }
    public void setImage(Image image) {
     this.image = image;
    }
    public Image[] getImages() {
     return images;
    }
    public void setImages(Image[] images) {
     this.images = images;
    }
    public int getX() {
     return x;
    }
    public void setX(int x) {
     this.x = x;
    }
    public int getY() {
     return y;
    }
    public void setY(int y) {
     this.y = y;
    }
    public int getIndex() {
     return index;
    }
    public void setIndex(int index) {
     this.index = index;
    }
    public int getSpeed() {
     return speed;
    }
    public void setSpeed(int speed) {
     this.speed = speed;
    }
    public static int getWidth() {
     return WIDTH;
    }
    public static int getHeight() {
     return HEIGHT;
    }
    
    }
    주의해 야 할 것 은 생 성 후 set,get 방법 을 추가 하 는 것 을 기억 하 세 요.패 널 류 에서 장애물 을 조작 할 수 있 도록 합 니 다.
    장애물 2:펫
    장애물 이 라 기보 다 는 유 저 를 따 르 는 졸개 라 고 할 수 있다.

    
    package cn.sqc.runday.model;
    
    import java.awt.Graphics;
    import java.awt.Image;
    import java.awt.event.KeyListener;
    import java.io.File;
    import java.io.IOException;
    
    import javax.imageio.ImageIO;
    
    import cn.sqc.runday.view.GameFrame;
    
    public class Barrs_2{ //   !
     private Image image;
     private Image images [] ;
     public static final int WIDTH= 70;
     public static final int HEIGHT = 60;
     private int x,y;
     int index;
     public Barrs_2() {
     init();
     image = images[0];
     x=300;
     y=460;
     }
     public void drop() {
     y ++;
     if(y>=460){
     y = 460;
     }
     }
     public void step(){
     image = images[index++/2%images.length];
     }
     public void paintBarrs(Graphics g) {
     g.drawImage(image, x,y,WIDTH,HEIGHT, null);
     }
     public boolean outofBounds() {
     return this.x<=-WIDTH;
     }
    public void init(){
     images = new Image[6];
     for( int i=0;i<6;i++){
     try {
     images[i]=ImageIO.read(new File ("Image/"+"d"+(i+1)+".png"));
     } catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
     }
     }
    }
    public Image getImage() {
     return image;
    }
    public void setImage(Image image) {
     this.image = image;
    }
    public Image[] getImages() {
     return images;
    }
    public void setImages(Image[] images) {
     this.images = images;
    }
    public int getX() {
     return x;
    }
    public void setX(int x) {
     this.x = x;
    }
    public int getY() {
     return y;
    }
    public void setY(int y) {
     this.y = y;
    }
    public int getIndex() {
     return index;
    }
    public void setIndex(int index) {
     this.index = index;
    }
    public static int getWidht() {
     return WIDTH;
    }
    public static int getHeight() {
     return HEIGHT;
    }
    
    }
    장애물
    
    package cn.sqc.runday.model;
    
    import java.awt.Graphics;
    import java.awt.Image;
    import java.io.File;
    
    import javax.imageio.ImageIO;
    
    import cn.sqc.runday.view.GameFrame;
    
    public class Barrs_3 {//   !
     private Image image;
     private int x,y;
     public static final int WIDTH = 150;
     public static final int HEIGHT=70;
     private int speed;
     public Barrs_3() {
     try {
     image = ImageIO.read(new File("image/daodan.png"));
     } catch (Exception e) {
     // TODO: handle exception
     }
     x=GameFrame.WIDTH+1000;
     y=450;
     speed = 25 ;
     }
     public void step(){
     x-=speed;
     }
     public void paintBarrs(Graphics g) {
     g.drawImage(image, x, y, WIDTH, HEIGHT, null);
    
     }
     public boolean outofBounds(){
     return this.x<=-WIDTH;
     }
     public Image getImage() {
     return image;
     }
     public void setImage(Image image) {
     this.image = image;
     }
     public int getX() {
     return x;
     }
     public void setX(int x) {
     this.x = x;
     }
     public int getY() {
     return y;
     }
     public void setY(int y) {
     this.y = y;
     }
     public int getSpeed() {
     return speed;
     }
     public void setSpeed(int speed) {
     this.speed = speed;
     }
     public static int getWidth() {
     return WIDTH;
     }
     public static int getHeight() {
     return HEIGHT;
     }
    }
    장애물 4:작살 등 장애물
    
    package cn.sqc.runday.model;
    
    import java.awt.Graphics;
    import java.awt.Image;
    import java.io.File;
    import java.util.Random;
    
    import javax.imageio.ImageIO;
    
    import cn.sqc.runday.view.GameFrame;
    
    public class Barrs_4 {//      !
     private Image image;
     private Image images[];
     public static final int WIDTH =150;
     public static final int HEIGHT =350;
     private int x,y;
    
     public Barrs_4() {//    
     Random random = new Random();
     images = new Image[4] ;
     try {
     images[0] = ImageIO.read(new File("image/11.png"));
     images[1]= ImageIO.read(new File("image/12.png"));
     images[2]= ImageIO.read(new File("image/13.png"));
     images[3]= ImageIO.read(new File("image/14.png"));
     } catch (Exception e) {
     // TODO: handle exception
     }
     image= images[random.nextInt(4)];
     x=GameFrame.WIDTH+1500;
     y=0;
     }
     public void step(){
     x-=20;
     }
     public void paintBarrs(Graphics g){
     g.drawImage(image, x, y, WIDTH, HEIGHT, null);
     }
     public boolean outofBounds(){
     return this.x<=-WIDTH;
     }
     public Image getImage() {
     return image;
     }
     public void setImage(Image image) {
     this.image = image;
     }
     public Image[] getImages() {
     return images;
     }
     public void setImages(Image[] images) {
     this.images = images;
     }
     public int getX() {
     return x;
     }
     public void setX(int x) {
     this.x = x;
     }
     public int getY() {
     return y;
     }
     public void setY(int y) {
     this.y = y;
     }
     public static int getWidth() {
     return WIDTH;
     }
     public static int getHeight() {
     return HEIGHT;
     }
    
    }
    장애물 5、금화

    여기에 금화 의 동적 효 과 는 쓰 지 않 는 다.
    
    package cn.sqc.runday.model;
    
    import java.awt.Graphics;
    import java.awt.Image;
    import java.io.File;
    import java.io.IOException;
    import java.util.Random;
    
    import javax.imageio.ImageIO;
    
    import cn.sqc.runday.view.GameFrame;
    
    /**
     * @author Huey
     *2020-11-30   03:44:51
     *      
     * 
     */
    public class Barrs_5 {
     private Image image;//      
     public static final int WIDTH = 30;
     public static final int HEIGHT = 30;
     private int x,y;
     private int speed;
     Random random = new Random();
     public Barrs_5() {
     try {
     image = ImageIO.read(new File("Image/"+(random.nextInt(6) + 21) + ".png"));
     } catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
     }
     x = GameFrame.WIDTH + 10;
     y = random.nextInt(600);
     speed = 20;
     }
    
     public void step(){
     x -= speed;
     }
    
     public void paintBarrs(Graphics g){
     g.drawImage(image, x, y, WIDTH, HEIGHT, null);
     }
     public boolean outofBounds() {
     return this.x<=-WIDTH;
     }
    
     public Image getImage() {
     return image;
     }
    
     public void setImage(Image image) {
     this.image = image;
     }
    
     public int getX() {
     return x;
     }
    
     public void setX(int x) {
     this.x = x;
     }
    
     public int getY() {
     return y;
     }
    
     public void setY(int y) {
     this.y = y;
     }
    
     public int getSpeed() {
     return speed;
     }
    
     public void setSpeed(int speed) {
     this.speed = speed;
     }
    
     public Random getRandom() {
     return random;
     }
    
     public void setRandom(Random random) {
     this.random = random;
     }
    
     public static int getWidth() {
     return WIDTH;
     }
    
     public static int getHeight() {
     return HEIGHT;
     }
    
    }
    4.게이머 와 장애물 의 충돌 논리
    게이머 와 미사일 의 충돌 예:
    
    for(int i = 0;i<barrs3.length;i++){
     if(person.getX() + Person.WIDTH >= barrs3[i].getX() &&
     person.getX() <= barrs3[i].getX() + Barrs_3.WIDTH &&
     person .getY() +Person.getHeight() >= barrs3[i].getY() &&
     person.getY() <= barrs3[i].getY () + Barrs_3.HEIGHT){
     if(person.getX() + Person.WIDTH <= barrs3[i].getX() + Barrs_3.WIDTH){//     (120px)       
     //   
     person.setX(barrs3[i].getX() - Barrs_3.WIDTH);
     }else{
     //   
     person.setX(barrs3[i].getX()+ Barrs_3.WIDTH );
     } 
     }
     }
    아래 동 도 는 게이머 들 이 오른쪽 에서 장애물 b 와 부 딪 히 고 왼쪽 에서 부 딪 히 는 논 리 를 보 여 주 며 상하 가 부 딪 히 는 것 과 같은 이치 이다.
    상하 좌우 충돌 의 논리 코드 는 움 직 이 는 그림 아래 에 있 습 니 다.

    5.일시 정지,계속 논리
    키보드 버튼 을 감청 하 는 방법 에서

    코드 는 다음 과 같 습 니 다:

    이 곳 의 flag 는 위의 프로그램 이 시작 하 는 방법 에서 유래 한 것 입 니 다.스페이스 바 를 누 르 면 생 성,이동,그리 기 방법의 일시 정 지 를 실현 할 수 있 고 화면의 정지,게임 의 일시 정지 에 해당 합 니 다!

    6.종료 논리

    게임 메 인 인터페이스 코드 는 다음 과 같 습 니 다.
    
    package cn.sqc.runday.controller;
    
    import java.awt.Color;
    import java.awt.Font;
    import java.awt.Graphics;
    import java.awt.Image;
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;
    import java.io.File;
    import java.io.IOException;
    import java.util.Arrays;
    
    import javax.imageio.ImageIO;
    import javax.swing.JPanel;
    
    import cn.sqc.runday.model.Barrs_1;
    import cn.sqc.runday.model.Barrs_2;
    import cn.sqc.runday.model.Barrs_3;
    import cn.sqc.runday.model.Barrs_4;
    import cn.sqc.runday.model.Barrs_5;
    import cn.sqc.runday.model.Person;
    import cn.sqc.runday.view.EndFrame;
    import cn.sqc.runday.view.GameFrame;
    
    /**
     * @author Huey
     *2020-11-27   12:28:44
     *       ,     
     * 1、        
     * 2、      
     * 3、        
     * 4、           
     * 5、  、    
     * 6、    
     */
    
    public class GamePanel extends JPanel implements KeyListener{
     /**2、         ***/
     //2.1        
     Image background;
     Image score;
     Image pause;//  
     Image proceed;//  .
    
    
     /***3.              ***/
     //3.1      (     )
     Person person;
     Barrs_2 barrs_2;//  
     Barrs_4 barrs_4;//      
     Barrs_5 barrs_5;//  
     /**4.       */
     //4.1
     Barrs_1[]barrs1 = {};//      (    ,    )
     Barrs_3[]barrs3 ={};//  
     Barrs_4[]barrs4={};//  
     Barrs_5[]barrs5 = {};//  
    
     public GamePanel() {
     //3.2
     person = new Person();//  Person      ,       
     barrs_2 = new Barrs_2();
     //2.2      
     try{
     background =ImageIO.read(new File("Image/cc.png"));//    
     score =ImageIO.read(new File("Image/a12.png"));//    
     pause = ImageIO.read(new File("Image/b2.png"));
     proceed = ImageIO.read(new File("Image/b1.png"));
     }catch(IOException e){
     e.printStackTrace();
     }
     }
     //2.5
     int x=0;//        
    @Override
    public void paint(Graphics g) { 
     super.paint(g);
     //2.7
     if(flag){
     x-=20;//       
     }
     //2.3      (       )
     g.drawImage(background, x, 0, GameFrame.WIDTH, GameFrame.HEIGHT, null);
     g.drawImage(background, x+GameFrame.WIDTH, 0, GameFrame.WIDTH, GameFrame.HEIGHT,null);
     if(x<=-GameFrame.WIDTH){//           
     x = 0;
     }
    
     //3.3     
     person.paintPerson(g);
     //    
     for(int i =0;i<barrs1.length;i++){
     barrs1[i].paintBarrs(g);
     }
     //    
     barrs_2.paintBarrs(g);
     //    
     for(int i =0;i<barrs3.length;i++){
     barrs3[i].paintBarrs(g);
     }
     //         
     for(int i =0;i<barrs4.length;i++){
     barrs4[i].paintBarrs(g);
     }
     //      
     for(int i = 0;i<barrs5.length;i++){
     barrs5[i].paintBarrs(g);
     }
    
    //     ,     
     //      
     g.drawImage(score, 120, 50,null);
     g.setColor(Color.ORANGE);
     g.setFont(new Font("  ",Font.BOLD,30 ));
     g.drawString("    :"+person.getScore()+" ", 133, 95);
    
     //    、      
     if(flag){
     g.drawImage(proceed, 200, 800, 90,90,null);
     }else{
     g.drawImage(pause, 200, 800, 90, 90, null);
     }
    
    }
    
    //               
    int index =0;
    public void enteredAction(){//                 
     index++;
     //       
     if(index%100==0){
     //      
     Barrs_1 b1 = new Barrs_1();
     Barrs_3 b3 = new Barrs_3();
     Barrs_4 b4 = new Barrs_4();
    
     barrs1 =Arrays.copyOf(barrs1,barrs1.length+1);//    
     barrs1[barrs1.length-1]= b1;//             
     //System.out.println("  "+barrs1.length); 
     barrs3 =Arrays.copyOf(barrs3,barrs3.length+1);
     barrs3[barrs3.length-1]= b3;
     barrs4 =Arrays.copyOf(barrs4,barrs4.length+1);
     barrs4[barrs4.length-1]= b4;
     }
     if(index%15==0){
     Barrs_5 b5 = new Barrs_5();
     barrs5 = Arrays.copyOf(barrs5, barrs5.length +1);
     barrs5[barrs5.length-1] = b5;
     }
    }
    
    //       
    public void stepAction(){
     //3..4
     person.step();//       ―>   
     person.drop();//    
     barrs_2.drop();
     //       
     for(int i =0;i<barrs1.length;i++){
     barrs1[i].step();
     //            ,      
     if(barrs1[i].outofBounds()){
     //          
     barrs1[i] = barrs1[barrs1.length - 1];//           ,       ,   ,        。
     barrs1= Arrays.copyOf(barrs1, barrs1.length - 1);//    
     }
     }
    
     barrs_2.step();
    
     for(int i =0;i<barrs3.length;i++){
     barrs3[i].step();
     //          
     if(barrs3[i].outofBounds()){
     barrs3[i] = barrs3[barrs3.length - 1];
     barrs3 = Arrays.copyOf(barrs3, barrs3.length - 1);
     }
     }
    
     for(int i =0;i<barrs4.length;i++){
     barrs4[i].step();
     //          
     if(barrs4[i].outofBounds()){
     barrs4[i] = barrs4[barrs4.length - 1 ];
     barrs4 = Arrays.copyOf(barrs4, barrs4.length - 1);
     }
     }
     for(int i = 0;i<barrs5.length;i++){
     barrs5[i].step();
     if(barrs5[i].outofBounds()){
     //       
     barrs5[i] = barrs5[barrs5.length - 1];
     barrs5 = Arrays.copyOf(barrs5, barrs5.length - 1);
     }
     }
    }
    
    //             
    public void pengAction(){
     //                
     for(int i = 0;i<barrs1.length;i++){//       ,      
     if(person.getX() + Person.WIDTH >= barrs1[i].getX() &&
     person.getX() <= barrs1[i].getX() + Barrs_1.WIDTH &&
     person .getY() +Person.getHeight() >= barrs1[i].getY() &&
     person.getY() <= barrs1[i].getY () + Barrs_1.HEIGHT){
     //      (      )
     if(person.getX() + Person.WIDTH <= barrs1[i].getX() + Barrs_1.WIDTH){//      ,          
     //   
     person.setX(barrs1[i].getX() - Barrs_1.WIDTH);
     }else{
     //   
     person.setX(barrs1[i].getX()+ Barrs_1.WIDTH );
     } 
     }
     }
     //                
     for(int i = 0;i<barrs3.length;i++){
     if(person.getX() + Person.WIDTH >= barrs3[i].getX() &&
     person.getX() <= barrs3[i].getX() + Barrs_3.WIDTH &&
     person .getY() +Person.getHeight() >= barrs3[i].getY() &&
     person.getY() <= barrs3[i].getY () + Barrs_3.HEIGHT){
     if(person.getX() + Person.WIDTH <= barrs3[i].getX() + Barrs_3.WIDTH){//     (120px)       
     //   
     person.setX(barrs3[i].getX() - Barrs_3.WIDTH);
     }else{
     //   
     person.setX(barrs3[i].getX()+ Barrs_3.WIDTH );
     } 
     }
     }
     //                
     for(int i = 0;i<=barrs4.length -1;i++){//      !
     if(person.getX() + Person.WIDTH >= barrs4[i].getX() &&
     person.getX() <= barrs4[i].getX() + Barrs_4.WIDTH &&
     person.getY() + Person.HEIGHT >= barrs4[i].getY() &&
     person.getY() <= barrs4[i].getY() + Barrs_4.HEIGHT ){
     if(person.getX() + Person.WIDTH <= barrs4[i].getX() + Barrs_4.WIDTH ){
     //   
     person.setX(barrs4[i].getX() - Barrs_4.WIDTH);
     }else{
     //   
     person.setX(barrs4[i].getX()+ Barrs_4.WIDTH );
     } 
     }
     }
     //        
     for(int i = 0;i<barrs5.length;i++){
     if(person.getX() + Person.WIDTH >= barrs5[i].getX() &&
     person.getX() <= barrs5[i].getX() + Barrs_5.WIDTH &&
     person .getY() +Person.getHeight() >= barrs5[i].getY() &&
     person.getY() <= barrs5[i].getY () + Barrs_5.HEIGHT){//          
     if(person.getX() + Person.WIDTH <= barrs5[i].getX() + Barrs_5.WIDTH){
     //      
     barrs5[i] = barrs5[barrs5.length - 1];
     barrs5 = Arrays.copyOf(barrs5, barrs5.length - 1);
    
     //    
     int score = person.getScore();
     person.setScore(score + 10);
     }
     }
     }
    
    }
    //    
     public void gameOverAction(){
     if(person.outOfBounds()){
     //    
     isGameOver = true;
     //    (      )
     new EndFrame(person);//      
     //    
     person = new Person();
     barrs1 = new Barrs_1[]{};
     barrs3 = new Barrs_3[]{};
     }
    
     }
     public static boolean isGameOver = false;
     boolean flag = true; 
    //2.8                      
    public void action(){
     new Thread(){//     
     //  run  
     public void run() {
     while(!isGameOver){
     //3.4
     if(flag){
     enteredAction();//  :          ,              
     stepAction();
     pengAction();//        
     gameOverAction();
    
     }
     //    
     repaint();
     //    
     try {
     Thread.sleep(60);
     } catch (Exception e) {
     // TODO: handle exception
     e.printStackTrace();
     }
     }
    
     };
     }.start();//         
    
     }
    
    @Override
    public void keyTyped(KeyEvent e) {
     // TODO Auto-generated method stub
    
    }
    
    @Override
    public void keyPressed(KeyEvent e) {
     //          
     int x = person.getX();
     int y = person.getY();
     int x1 = barrs_2.getX();
     int y1 = barrs_2.getY();
    
     // 
     if(e.getKeyCode() == KeyEvent.VK_UP && y > 10 && y1 > 10){
     person.setY(y-25);
     barrs_2.setY(y-25);
     }
     // 
     if(e.getKeyCode()== KeyEvent.VK_DOWN && y<=560 && y1<560){
     person.setY(y+30);
     barrs_2.setY(y-30);
     }
     // 
     if(e.getKeyCode()==KeyEvent.VK_LEFT && x>=0 ){
     person.setX(x-30);
     barrs_2.setX(x1-30);
    
     }
     // 
     if(e.getKeyCode()==KeyEvent.VK_RIGHT){
     person.setX(x+22);
     barrs_2.setX(x1+22);
     if(x>=GameFrame.WIDTH-Person.WIDTH){//         
     person.setX(GameFrame.WIDTH-Person.WIDTH);
     }
     if(x1>=GameFrame.WIDTH-barrs_2.WIDTH){//         
     barrs_2.setX(GameFrame.WIDTH - barrs_2.WIDTH);
     }
     }
     //       
     if(e.getKeyCode() == KeyEvent.VK_SPACE){
     flag = !flag;
     }
    
     }
    
    @Override
    public void keyReleased(KeyEvent e) {
     // TODO Auto-generated method stub
    }
    }
    5.종료 인터페이스
    다음 에 매일 쿨 달리기 게임 의 끝 화면 을 실현 할 것 입 니 다.기능 은 다음 과 같 습 니 다.
    쿨 거 리 를 뛰 어 다 니 며 플레이어 의 점 수 를 얻는다.
    다시 한 번,메 인 메뉴 로 돌아 가 바로 종료 합 니 다.
    구체 적 으로 어떤 모습 인지 먼저 보 는 것 이 즐겁다!

    다시 한 번 단 추 를 누 르 면 로 딩 상태 에 들 어가 로 딩 이 끝나 고 바로 게임 에 들 어 갑 니 다.

    메 인 메뉴 단 추 를 누 르 면 메 인 메뉴 인터페이스 에 들 어 갑 니 다:

    1.파 쿠 거리
    저 는 Person 류 의 게이머 이동 방법 에 증가 하 는 diatance 를 추 가 했 습 니 다.게이머 의 사진 이 아직도 전환 되 고 있 으 면 게임 이 아직 끝나 지 않 았 습 니 다.이 distance 는 모두 증가 하고 있 습 니 다.이것 은 간접 적 으로 파 쿠 거 리 를 계산 하 는 방법 이 라 고 할 수 있 습 니 다.

    Person 클래스 에 get,set 방법 을 추가 하여 데 이 터 를 가 져 옵 니 다.

    2、유저 의 득점 획득
    플레이어 와 금화 가 충돌 하 는 점 수 는 그림 의 표현 점수 로 GamePanel 에서 획득 합 니 다.

    그리고 총 점,나 는 Person 류 에서 간단 한 점수 규칙 을 설정 했다.

    3.다시 한 번
    마우스 클릭 이벤트 에서 new 의 새로운 로 딩 인터페이스,로 딩 완료 후 자동 으로 게임 에 들 어 갑 니 다.

    4、메 인 화면 으로 돌아 가기
    같은 이치.

    5、바로 퇴장
    같은 이치.

    상위 코드
    EndFrame.java
    
    package cn.sqc.runday.view;
    
    import java.awt.Color;
    import java.awt.Font;
    import java.awt.Graphics;
    import java.awt.Image;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import java.io.File;
    import java.io.IOException;
    import javax.imageio.ImageIO;
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    
    import cn.sqc.runday.controller.GamePanel;
    import cn.sqc.runday.model.Person;
    
    
    public class EndFrame extends JFrame implements MouseListener {
     //        、       、       
     JLabel again,back,exit;
    
     public EndFrame(Person person) { 
     again = new JLabel(new ImageIcon("Image/hh5.png"));
     again.setBounds(520, 622, 60, 25);
     again.addMouseListener(this);
     this.add(again); 
     back = new JLabel(new ImageIcon("Image/hh6.png"));
     back.setBounds(520, 722, 60, 25);
     back.addMouseListener(this);
     this.add(back);
     exit = new JLabel(new ImageIcon("Image/hh3.png"));
     exit.setBounds(520, 822, 60, 25);
     exit.addMouseListener(this);
     this.add(exit);
    
     EndPanel end = new EndPanel(person);
     this.add(end);//               
    
     this.setSize(1500, 900);
     this.setLocationRelativeTo(null);
     this.setUndecorated(true);
     this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     this.setIconImage(new ImageIcon("Image/115.png").getImage());
     this.setVisible(true);
     }
    
     public static void main(String[] args) { 
     //new EndFrame();
     }
     class EndPanel extends JPanel{
     Image background;
     Person p;
     public EndPanel(Person person) {//  int a
     this.p = person;//    、  
     try {
     background = ImageIO.read(new File("Image/chou.png"));
     } catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
     }
     }
     @Override
     public void paint(Graphics g) {
     // TODO Auto-generated method stub
     super.paint(g);
     g.drawImage(background, 0, 0,1500,900 ,null);
     g.setColor(Color.CYAN);
     g.setFont(new Font("  ",Font.BOLD,30));
     g.drawString(p.getScore()+"",1110,705);// + ” “    
     g.drawString(p.getDistance() + " ", 1110, 622);
    
     g.setFont(new Font("  ",Font.BOLD,50));
     g.setColor(Color.ORANGE);
     g.drawString(p.getTotalScore() + "", 1075, 500);
     }
     }
     @Override
     public void mouseClicked(MouseEvent e) {
     if(e.getSource().equals(again)){
     //        
     new WindowFrame().Start();
     //      
     dispose();
     } else if(e.getSource().equals(back)){
     new MainFrame();
     dispose();
     }else if(e.getSource().equals(exit)){
     System.exit(0);
     }
     }
    
     @Override
     public void mousePressed(MouseEvent e) {
     // TODO Auto-generated method stub
    
     }
    
     @Override
     public void mouseReleased(MouseEvent e) {
     // TODO Auto-generated method stub
    
     }
    
     @Override
     public void mouseEntered(MouseEvent e) {
     // TODO Auto-generated method stub
    
     }
    
     @Override
     public void mouseExited(MouseEvent e) {
     // TODO Auto-generated method stub
    
     }
    
    }
    자바 로 매일 쿨 링(소스 코드 첨부)을 실현 하 는 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 자바 실현 매일 쿨 링 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
  • 좋은 웹페이지 즐겨찾기