It Study/POWER JAVA(기본서)
POWER JAVA 10장 Lab1 가위,바위,보 게임 (주석)
prlkt5200
2022. 11. 2. 10:07
반응형
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 | import java.awt.BorderLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Random; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; //해당 클래스는 JFrame 상속과 ActionListener를 구현한다 public class RockPaperScissor extends JFrame implements ActionListener { //상수를 통해 가위,바위,보의 값을 정해놓는다. final int SCISSOR = 0; final int ROCK = 1; final int PAPER = 2; //panel 객체와 lable 객체, button 객체를 위한 참조변수를 설정한다. private JPanel panel; private JLabel output, information; private JButton rock, paper, scissor; public RockPaperScissor() { //frame의 제목과 크기를 설정해준다. setTitle("가위, 바위, 보"); setSize(400, 150); //panel 객체를 생성하고 동시에 layout을 설정해준다. panel = new JPanel(); panel.setLayout(new GridLayout(0, 3)); //가위,바위,보 게임을 위한 안내문을 적어놓은 label information = new JLabel("아래의 버튼 중에서 하나를 클릭하시오"); //응원글을 적어놓은 label output = new JLabel("Good Luck"); //button 3개에 각자의 이름을 적어놓는다. scissor = new JButton("0: 가위"); rock = new JButton("1: 바위"); paper = new JButton("2: 보"); //각 버튼 객체에서 발생하는 이벤트를 현재 frame 클래스에서 처리하겠다는 의미이다. //실제로 아래에서 보면 이벤트를 처리하기 위한 actionPerformed();가 이 frame 클래스에 //정의되어 있다. scissor.addActionListener(this); rock.addActionListener(this); paper.addActionListener(this); //button을 panel에 추가시켜준다. panel.add(scissor); panel.add(rock); panel.add(paper); //각각의 label과 button을 layout 설정을 통해 위치를 잡아준다. //그리고 frame에서 나올 수 있도록 설정해준다. add(information, BorderLayout.NORTH); add(panel, BorderLayout.CENTER); add(output, BorderLayout.SOUTH); setVisible(true); } public static void main(String[] args) { //이 frame 클래스의 객체를 생성한다. RockPaperScissor f = new RockPaperScissor(); } //이벤트를 처리하기 위한 메소드이다. @Override public void actionPerformed(ActionEvent e) { //이벤트 객체를 매개변수로 받는데, 이 이벤트 객체의 이벤트소스를 e.getSource();로 //불러내서 (JButton)으로 형변환해서 참조변수 b와 바인딩 해준다. JButton b = (JButton) e.getSource(); //참조변수 b를 통해서 불러온 문자열에 첫번째 문자를 반환하고, 곧바로 parseInt();를 통해 //정수형으로 치환한다. int user = Integer.parseInt("" + b.getText().charAt(0)); //Random 객체를 생성 Random random = new Random(); //0~2까지 난수 발생한다. int computer = random.nextInt(3); if (user == computer) output.setText("인간과 컴퓨터가 비겼음"); //이 조건식은 컴퓨터가 0은 1, 1은 2, 2는 3의 값을 반환하고 이것이랑 user의 값을 비교하는 것을 의미한다. //활용은 다음과 같다 //ex: user는 0(가위), computer도 0(실제로 computer가 받은 값은 2(보)이며, 조건식에 따라 0의 값을 반환한 것) //그 둘이 같다는 것은 인간 승리! else if (user == (computer + 1) % 3) output.setText("인간: " + user + " 컴퓨터: " + computer + " 인간 승리"); else output.setText("인간: " + user + " 컴퓨터: " + computer + " 컴퓨터 승리"); } } | cs |
반응형