[Java] 가위바위보 | 묵찌빠 게임만들기_swing 구현

Jeini·2022년 12월 21일
0

📌 [Java] Project

목록 보기
3/3
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Random;

import javax.swing.*;

public class MJBGame extends JFrame {

    JRadioButton rbtnRock;
    JRadioButton rbtnSci;
    JRadioButton rbtnPapper;

    JTextArea ta;
    JButton btnStart;

    String[] mjb;
    String comTurn = comGame();
    String myTurn = "";


    public MJBGame() {
        init();
        setDisplay();
        addListeners();
        showFrame();
    }
    public void init() {
        rbtnRock = new JRadioButton("묵");
        rbtnSci = new JRadioButton("찌");
        rbtnPapper = new JRadioButton("빠");

        ButtonGroup group = new ButtonGroup();
        group.add(rbtnRock);
        group.add(rbtnSci);
        group.add(rbtnPapper);

        ta = new JTextArea(5, 20);
        ta.setEditable(false);

        btnStart = new JButton("시작");

    }
    public void setDisplay() {
        JPanel j1 = new JPanel();
        j1.add(rbtnRock, BorderLayout.CENTER);

        JPanel j2 = new JPanel();
        j2.add(rbtnSci, BorderLayout.CENTER);

        JPanel j3 = new JPanel();
        j3.add(rbtnPapper, BorderLayout.CENTER);

        JPanel jSum = new JPanel(new GridLayout(0, 3));
        jSum.add(j1);
        jSum.add(j2);
        jSum.add(j3);

        JPanel pnlBtn = new JPanel();
        pnlBtn.add(btnStart);

        JPanel pnlNorth = new JPanel(new GridLayout(0, 1));
        pnlNorth.add(jSum);
        pnlNorth.add(pnlBtn);

        JPanel pnlta = new JPanel();
        pnlta.add(new JScrollPane(ta));

        add(pnlNorth, BorderLayout.NORTH);
        add(pnlta, BorderLayout.CENTER);
    }
    public void addListeners() {
        btnStart.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                ta.setText("");
                gameStart(rbtnRock, 1, 2);
                gameStart(rbtnSci, 2, 0);
                gameStart(rbtnPapper, 0, 1);

            }
        });
        addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent we) {
                int choice = JOptionPane.showConfirmDialog(
                        MJBGame.this,
                        "종료합니다.",
                        "종료",
                        JOptionPane.OK_CANCEL_OPTION,
                        JOptionPane.QUESTION_MESSAGE
                );
                if(choice == JOptionPane.YES_OPTION) {
                    System.exit(0);
                }
            }
        });

    }
    public String comGame() {
        mjb = new String[]{"묵", "찌", "빠"};
        Random random = new Random();
        String strCom = mjb[random.nextInt(3)];
        return strCom;
    }
    public void gameStart(JRadioButton rbtn, int idx1, int idx2) {
        comTurn = comGame();
        myTurn = "";
        if(rbtn.isSelected()) {
            myTurn = rbtn.getText();
            ta.setText("컴퓨터: " + comTurn + "\n나: " + myTurn + "\n");
            if (comTurn.equals(myTurn)) {
                ta.append("비겼어요 ~");
            } else {
                if(comTurn.equals(mjb[idx1])) {
                    ta.append("당신이 이겼어요 ~");
                } else if(comTurn.equals(mjb[idx2])) {
                    ta.append("당신이 졌어요~");
                }

            }
        }
    }
    public void showFrame() {
        setTitle("MJBGame");
        pack();
        setLocation(100, 0);
        setResizable(false);
        setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
        setVisible(true);
    }
    public static void main(String[] args) {
        new MJBGame();

    }
}

profile
Fill in my own colorful colors🎨

0개의 댓글