情報科学科 2 年生
2003 年度 マルチメディアコンピューティング II

オプション課題

[2003/12/23版]

注意

課題は1000*1000ピクセルのサイズに収まるように作ってください.
日本語の表示をする場合,半角カタカナは使わないようにしてください.

再掲の問題に関して再提出した場合は,評価の良い方をその採点とする.
再掲の問題のプログラム名は変更されているので注意すること.

[R6-1](オプション,再掲)身近なロゴ(例えば,関学のMastery for Service,阪神タイガースのロゴ)を表示するプログラムlogo1.javaを作成しなさい.http://www.geocities.co.jp/Milano-Aoyama/3886/を参考にしてもよい.

[R6-2](オプション,再掲)NクイーンはN×Nのチェスの盤面において,N個のクイーンを互いに取られないような位置に配置する問題である.8クイーンの解の配置を表示するプログラムqueens1.javaを作りなさい.ただし,クイーンは上下左右斜めのコマを取ることができる.(将棋における飛車と角の両方の性質を持つ.)

[R6-3]](オプション,再掲)駅や空港で見かける乗り物の出発表示板を示すプログラムdeparture1.javaを作りなさい.表示板には「出発順序(先発/次発など)」,「出発時刻」,「種別(普通/快速など)」,「行き先」を最低表示すること.また現在時刻に合わせて表示すること.通学用のバスやJRのものを作りたい場合http://wwwksc.ksc.kwansei.ac.jp/campus/06_timetable2.htmlが参考になる.

[R6-4](オプション,再掲)オセロゲームのプログラムothello1.javaを作りなさい。ただし石の配置は先攻・後攻ともにマウスクリックにより行う(1人オセロ)。先攻・後攻それぞれの石の数も表示すること。

[R6-5](オプション,再掲)マウスが通過した点に選択された色が表示される簡単お絵かきプログラムpaint1.javaを作りなさい.色の選択はRGBの混合比率をバーでコントロールするカラーバーによって行うものとする。筆の太さを変えられるようにしなさい。

[R6-6](オプション,再掲)メッセージが上下左右に動くクリスマスカード xmascard1.javaを作りなさい。

[R6-7](オプション)4コマ漫画comic.javaを作りなさい.ただし,各コマは同時に表示せず,ボタンを押すごとに次のコマが表示されるようにすること.

[R6-8](オプション)複数の部品からなるイルミネーションillumination.javaを作りなさい.なお,それぞれの部品にはスイッチをつけ,そのON/OFFができるようにすること.以下のプログラムを参考にしてよい.

import java.applet.*;
import java.awt.*;

public class Illumination extends Applet {
        Switch sw1,sw2;
        int on1=0, on2=0;

        public void init() {
                setBackground(Color.black);
                sw1=new Switch(this, 1000);
                sw1.start();
                sw2=new Switch(this, 2000);
                sw2.start();
        }

        public void click(Switch sw) {
                if(sw==sw1) {
                        if(on1 == 0)  on1=1;
                        else on1=0;
                };
                if(sw==sw2) {
                        if(on2 == 0)  on2=1;
                        else on2=0;
                };
                repaint();
        }

        public void paint(Graphics g) {
                if(on1==1) g.setColor(Color.red);
                else g.setColor(Color.black);
                g.fillOval(100,90,20,20);
                if(on2==1) g.setColor(Color.green);
                else g.setColor(Color.black);
                g.fillOval(200,90,20,20);
        }
}

class Switch extends Thread {
        int Interval;
        Illumination ilum;

        Switch(Illumination p1, int p2) {
                ilum = p1;
                Interval = p2;
        }

        public void run() {
                int i;
                for( i=0; i<10000; ++i) {
                        try {
                                Thread.sleep(Interval);
                        }
                        catch(InterruptedException e) {
                        }
                        ilum.click(this);
                }
        }
}
[R6-9](オプション)基本図形の形や位置や色などを乱数を使って変化させ,アート風画像を次々と自動生成するプログラムartlike.javaを作りなさい。乱数の使い方は教科書p42を参考にすること。色を任意に変えるには,下記を参考にしてもよい。
rgb_r=ransuu.nextInt()%256;
rgb_g=ransuu.nextInt()%256;
rgb_b=ransuu.nextInt()%256;
g.setColor(new Color(rgb_r,rgb_g,rgb_b));
直線や矩形を基本図形としてモンドリアン風(http://www.ne.jp/asahi/art/dorian/M/Mondrian/Mondrian.htm)作品を作ることもできる。
http://www.geocities.com/SoHo/Exhibit/8033/room/fredkin/fredkin.html

[R6-10](オプション)物理現象をシミュレーションするアニメーションphysicsbased.javaを作りなさい。スーパーボール,ヨーヨー,物が割れる現象などなんでもよい。物理現象を再現してもよいし,感性的誇張を加えたものでもよい。作品にタイトルをつけ,それを表示するようにせよ。