[Java/Swing] 로또 게임 구현

2023. 2. 19. 03:35·Java/Swing (GUI)
728x90
728x90

  - 1 ~ 45 범위의 랜덤한 정수 6개

 

코드

#  랜덤 정수 추출 기능 파일

public class LottoRandomNumber {

    public int[] lottoNumber() {
        // 메서드에서 리턴할 것이므로 멤버변수로 선언하지 않아도 됨
        int[] lotto = new int[6];

        // 한 곳에서만 사용된다면 지역변수로 선언
        Random r = new Random();  

        for (int i = 0; i < lotto.length; i++) {
            // 1 ~ 45 범위의 정수 난수를 생성해서 배열에 넣기
            lotto[i] = r.nextInt(45) + 1;
            // 중복 제거
            for (int j = 0; j < i; j++) {
                if (lotto[i] == lotto[j]) {
                    i--; // 이번 반복을 취소하고 다시 하도록 함
                }
            }
        } // end of for

        // 오름차순 정렬
        Arrays.sort(lotto);
        return lotto;
    }
}

#  GUI 구현 파일

public class LottoFrame extends JFrame implements ActionListener {

    JButton button;
    int[] lotto = new int[6];

    public LottoFrame() {
        initData();
        setInitLayout();
        addEventListener();
    }

    private void initData() {
        setTitle("Lotto Game");
        setSize(600, 400);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        button = new JButton("Lotto Start");
    }

    private void setInitLayout() {
        // root 패널의 레이아웃은 기본값인 BorderLayout을 사용함
        add(button, BorderLayout.NORTH); // 버튼을 위쪽에 추가
        setVisible(true);
    }

    private void addEventListener() {
        // 이벤트 등록
        button.addActionListener(this);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        System.out.println("게임 시작 ~");
        LottoRandomNumberBefore lottoRandomNumber = new LottoRandomNumberBefore(); // 객체 생성
        lotto = lottoRandomNumber.lottoNumber(); // 번호 생성
        // 콘솔에 번호 출력
        for (int i = 0; i < lotto.length; i++) {
            System.out.println("lotto : " + lotto[i]);
        }
        repaint();
    }

    // paint는 직접 호출하지 않아도, 실행의 흐름이 이미 정해져 있어서
    // 자동으로 호출이 됨
    @Override
    public void paint(Graphics g) {
        super.paint(g);
        // 폰트 설정
        Font f = new Font("궁서체", Font.ITALIC, 25);
        g.setFont(f);

        // 로또 번호가 생성되어 있지 않은 상태이면
        if (lotto[0] == 0) {
            g.drawString("버튼을 눌러 번호를 확인하세요!", 120, 200);
            return; // 아래 코드 실행 X
        }
        // 로또 번호가 생성된 상태면
        int x = 35;
        for (int i = 0; i < lotto.length; i++) {
            if (i == 0) {
                g.drawString(lotto[i] + "", x, 200);
            } else {
                g.drawString(lotto[i] + "", x += 100, 200);
            }
        } // end of for

    } // end of paint

    // 코드 실행
    public static void main(String[] args) {
        new LottoFrame();
    }
}

 

실행

 

320x100
반응형
저작자표시 비영리 변경금지 (새창열림)

'Java > Swing (GUI)' 카테고리의 다른 글

[Java/Swing] 윤년 계산기 구현  (0) 2023.02.18
[Java/Swing] KeyListener - 이미지 움직이기  (0) 2023.02.18
[Java/Swing] MouseListener - 컴포넌트 이동시키기  (0) 2023.02.18
[Java/Swing] ActionListener - 배경 색 변경하기  (1) 2023.02.18
[Java/Swing] 메서드 및 함수 모음  (1) 2023.02.17
'Java/Swing (GUI)' 카테고리의 다른 글
  • [Java/Swing] 윤년 계산기 구현
  • [Java/Swing] KeyListener - 이미지 움직이기
  • [Java/Swing] MouseListener - 컴포넌트 이동시키기
  • [Java/Swing] ActionListener - 배경 색 변경하기
스응
스응
    반응형
    250x250
  • 스응
    이서영의 개발 블로그
    스응
  • 전체
    오늘
    어제
  • 글쓰기 관리
    • 분류 전체보기 (384)
      • Java (134)
        • Base (54)
        • Spring Boot (37)
        • JSP (16)
        • Swing (GUI) (20)
        • Design Pattern (7)
      • C# (13)
      • PHP (18)
      • SQL (27)
      • Vue.js (9)
      • Tailwind CSS (4)
      • TypeScript (7)
      • HTML & CSS (27)
      • JavaScript (26)
      • jQuery (10)
      • Android (3)
      • - - - - - - - - - - - - - - (0)
      • Hotkeys (5)
      • CS (30)
      • etc. (13)
      • Error Note (16)
      • Team Project (24)
        • Airlines Web Project (12)
        • University Web Project (6)
        • Strikers 1945 GUI Project (6)
      • My Project (18)
        • Library Web Project (8)
        • Pet Shopping Mall GUI Project (10)
  • 블로그 메뉴

    • Home
    • Write
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    개발일지
    Wordpress
    C#
    js
    면접
    CSS
    Codeigniter
    php
    티스토리챌린지
    errorNote
    Hotkeys
    typeScript
    SEO
    jQuery
    vuejs
    SpringBoot
    http
    jsp
    HTML
    Android
    Swing
    cs
    SQL
    SWAGGER
    java
    오블완
    git
    tailwindcss
    zapier
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
스응
[Java/Swing] 로또 게임 구현
상단으로

티스토리툴바