report6

課題

  • Java Applet/AWT について学習し、Java Appletのオリジナルプログラムを作成し解説せよ。

  • report6.javaのソース
    import java.awt.*;
    import java.awt.event.*;
    import java.applet.Applet;
    
    public class report6 extends Applet{
    
    	Button btn;
    	Checkbox c0;
    	Checkbox c1;
    	Checkbox c2;
    	Label   lb0;
    	Label   lb1;
    	Label   lb2;
    	Label   lb3;
    	Label   lb4;
    	CheckboxGroup cbG;
    	
    	public void init() {
            
    		c0 = new Checkbox("石");
    		c1 = new Checkbox("ハサミ");
    		c2 = new Checkbox("紙");
    		btn = new Button("ジャンケン");
    		lb0 = new Label("敵");
    		lb1 = new Label("");   //相手が何を出したかを出力
    		lb2 = new Label("自分");
    		lb3 = new Label("");   //じゃんけんの結果を出力
    		lb4 = new Label("対戦結果");
    		cbG = new CheckboxGroup();
    		c0.setCheckboxGroup(cbG);
    		c1.setCheckboxGroup(cbG);
    		c2.setCheckboxGroup(cbG);
    		c0.setState(true);
    		c1.setState(true);
    		c2.setState(true);
    		
          btn.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent e) {
                    	if(c0.getState() == true){   //c0(石)をチェックした場合
                            int i = (int) (3.0 * Math.random());
                            switch (i) {
                                    case 0:   //相手が石のケース
                                            lb1.setText("石");  
                                            lb3.setText("あいこ");  //対戦結果にあいこを表示
                                            break;
                                    case 1:  //相手がハサミのケース
                                            lb1.setText("ハサミ");  //対戦結果に勝ちを表示
                                            lb3.setText("勝ち");
                                            break;
                                    case 2:  //相手が紙のケース
                                            lb1.setText("紙");
                                            lb3.setText("負け");   //対戦結果に負けを表示
                                            break;
    
                            }
                            
                    	}else if(c1.getState() == true){  //c1(ハサミ)をチェックした場合
                            int i = (int) (3.0 * Math.random());
                            switch (i) {
                                    case 0:
                                            lb1.setText("石");
                                            lb3.setText("負け");
                                            break;
                                    case 1:
                                            lb1.setText("ハサミ");
                                            lb3.setText("あいこ");
                                            break;
                                    case 2:
                                            lb1.setText("紙");
                                            lb3.setText("勝ち");
                                            break;
    
                            }
                    	}else if(c2.getState() == true){  //c2(紙)をチェックした場合
                            int i = (int) (3.0 * Math.random());
                            switch (i) {
                                    case 0:
                                            lb1.setText("石");
                                            lb3.setText("勝ち");
                                            break;
                                    case 1:
                                            lb1.setText("ハサミ");
                                            lb3.setText("負け");
                                            break;
                                    case 2:
                                            lb1.setText("紙");
                                            lb3.setText("あいこ");
                                            break;
    
                            }
                    	 }
                    }
          });                  
          
          setLayout(null);
          add(c0);c0.setBounds(10, 40, 60, 30);
          add(c1);c1.setBounds(80, 40, 60, 30);
          add(c2);c2.setBounds(150, 40, 60, 30);
          add(btn);btn.setBounds(10, 80, 100, 30);
          add(lb0);lb0.setBounds(10, 120, 60, 30);
          add(lb1);lb1.setBounds(80, 120,60,30);
          add(lb2);lb2.setBounds(10, 10,40,20);
          add(lb3);lb3.setBounds(80, 160,50,20);
          add(lb4);lb4.setBounds(10, 160,50,20);
        }
    }
    

    実行結果

    考察

     Math.random()は0以上1未満の乱数を発生させるメソッドです。プログラムでは、"石"、"ハサミ"、"紙"の三種類が
    ランダムに出るようになっている。仕組みとしては、
    
    int i = (int) (3.0 * Math.random());
    で3倍してるので、0以上3未満の乱数が発生し、"0,1,2,"の3種類の数がランダムに発生する。 後は、発生した数字をswitch文を使い、"0","1","2"のそれぞれの動作の指定をすればよい。

    感想

    やっと最後の課題まで終わりました。正直うれしいです。でも、これからは自分で勉強していきたいです。
    実行結果のところですが、何度やり直しても表示されません。やり方は正しいと思うのですが。。。
    スミマセン。。