Report#8


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

~ソース~
  1| import java.awt.*;
  2| import java.awt.event.*;
  3| import javax.swing.*;
  4|
  5| public class kazuate1 extends JApplet implements ActionListener{
  6|    JLabel l1,l2,l3,l4,yosou;
  7|    JButton ent,b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,clr;
  8|    JPanel p1,p2,p3;
  9|    int kotae,flg,count,inp;
 10|
 11|    public void init(){
 12|       kotae=(int)(Math.random() * 99);
 13|       count=0;
 14|       inp=0;
 15|       l1=new JLabel("xx");
 16|       l1.setHorizontalAlignment(SwingConstants.CENTER);
 17|       l2=new JLabel("隠れている数字を当てましょう(0〜99)");
 18|       l3=new JLabel("あなたの予想→");
 19|       l4=new JLabel(" ");
 20|       l4.setHorizontalAlignment(SwingConstants.CENTER);
 21|       yosou=new JLabel(" ");
 22|       ent=new JButton("判定");
 23|       ent.addActionListener(this);
 24|       b0=new JButton("0");
 25|       b1=new JButton("1");
 26|       b2=new JButton("2");
 27|       b3=new JButton("3");
 28|       b4=new JButton("4");
 29|       b5=new JButton("5");
 30|       b6=new JButton("6");
 31|       b7=new JButton("7");
 32|       b8=new JButton("8");
 33|       b9=new JButton("9");
 34|       clr=new JButton("C");
 35|       b0.addActionListener(this);
 36|       b1.addActionListener(this);
 37|       b2.addActionListener(this);
 38|       b3.addActionListener(this);
 39|       b4.addActionListener(this);
 40|       b5.addActionListener(this);
 41|       b6.addActionListener(this);
 42|       b7.addActionListener(this);
 43|       b8.addActionListener(this);
 44|       b9.addActionListener(this);
 45|       clr.addActionListener(this);
 46|       p1=new JPanel();
 47|       p1.setLayout(new GridLayout(1,3));
 48|       p1.add(l3);
 49|       p1.add(yosou);
 50|       p1.add(ent);
 51|       p2=new JPanel();
 52|       p2.setLayout(new GridLayout(2,1));
 53|       p2.add(l1);
 54|       p2.add(l4);
 55|       p3=new JPanel();
 56|       p3.setLayout(new GridLayout(4,3));
 57|       p3.add(b7);
 58|       p3.add(b8);
 59|       p3.add(b9);
 60|       p3.add(b4);
 61|       p3.add(b5);
 62|       p3.add(b6);
 63|       p3.add(b1);
 64|       p3.add(b2);
 65|       p3.add(b3);
 66|       p3.add(b0);
 67|       p3.add(clr);
 68|       Container c=getContentPane();
 69|       c.setLayout(new BorderLayout());
 70|       c.add("North",l2);
 71|       c.add("South",p1);
 72|       c.add("Center",p2);
 73|       c.add("East",p3);
 74|       flg=1;
 75|    }
 76|
 77|    public void actionPerformed(ActionEvent e){
 78|       if(flg==0){
 79|          reset();
 80|          flg=1;
 81|       }
 82|       else{
 83|          if(e.getSource()==ent){
 84|             count++;
 85|             if(inp==kotae){
 86|                l4.setText(Integer.toString(count)+"回で正解!!");
 87|                l1.setText(Integer.toString(kotae));
 88|                ent.setText("もう一度?");
 89|                flg=0;
 90|             }
 91|             else if(inp > kotae){
 92|                l4.setText("大きいです");
 93|                inp=0;
 94|             }
 95|             else if(inp < kotae){
 96|                l4.setText("小さいです");
 97|                inp=0;
 98|             }
 99|          }
100|          else if(e.getSource()==b0){inp=inp*10;}
101|          else if(e.getSource()==b1){inp=inp*10+1;}
102|          else if(e.getSource()==b2){inp=inp*10+2;}
103|	      else if(e.getSource()==b3){inp=inp*10+3;}
104|	      else if(e.getSource()==b4){inp=inp*10+4;}
105|	      else if(e.getSource()==b5){inp=inp*10+5;}
106|	      else if(e.getSource()==b6){inp=inp*10+6;}
107|	      else if(e.getSource()==b7){inp=inp*10+7;}
108|	      else if(e.getSource()==b8){inp=inp*10+8;}
109|	      else if(e.getSource()==b9){inp=inp*10+9;}
110|	      else{inp=0;}
111|	      if(e.getSource()!=ent){
112|             yosou.setText(Integer.toString(inp));
113|	      }
114|       }
115|    }
116|
117|    public void reset(){
118|       kotae=(int)(Math.random() * 99);
119|       count=0;
120|       inp=0;
121|       l1.setText("xx");
122|       l4.setText(" ");
123|       yosou.setText(" ");
124|       ent.setText("判定");
125|    }
126| }

実行結果





~考察~

・5~75行目

・まずinit()とは、アプレットの実行が開始されるときだけ呼び出されるメソッドである。
 このメソッドには1回だけ実行する必要がある処理を書く。
 ここでは、窓に表示させる「0〜9までの数字とClearボタン」「判定ボタン」いろんなラベルを
 アプレットの開始時に表示するようになっている。
 またkotae、count、inpという変数にはそれぞれ0〜99までのランダムの数、0、1が入っている。



・77~126行目

・この部分は、隠されている数字と自分が予想した数字が当たっているかを判定する所である。
 まず、countに入っている数字(最初は0)に1を加える。
 inpという変数には自分が予想した数字が、kotaeには隠された数字が入っている。
 そして判定ボタンを押す事で当たっているかどうか判定する。

 隠された数字と予想した数字が同じなら、「(countに入っている数字)回目で正解!」「もう一度?」と表示され、
 予想した数字が隠された数字より大きいなら、「大きいです」と表示され、inpが初期化される。
 予想した数字が隠された数字より小さいなら、「小さいです」と表示され、inpが初期化される。

 予想が外れたなら、また数字を入力し判定を押す事でcountに1が加えられ同様の判定がされる。
 あとは数字が当たるまでこれらを繰り返すというゲーム。




戻る