Swing 로또 게임 만들기 - 7

1. 로또 생성기 클래스 만들기

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[i] == lottoWinNum[j]) {
					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.print(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 NUBER_DISTANCE = 80;

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

	// 코드 테스트
	public static void main(String[] args) {
		new LottoFrame();
	}

	@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, 30);
		g.setFont(f);

		if (isStart) {
			g.drawString("Game Start를 클릭하세요", 150, 200);
		} else {
			int[] getNumbers = lottoRandomNumber.createNumber();
			for (int i = 0; i < getNumbers.length; i++) {
				g.drawString(getNumbers[i] + " ", 80 + i * NUBER_DISTANCE, 200);

			}

		}
	}
}

Swing 목차로 돌아가기

 

'Java > Swing 프로젝트' 카테고리의 다른 글

Bubble (객체 지향 패러다임) - 1  (0) 2024.05.02
Swing 스레드 활용 - 8  (0) 2024.05.01
Swing Key Listener - 6  (0) 2024.04.30
Swing 이벤트 리스너 - 5  (0) 2024.04.29
Swing image 위에 image - 4  (0) 2024.04.29