ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Swing 로또게임 만들어보기
    Swing 2023. 4. 9. 12:11
    package ch08;
    
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Font;
    import java.awt.Graphics;
    import java.awt.Paint;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.lang.reflect.Array;
    import java.util.Arrays;
    import java.util.Random;
    
    import javax.swing.JButton;
    import javax.swing.JFrame;
    
    public class LottoFrame extends JFrame implements ActionListener {
    	int[] lotto = new int[6]; 		//멤버변수에 담음
    	JButton button;
    	
    	public LottoFrame() {
    		initDate();
    		setInitLayout();
    		addEventListener();
    	}
    
    	private void initDate() {
    		setTitle("Lotto");
    		setSize(600,400);
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		button = new JButton("Lotto start");
    	}
    
    	private void setInitLayout() {
    		add(button, BorderLayout.NORTH);
    		setVisible(true);
    	}
    
    	private void addEventListener() {
    		button.addActionListener(this);
    	}
    	
    
    	@Override
    	public void actionPerformed(ActionEvent e) {
    		System.out.println("게임 시작 ~");
    		lotto = 	getLottoNumber();
    //		for(int i = 0; i < lotto.length; i++) {
    //			System.out.println("lotto : " +lotto[i]);
    //		}
    		//여기에 코드 입력 해주세요 ~!
    		// 그림을 다시 그리다.
    		repaint();	//F5 새로고침
    	}
    	
    	@Override
    	public void paint(Graphics g) {
    		super.paint(g);
    		
    		//g.setColor(Color.black);
    		
    		Font f = new Font("돋음체", Font.BOLD,20);
    		g.setFont(f);
    		
    		if(lotto[0]==0) {
    			// 게임초기상태
    			g.drawString("로또 번호를 클릭하세요", 180, 200);
    			 return;
    		}
    			//추천하지 않는 코드
    			for (int i = 0,x =50; i < lotto.length; i++, x+=50) {
    				g.drawString(lotto[i]+"", x, 200);
    			}
    			// 진행 구분
    			//코드가 여기 내려오면 버튼을 눌렀다와 같은 의미이다.
    			//그럼 메서드와 멤버 변수를 활용해서 그림을 그릴 수 있다.
    			g.drawString(lotto[0]+"", 50, 100);		//<-- 여기서 오류 나는 이유는 뭘까요? 앞에 스트링이 들어가야하는데 아니여서
    			g.drawString(lotto[1]+"", 150, 100);		
    			g.drawString(lotto[2]+"", 250, 100);		
    			g.drawString(lotto[3]+"", 350, 100);		
    			g.drawString(lotto[4]+"", 450, 100);		
    			g.drawString(lotto[5]+"", 550, 100);		
    		
    	}
    	
    	public int[] getLottoNumber() {
    		int[] lotto = new int[6];
    		Random r = new Random();
    		
    		for(int i= 0; i <lotto.length; i++) {
    			int j = r.nextInt(45)+1;
    			lotto[i] = j;
    			//System.out.println("j : "+j);
    			//중복값 확인을 위해 반복문을 생성
    			for(int e = 0; e < i; e++) {
    				//조건
    				if (lotto[i] == lotto[e]) {
    					//중복 발생
    					//돌아가서 다시 확인해라!!
    					i = i -1;
    					break;
    				}
    			}
    			//오름 차순 정렬
    		}
    		Arrays.sort(lotto);		//배열을 정렬 해주는 기능
    		return lotto;
    	}
    	//테스트 코드
    	public static void main(String[] args) {
    		LottoFrame a = new LottoFrame();
    		//a.getLottoNumber();
    		//a.getLottoNumber()[i]
    				//lotto[0]
    				//lotto[1]
    //		for(int i= 0; i < a.getLottoNumber().length; i++) {
    //			System.out.println(a.getLottoNumber()[i]);
    //		}
    	} //end of main
    }	//end of class

     

     

Designed by Tistory.