ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 190820 lotto
    JAVA 2020. 8. 29. 15:13

    Lotto 

    package test.lotto;
    
    import java.awt.Color;
    import java.awt.Container;
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import java.util.InputMismatchException;
    
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JTextField;
    
    import org.json.simple.JSONObject;
    
    public class Lotto extends JFrame implements KeyListener, MouseListener { // 유효성 체크에 대한 생각!!! > 포트폴리오를 위함 > 모든 경우의 수를
    																			// 고려해보세
    	final int WIDTH_BTN = 50;
    	final int WIDTH_GAP = 10;
    	private final int MAX_CNT = 6;
    	private final int MAX_CNT_W_BN = 7;
    	private MyFont font = new MyFont();
    	Container c = getContentPane();
    	JLabel info = new JLabel();
    	JLabel rank = new JLabel();
    	MyButton[] btn = new MyButton[MAX_CNT_W_BN];
    	JTextField[] txt = new JTextField[MAX_CNT_W_BN];
    	JTextField turnTxt = new JTextField();
    	JButton runBtn = new JButton("Run");
    	JButton checkBtn = new JButton("Check");
    
    	public Lotto() {
    		super("Lotto");
    
    		init(); // 처음 화면 구성
    
    		event(); // 이벤트 등록
    
    		setSize(600, 500);
    		setVisible(true);
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		c.setBackground(Color.DARK_GRAY);
    	}
    
    	private void init() {
    		c.setLayout(null);
    
    		for (int i = 0; i < btn.length; i++) {
    			btn[i] = new MyButton("0" + (i + 1)); // String 넣어야해서 야매로 넣은거같은데
    			btn[i].setBounds(50 + (WIDTH_BTN * i) + (WIDTH_GAP * i), 100, WIDTH_BTN, WIDTH_BTN);
    			c.add(btn[i]);
    			txt[i] = new JTextField();
    			txt[i].setBounds(50 + (WIDTH_BTN * i) + (WIDTH_GAP * i), 180, WIDTH_BTN, WIDTH_BTN);
    			c.add(txt[i]);
    
    		}
    		turnTxt.setBounds(150, 300, 100, 40);
    		c.add(turnTxt);
    		runBtn.setBounds(300, 300, 75, 40);
    		c.add(runBtn);
    		checkBtn.setBounds(480, 185, 75, 40);
    		c.add(checkBtn);
    		info.setBounds(50, 250, 200, WIDTH_BTN);
    		c.add(info);
    		c.add(rank);
    		rank.setBounds(150, 250, 200, WIDTH_BTN);
    
    	}
    
    	private void event() {
    		runBtn.addMouseListener(this);
    		checkBtn.addMouseListener(this);
    		turnTxt.addKeyListener(this);
    	}
    
    	private void showResult() {
    		super.setTitle("the result of " + turnTxt.getText());
    		JsonReader jr = new JsonReader();
    		JSONObject jo = (JSONObject) jr.connectionURLToJson(turnTxt.getText());
    		if (jo == null) {
    			info.setText("찾는 회차의 정보가 없습니다.");
    			turnTxt.setText("");
    			return;
    		}
    		if (jo.get("returnValue").equals("fail")) {
    			info.setText("입력한 회차가 아직 존재하지 않습니다.");
    			turnTxt.setText("");
    			return;
    		}
    
    		for (int i = 0; i < MAX_CNT; i++) {
    			String StrNo = String.valueOf(jo.get("drwtNo" + (i + 1)));
    			btn[i].setText(StrNo);
    
    		}
    		btn[MAX_CNT].setText(String.valueOf(jo.get("bnusNo")));
    
    		// 숫자값 똑바로 입력됐나 확인
    
    		try {
    
    			// txt에서 꺼내온 값이 숫자가 아니면 오류가 나게
    //			Integer.parseInt(turnTxt.getText());
    			for (int i = 0; i < MAX_CNT_W_BN; i++) {
    				Integer.parseInt(txt[i].getText());
    			}
    		} catch (Exception e) {
    			info.setText("숫자를 입력해 주세요.");
    			return;
    		}
    		try {
    			// 입력된 값을 int형으로 변화시킨다ㅏㅏㅏㅏ >만약 int로 바꿀 수없는 형태면 오류가 날듯,,,?
    			for (int i = 0; i < MAX_CNT_W_BN; i++) {
    				if (Integer.parseInt(txt[i].getText()) < 1 || Integer.parseInt(txt[i].getText()) > 45) {
    					info.setText("번호의 범위는 1 ~ 45 입니다.");
    					return;
    				} // 1~45로 번호 한정
    
    			}
    
    		} catch (Exception e) {
    			info.setText("올바른 숫자값을 입력하지 않았습니다.");
    			return;
    		}
    		int cnt = 0;
    		int bonCnt = 0;
    		for (int i = 0; i < MAX_CNT_W_BN; i++) {
    			for (int j = 0; j < MAX_CNT_W_BN; j++) {
    				if (txt[i].getText().equals(btn[j].getText())) {
    					cnt++;
    				}
    			}
    		}
    		
    
    		for (int i = 0; i < MAX_CNT_W_BN; i++) {
    			if (txt[i].getText().equals(btn[6].getText())) {
    				bonCnt++;
    			}
    		}
    		switch (cnt) {
    		case 7:
    		case 6:
    			rank.setText("축하합니다. 1등 당첨입니다.");
    			break;
    		case 5:
    			rank.setText("축하합니다. 2등 당첨입니다.");
    			break;
    		case 4:
    		case 3:
    			rank.setText("축하합니다. 조금 당첨됐네요.");
    			break;
    		default:
    			rank.setText("ㅋㅋ");
    			break;
    		}
    	}
    
    	// 숫자값 45를 넘지 않았나 확인
    
    	// 입력한 숫자들간의 중복 없나 확인
    
    	// 입력한 숫자들과 로또 번호와의 일치 여부 확인
    
    	@Override
    	public void keyTyped(KeyEvent e) {
    
    	}
    
    	@Override
    	public void keyReleased(KeyEvent e) {
    		if (e.getKeyCode() == KeyEvent.VK_ENTER) {
    			showResult();
    		}
    	}
    
    	@Override
    	public void keyPressed(KeyEvent e) {
    
    	}
    
    	@Override
    	public void mouseClicked(MouseEvent e) {
    		showResult();
    	}
    
    	@Override
    	public void mouseReleased(MouseEvent e) {
    
    	}
    
    	@Override
    	public void mousePressed(MouseEvent e) {
    
    	}
    
    	@Override
    	public void mouseEntered(MouseEvent e) {
    
    	}
    
    	@Override
    	public void mouseExited(MouseEvent e) {
    
    	}
    
    }
    

    'JAVA' 카테고리의 다른 글

    191020 JDBC 기본  (0) 2020.10.19
    161020 시험  (0) 2020.10.16
    190820 JSONReader  (0) 2020.08.29
    190820 - get Lotto Num  (0) 2020.08.29

    댓글

Designed by Tistory.