11/26 課題

課題

yukidaruma

上の絵と似ていない月と雪ダルマが描かれた絵を描くプログラム Kadai1126.javaを「~/java」以下に作りなさい. プログラムはマウス入力と,キー入力を受け付け,キー'q' を押すと正常終了,マウスのボタンをクリックすると,表示されるものが何か 変わるようにしてください.

プログラムがちゃんと動くことを確かめたら,

/home/ktanaka/bin/report1126 1
を実行して,'q'を押して正常終了すること.このプログラムは,~ /java/Kadai1126.javaの有無,コンパイル,実行できるかどうかなどをチェッ クする.なお,自分の名前,学生証番号,プログラムに関する説明を Kadai1126.java の先頭にコメントとして入れること.

なお,今回のチェックプログラムは,すでに提出した他の人のプログラムと 比較して,最も似ているプログラムとの類似度を表示するようにしている.ヒ ントを参考にした場合は,関係のないプログラムとでも高い類似度が出ること があるので,身に覚えがなければ心配することはない.


課題の提出期限は12月10日(火)の21:00.それ以前であれば,何度でも再提出 できる.

ヒント

一からプログラムを書くのが大変な人のために,典型的なプログラムのパター ンを後ろにつける.この穴埋めでプログラムを作成しても良い.なお,コメン トアウトしてあるコードのある行の「//」を取り除くと動くプログラムはでき るが,月と雪ダルマが書かれていないので,課題の条件は満たされない.


// 名前:
// 学生証番号:
// 説明  

  // AWTを使うので java.awt.*を import する
import java.awt.*;
  // イベント駆動関係のクラスを用いるため
import java.awt.event.*;

  // 独立したウィンドウを開くので,Frameクラスのサブクラスにする
class Kadai1126 extends Frame{

  // この中で, 表示する際に必要なインスタンス変数を宣言しておく
  // int x=100,y=100;

  public Kadai1126(String title){
    super(title);
      // GUI部品と,Event Listenerを関連づける
      // KeyAdapterは,KeyListenerを実装して中身は何もないクラス
      // new クラス名(){} で,「クラス名」の名前のない子クラスを定義すると同時に
      // インスタンスを作る
    addKeyListener(new KeyAdapter(){
      public void keyPressed(KeyEvent e){
	int key=e.getKeyChar();
	System.out.println("keyPressed("+e+","+key+")");
	if(key=='q') System.exit(0);
      }
    });
    // マウスが押された際に
    addMouseListener(new MouseAdapter(){
      public void mousePressed(MouseEvent e){

	int mx=e.getX(),my=e.getY();
	// デバッグ用の表示
	System.out.println("mousePressed("+e+","+mx+","+my+")");
	// ここで表示のためのインスタンス変数を書き換えるコードを書く
	// x=mx; y=my;

	repaint();
      }
    });
  }
  public static void main(String[] args){
    Kadai1126 frame=new Kadai1126("Kadai1126");
    frame.setSize(400,400);
    frame.setVisible(true);    
  }
  public void paint(Graphics g){

    // インスタンス変数にしたがって描画するコードを書く
    // g.setColor(Color.white);
    // g.fillRect(0,0,400,400);
    // g.setColor(Color.gray);
    // g.fillOval(x,y,100,100);

  }
}