Java/Java.Swing

Swing 로또 게임 만들기 - 7

H_u 2024. 4. 30. 17:19
728x90
반응형
SMALL

package ch07;

 

import java.util.Arrays;

import java.util.Random;

 

/**

* 클래스를 단일 책임 원칙을 설정 하는 것이 좋다

*/

public class LottoRandomNumber {

 

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]);

}

}

}

콘솔로 나오는 로또 번호

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("로또 번호를 클릭하세요", 200, 200);

} else {

int[] getNumbers = lottoRandomNumber.createNumber();

for (int i = 0; i < getNumbers.length; i++) {

g.drawString(getNumbers[i] + " ", 150 + (i *NUMBER_DISTANCE) , 200);

 

}

// g.drawString(getNumbers[1] + " ", 100, 300);

// g.drawString(getNumbers[2] + " ", 150, 300);

// g.drawString(getNumbers[3] + " ", 200, 300);

// g.drawString(getNumbers[4] + " ", 250, 300);

// g.drawString(getNumbers[5] + " ", 300, 300);

}

 

}

 

// 메인 함수

public static void main(String[] args) {

new LottoFrame();

} // end of main

 

} // end of class

 

시작 이미지

 

게임 스타트 버튼을 누르면?!

번호가 생성 된다.

728x90
반응형
SMALL