- [Java] 66. Swing: 랜덤 숫자 게임 만들기2024년 04월 30일
- Song hyun
- 작성자
- 2024.04.30.:14
728x90반응형[Java] 66. Swing: 랜덤 숫자 게임 만들기
아래의 사진처럼, Game Start 버튼을 누르면 랜덤한 번호 6개를 만들어주는 프로그램을 작성해보자.
LottoFrame 클래스 살펴보기
(1) 상속 및 인터페이스
-상속: JFrame(부모 클래스)
-implements: ActionListener(인터페이스)
(2) 멤버 변수
-JButton형 변수 button
-LottoRandomNumber형 변수 lottoRandomNumber (포함 관계)
-boolean형 변수 isStart=true;
-int형 변수 NUMBER_DISTANCE=50;
(3) 사용자 정의 생성자
-setTitle: 창의 제목을 설정한다. ("Lotto Game")
-setSize: 창의 크기를 설정한다. (가로 600, 세로 400)
-setDefaultCloseOperation: 창의 x버튼을 눌렀을 시의 처리를 결정한다. (EXIT_ON_CLOSE=창 닫기)
-JButton형 변수 button 선언
-LottoRandomNumber형 변수 lottoRandomNumber 선언
(4) setInitLayout() 메서드
-add(button,BorderLayout.NORTH): 북쪽에 button 삽입
-setVisible(true): 창이 보이게끔 설정
(5) addEventListener() 메서드
-button.addActionListener(this); : button이 눌러졌을 때, 신호를 감지하는 actionListener 생성
(6) actionPerformed() 메서드 (오버라이드)
-"그림을 그려라!" 출력
-isStart=false 초기화
(7) paint() 메서드 (오버라이드)
-Font: 글씨의 글씨체, 크기, 특징(이탤릭, 볼드 등...) 설정
-if문: isStart가 true라면 글자 출력 ("로또 번호를 클릭하세요.")
-한 번 실행된 뒤로는 랜덤한 번호들을 출력하기만 한다!package ch07; import java.awt.BorderLayout; import java.awt.Font; import java.awt.Graphics; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; public class LottoFrame extends JFrame implements ActionListener{ private JButton button; private LottoRandomNumber lottoRandomNumber; private boolean isStart=true; private int NUMBER_DISTANCE=50; public LottoFrame() { initData(); setInitLayout(); addEventListener(); } private void initData() { setTitle("Lotto Game"); setSize(600,400); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); button=new JButton("Game Start"); lottoRandomNumber=new LottoRandomNumber(); } private void setInitLayout() { add(button, BorderLayout.NORTH); setVisible(true); } private void addEventListener() { button.addActionListener(this); } @Override public void actionPerformed(ActionEvent e) { System.out.println("그림을 그려라!"); isStart=false; // 이벤트가 일어나면 그림을 그려라 repaint(); // 다시 그림을 그려라 = F5 } @Override public void paint(Graphics g) { super.paint(g); Font f = new Font("궁서체", Font.BOLD,20); g.setFont(f); if(isStart) { g.drawString("로또 번호를 클릭하세요", 230, 200); } else { int[] getNumbers=lottoRandomNumber.createNumber(); for(int i=0;i<getNumbers.length; i++) { g.drawString(getNumbers[i]+" ",100 + i*NUMBER_DISTANCE,300); } } } public static void main(String[] args) { new LottoFrame(); } // end of main } // end of class
package ch07; import java.util.Arrays; import java.util.Random; // 클래스를 설계할 때 -> 단일 책임 원칙을 설정하는 것이 좋다. public class LottoRandomNumber { private int number; final int LOTTO_NUMBER_COUNT = 6; // 6개의 랜덤 번호를 생성하는 메서드가 필요 public int[] createNumber() { int[] lottoWinNum = new int[LOTTO_NUMBER_COUNT]; Random random = new Random(); for (int i = 0; i < lottoWinNum.length; i++) { lottoWinNum[i]=random.nextInt(45)+1; for(int j=0; j<i; j++) { if(lottoWinNum[j] == lottoWinNum[i]) { // 값이 중복된 상태이다. i--; } } } Arrays.sort(lottoWinNum); //오름차순 자동 정렬 return lottoWinNum; } // 코드 테스트 public static void main(String[] args) { LottoRandomNumber randomNumber = new LottoRandomNumber(); int [] resultArray=randomNumber.createNumber(); for(int i=0; i<resultArray.length; i++) { System.out.println(resultArray[i]); } } }
728x90반응형'Java > 자바 Swing' 카테고리의 다른 글
[Java] 71. Swing: 버블버블 게임 만들기(2) (0) 2024.05.02 [Java] 70. Swing: 버블버블 게임 만들기(1) (0) 2024.05.02 [Java] 65. Swing: 키보드 리스너 응용하기 (0) 2024.04.30 [Java] 64. Swing: 키보드 리스너 (0) 2024.04.30 [Java] 63. Swing: 리스너 응용-리스너를 구현하는 두 가지 방법 (0) 2024.04.29 다음글이전글이전 글이 없습니다.댓글