-
190820 lottoJAVA 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