report1



課題1

講義資料のJavaアプレットを参考に、簡単なディスプレイ出力Javaアプレットを 作成し、その動作を考察せよ。

[1] 簡単なアプレットプログラムの例1
・Helloa.java
import java.applet.Applet;                          // 短名 Applet
import java.awt.Graphics;                           // 短名 Graphics

public class Helloa extends Applet {                // サブクラス Helloa
    public void paint(Graphics g) {                 // paint()メソッド
        g.drawString("Hello, Java world!", 30, 40); // 文字列描画メソッド
    }
}


Helloa.javaの実行結果




[2] 簡単なアプレットプログラムの例2
・Circles.java
import java.awt.*;        // ウィンドウ関連ツール(Abstract WindowToolkit)を使う
import java.util.Random;  // 乱数を使う
import java.applet.Applet;

public class Circles extends Applet {                // アプレットの名前は Circles にするv
    public void paint(Graphics g) {                  // 描画手順は以下の通り
        Random a = new Random();                     // 新しい乱数列 aを用意する
        for (int i = 0; i < 1000; i++) {             // 0 から 999 までループ
            g.setColor(new Color(a.nextInt()));      // 整数の乱数を発生し,それで色を決める
            int x = (int)(300 * a.nextDouble());     // 整数変数 x に300×(0以上1未満の実数の乱数) を(切り捨てて整数にして)代入する
            int y = (int)(100 * a.nextDouble());     // 上と同様
            int r = (int)(40 * a.nextDouble()) + 10; // 上と同様
            g.fillOval(x - r, y - r, 2 * r, 2 * r);  // 中心 (x,y),半径
	    r の円板を描く
        }
    }
}


Circles.javaの実行結果





オリジナル ソースプログラム



repopo1.java
import java.awt.*;
import java.applet.Applet;

public class repopo1 extends Applet {

    public void paint(Graphics g){
        g.setColor(Color.green);
        g.fillOval(130,20,50,50);

        int n = 21;
        int xdata[] = new int[n];
        int ydata[] = new int[n];
        xdata[0] = 175;
        ydata[0] = 75;

        xdata[1] = 50;
        ydata[1] = 75;
        xdata[2] = 40;
        ydata[2] = 137;
        xdata[3] = 60;
        ydata[3] = 137;
        xdata[4] = 65;
        ydata[4] = 95;
        xdata[5] = 103;
        ydata[5] = 95;

        xdata[6] = 90;
        ydata[6] = 170;
        xdata[7] = 90;
        ydata[7] = 210;
        xdata[8] = 45;
        ydata[8] = 210;
        xdata[9] = 30;
        ydata[9] = 230;
        xdata[10] = 110;
        ydata[10] = 230;
        xdata[11] = 110;
        ydata[11] = 170;

        xdata[12] = 140;
        ydata[12] = 170;
        xdata[13] = 180;
        ydata[13] = 280;
        xdata[14] = 200;
        ydata[14] = 280;
        xdata[15] = 160;
        ydata[15] = 170;

        xdata[16] = 168;
        ydata[16] = 95;
        xdata[17] = 191;
        ydata[17] = 137;
        xdata[18] = 253;
        ydata[18] = 137;
        xdata[19] = 253;
        ydata[19] = 117;
        xdata[20] = 201;
        ydata[20] = 117;
       g.fillPolygon(xdata,ydata,n);

    }
}


コンパイル

javac repopo1.java

実行結果
実行結果 を別の方法で表示

考察



  • import java.awt.*; では、java.awt.*をインポート(取り込み)している。
  • import java.applet.Applet; では、java.applet.Appleをインポートしている。
  • public class repopo1 extends Applet { では、repopo1がクラスが Appletクラスを拡張することを宣言している。 アプレットでは、必ずこのクラスを拡張しなければならない。
  • public void paint(Graphics g){ では、paintというメソッドを定義する。 voidは、戻り値を返さないということ。 Graphics gは、Graphicsオブジェクトをgという引数にして paintに渡すということ。
  • g.setColor(Color.green);で緑色を指定。
  • g.fillOval(130,20,50,50);で、左上を基準に、横をx、縦をy、として xが130、yが20から始まるxの幅50、yの幅50の緑に塗りつぶしの円を書いた。 (fillは塗りつぶすということ。)
  • int n = 21;で、多角形の頂点の個数を指定。 int xdata[] = new int[n];は、xの値。 int ydata[] = new int[n];は、yの値。 xとyの頂点の値を順番よく指定する。
  • g.fillPolygon(xdata,ydata,n);で指定した頂点の値を結びつけ、(最初と最後 に指定した頂点の値は自動的に結びつく)塗りつぶされた多角形ができる。

  • 感想


    今回は初めてのjavaの課題でしたが、正直むずかしかった。図を考えるだけなら すぐにできたが、考察が自分的には少し難しかったと思う。それに、初めてHTML を使っての課題提出だったので、たったこれだけのことをするのにかなり時間が かかってしまった。(みんなのすこし見ましたが、とても見やすい) 次の課題からは、もっと見やすく工夫しようと思う。2週間あるので、じっくり 時間をかけてやりたいと思う。あと、実行結果の絵は非常口のマークをイメージ してやりました。