Report2
簡単なアプレットを作りなさい!
import java.awt.Graphics;
import java.awt.Image;
import java.lang.Math;

public class repo2 extends java.applet.Applet implements Runnable {
    Image Pic[] = new Image[2];
    int PicIndex = 0;
    boolean loop = true;
    Thread kicker = null;

    public void init(){
        Pic[0]=getImage(getCodeBase(),"pic3.jpg");
        Pic[1]=getImage(getCodeBase(),"pic4.jpg");
    }

    public void paint(Graphics g){
        update(g);
    }
    public void update(Graphics g){
        if(Pic [PicIndex]==null){
        g.drawString("Error when loading picture", 0,60);
        }
       }
        g.drawImage(Pic[PicIndex],0,0, this);
    }
    public void start(){
        if(kicker == null){
            kicker = new Thread(this);
            kicker.start();
        }
    }
    public void stop(){
        if (kicker != null) {
            kicker.stop();
          kicker = null;
        }
    }
    public void run(){
        while(loop){
            repaint();
            if(PicIndex==0){
                PicIndex=1;
            }else{

                PicIndex=0;
           }
            try{
                Thread.sleep((int)(Math.random()*500));}
            catch (InterruptedException e){}
        }
    }
}
考察
import java.awt.Graphics;
import java.awt.Image;
import java.lang.Math;
 java.awtパッケージ にあるGraphicsクラスとImageクラス、Java.langパッケー ジのMathクラスを使えるようにしています。   java.awtはグラフィック関係のパッケージ、 Java.langは、 基本的なパッ  ケージで、実はimport文がなくても使えます。同じパッケージの中にいくつも  使いたいクラスがあるときは、import java.awt.*; とも書けます。こうすると、  java.awtパッケージの中のクラスがすべて使えるようになります。   前期で学習したC言語で言えば、<stdio.h>や<Math.h>に相当するものではな  いかと考えられます。
public class repo2 extends java.applet.Applet implements Runnable{
  これはclass文といいます。repo2というのはこのプログラムファイルの名前で  す。次にextends java.applet.Appletはこのクラスをアプレットとして使うため  に宣言しているものです。次にimplements Runnableは、アニメーションのため  のものです。こうやっておくと、スレッドが使えるようになります。
Image Pic[] = new Image[2];
    int PicIndex = 0;
    boolean loop = true;
    Thread kicker = null;
  この4行は変数の宣言を行っています。   まず、Image Pic[] = new Image[2];というのは自分で描いた絵などを事前  に用意して、その絵を格納するために必要な配列です。その2つの箱を用意  します。   次にint PicIndex = 0;はそのどちらかの絵を表示するインデックスです。  今は0が入っています。   そしてboolean loop = true;は繰り返すための変数です。"真"か"偽"かの 真の方が入っています。   最後にThread kicker = null;はアニメーションのためのスレッド変数です。  これの中には何も入っていません。(=null)
public void init(){
     Pic[0]=getImage(getCodeBase(),"pic3.jpg");
     Pic[1]=getImage(getCodeBase(),"pic4.jpg");
    }
  まず、initで2つの絵を変数Pic[]に入れます。  次にPic[0]=getImage(getCodeBase(),"pic3.jpg");はPic[0]には"pic3.jpg"と いうファイルをコードベースにいれ、それをImageオブジェクトとして返しま す。 Pic[1]=getImage(getCodeBase(),"pic4.jpg");も同様の意味です。
public void paint(Graphics g){
        update(g);
    }
  まず、public void pain(Graphics g)はg上にコンポーネントを描画すると いう意味です。コンポーネントとは何らかの機能を持った、プログラムの部 品。プログラムだけでなく、ハードウェアや組織の一部を指して用いら れることもある。プログラム以外の分野で使われる例としては、機械の オプションパーツなどがある。   次にupdate(g)はpaint()のメソッドを呼び出す働きをします。
public void update(Graphics g){
        if(Pic [PicIndex]==null){
        g.drawString("Error when loading picture", 0,60);
        }
       }
        g.drawImage(Pic[PicIndex],0,0, this);
    }
  まず public void update(Graphics g)はコンポーネントを背景色で塗りつ ぶしてpaint()メソッドを呼び出す働きをします。次にif(Pic [PicIndex]==null){  g.drawString("Error when loading picture", 0,60);インデックスに入って  なかった場合のエラー処理を表します。   g.drawImage(Pic[PicIndex],0,0, this);はインデックスで指定された絵を描 きます。
public void start(){
     if(kicker == null){
        kicker = new Thread(this);
        kicker.start();
     }
  }
  これはアプレットを起動するという意味です。
     
public void stop(){
      if (kicker != null) {
          kicker.stop();
          kicker = null;
        }
    }
  これはアプレットを停止するという意味です。
 
public void run(){
        while(loop){
            repaint();
            if(PicIndex==0){
                PicIndex=1;
            }else{

                PicIndex=0;
           }
            try{
                Thread.sleep((int)(Math.random()*500));}
            catch (InterruptedException e){}
        }
    }
    まず、whileの{ }中で何をしているかというと、  repaintという描画命令で paintメソッドを呼んでいます。  呼び出されたpaintメソッドはupdateメソッドを呼びます。   updateメソッドでは、 PicIndexで指定された 番号の絵を描画します。 g.drawImage(Pic[PicIndex],0,0, this); これで、絵を描画しています。   次にtry{ Thread.sleep((int)(Math.random()*500));} catch (InterruptedException e){} は絵の表示時間を設定しています。(int) (Math.random()*500) で決められ ます。0〜500ミリ秒(0.5秒)の時間を乱数で選びます。 スレッドが絵を表 示している間は、描き直しは行われませんから、 絵は表示されたままにな   ります。 Javaアプレット・・・ネットワークを通じてWebブラウザにダウンロードされ、          ブラウザのウィンドウに埋め込まれて実行されるJavaプロ          グラムのこと。           Javaアプレットを悪用してユーザのコンピュータに被害          を与えることのないように、ユーザのハードディスクの内          容を読み書きしたり、自分が呼び出されたWebサーバ以外の          コンピュータに接続したり、他のアプリケーションソフト          を起動したりすることはできないようになっている。           Javaアプレットを使うことにより、HTMLで記述された静          的なWebページでは実現できない動的な表現が可能となる。          また、Webブラウザのみで利用することができるネットワー          クゲームやチャットを開発することもできる。
実行結果

反省・感想
				   
 今回の課題では最初、参考になるプログラムがいきなり表示されなかったりし たので出鼻をくじかれた感じでやる気がでなかったが、期限が迫るにつれて焦っ てやった。そして、2回目にやった時はちゃんとできて、すげえって思いました。 だからネットでいろいろ調べて面白いものとかもたくさんあったので、そのおも しろいものの一つをちょっとだけアレンジしました。もうちょっと絵に力を入れ たいところでしたが、考察も考えないといけなかったのでちょっと雑になってし まいました。次の課題がんばりたいです。
参考文献
				   
・独習Java ジョゼフ・オニール著
・IT用語辞典 http://e-words.jp/w/E382B3E383B3E3839DE383BCE3838DE383B3E38388.html
・Java学習用ページ たまじゃば http://www.horae.dti.ne.jp/~yoji/