상세 컨텐츠

본문 제목

[JAVA]로또 게임 만들기

JAVA/Java 응용

by 미로910 2024. 4. 30. 15:49

본문

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

                   }else {

                         int[ ] getNumbers = lottoRandomNumber.createNumber();

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

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

 

               }

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

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

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

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

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

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

  //-> 이렇게 안 쓰고 배열 처리 해주기  

            }

       }

 

                   //메인함수

                   public static void main(String[] args) {

                        new LottoFrame();

                     }//end of main

     }//end of class

Font f = new Font("궁서체", Font.BOLD, 20);
             g.setFont(f);

▶ Font 를 사용하면 글꼴을 바꿀 수 있다

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

                        // outer for -> 0 --> inner for --> 동작 안함

                        // outer for -> 1 --> inner for --> 한번 동작

                        // outer for -> 2 --> inner for --> 두번 동작

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

                             // 20 , 30, 20

                               lottoWinNum[i] = random.nextInt(45) + 1;

                                     // 0 < 1

                                for(int j = 0; j < i; j++) {

                                     // 20 == 20

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

                            }

 

                     }

 

              }

 

실행 결과_____

 

랜덤으로 번호 출력이 가능하다!

관련글 더보기