1/14


12/17レポート中の質問

Q.
  1/10から1/100秒単位まで計ることのできるような時計はあるんでしょうか?
A.
Calendarクラスを使うと,ミリ秒単位で時刻を知ることが できます.以下のサンプルを参考にしてください.なお,ミリ秒単位の値 は得られますが,これは誤差がミリ秒単位に収まっていることは意味しま せん.
// Calendar クラスを使用
import java.util.*;

class testCalendar{
    public static void main(String[] args){
	Calendar cal=Calendar.getInstance();
	System.out.println("今は"+cal.get(Calendar.HOUR)+"時"
			   +cal.get(Calendar.MINUTE)+"分"
			   +cal.get(Calendar.SECOND)+"秒"
			   +cal.get(Calendar.MILLISECOND)+"ミリ秒です");
    }
};
Q.
将棋ソフトのようにマウスでクリックした位置に一番近いマス目に自動的に駒を
配置できるようにするにはどうすれば良いのでしょうか?
A.
いろいろ方法があります.質問の通りの定義で一般的におこなうとしたら,
  1. すべてのマス目に対して
  2. マウスでクリックした位置とマス目の中心との距離を求め,
  3. 距離が最小であるマス目を選ぶ
となります.マス目の数が多くなると効率は悪くなりますが,通常の大きさでは コンピュータよりも人間の方が遅いので,問題ありません.

将棋ソフトのように,マス目が長方形で規則的な場合は簡単です.

のようにマス目の幅を BOX_WIDTH, マス目の高さを BOX_HEIGHTとして,マス 目の繰り返しの左上の座標を(INITIAL_X, INITIAL_Y)とすると,
 ix = (mouseX-INITIAL_X)/BOX_WIDTH;
 iy = (mouseY-INITIAL_Y)/BOX_HEIGHT;
のようにして,直接求めることもできます.規則的でない点の集合 に関して,もっとも近い点を効率的に求める方法としてはボロノイ図を作成す る方法が知られていますが,この講義の範囲を越えるので説明は避けます.
Q.
著作権の放棄されていない画像は、今回の最終レポートにだけ使う場合でも
違法なのでしょうか?(夏学期の情報処理の授業ではfile:/上にWebページを
作ったのですが、その時は許可されていました。)
A.
file:/上にWebページを作ってレポート提出用に使うだけなら構いませんが,折 角,作るのだから他の人にも見てもらえた方が嬉しくないですか?
Q.
コンピュータ側のアルゴリズムの作り方が分からないので、簡単
なゲーム(Bull&Cowや○×ゲームなど)の場合についてPC側の思考方法の例を挙げ
ていただけないでしょうか?
A.
今回の講義で扱います.
Q.
ピンボールみたいなのが作りたい。
そのために、ボールが自由落下する動きや、壁に当たると速くなったりする動き
は可能なのでしょうか?
A.
多くのゲームで実現されているように,可能です.どうように実現すれば良 いかは自分で考えてみて下さい.
Q.
#情報棟はMIDI再生できましたっけ…
A.
javax.sound.midi パッケージ以下のクラスを使えばできそうですが,試してみたことはありませ ん.自習室のNCはヘッドホンを持ち込めば,NCから出ているケーブルに接続す ることができるので試してみてください.
Q.
  質問ですが、ゲームを作る際にハイスコア表示などをしたいのですが、どうす
  れば良いのでしょうか。ゲームはアプレットで作りたいのですが、その場合は
  クッキー等を使わなければならないのでしょうか。もしそうならその使い方も
  教えてください。(私のクッキーの認識は、ブラウザ上での行動を記録するも
  の、といった程度です)。
A.
クッキーは連続性のないHTTPリクエストの中で,同一性を保証するためのも のなので,ハイスコアで入れる名前を毎回選ばせるゲームセンター方式を取る のであれば,クッキーは不要です.

ハイスコアデータを共有(個人の中でのハイスコアではなく,アプレットを起 動した人全体でのハイスコア)する場合は,ネットワーク上にハイスコアデー タを配置する必要がありますが,これを特殊なサーバを立てて実現するのか, CGIあるいはサーブレット等のWWWインタフェースを利用するのかいくつかの方 法が考えられますが,この講義の範囲を超えるので自分で調べてください.

Q.
  それから、課題の評価基準はどのようなものなのでしょうか。前述の通り、私
  はゲームはシンプルなものほど面白いと思っているので、(もし最終課題とし
  てゲームを作ることになれば)作るゲームは非常に単純なものになる可能性が
  あります。私も点は欲しいですから、もし作るゲームの評価が低いものになる
  ようでしたら、多少自分の感性に会わなくても複雑なものに作り替えようと思っ
  ています。その辺りのことをお答え下さるようお願いします。
A.
ゲームがシンプルだからといって評価を落とすことはしませんが,プログラ ムが余りに容易であると考えられる場合は,そちらの評価は低くなるでしょう.
Q.
最後にマスの色を確認するプログラムをどうするかが、
悩みどころです。if(X座標、Y座標)=blackとかで
できるのでしょうか?
A.
画面上に表示している色は,イメージの扱いで やったように,PixelGrabber を使うと得ることができます.ただし,多くの場合は画面に表示している色を 直接欲しいのではなく,その色を表示するために用いた内部構造にアクセスす れば事は足りるはずです.
Q.
プリンタを使わせるにはどうしたらい
いのかわかりません。
A.
java.awt.printパッケージ,javax.print パッケージなどが関連していますが,教育用計算機システムで動くかどうか確 認していません.

12/17の結果(重複あり)


次に進む

最終課題について

1月19日(日) 21:00までに,好きな題材を選んで Java 言語でプログラムを作 成し,そのプログラムの説明をする HTML 文書を作成しなさい..その上で, 最終回の1月21日(火)に,教卓上のNCを使って,発表(デモンストレーションと プログラムの説明)をしてもらい(提出人数によっては全員ではなくこちらの指 定した人だけになると思います),それで評価します.

最終課題に関する質問と回答

Q.
今週末はセンター試験なので、1月19日に提出コマンドを実行できない。
A.
学校内から提出する場合は、1月17日(金) 13:00 以前に実行してください(駒場図書館も17日は12:00で閉まるようです。)。 自宅から提出する場合は、sshでUnixサーバに入って提出コマンドを実行してください。具体的な方法は、「利用の手引き」センター外からの利用を参照してください。
Q.
自宅で作ったアニメーションプログラムが、センターのUnix環境で実行すると遅すぎる。
A.
センターのNC環境で実行してみてください。センターのUnix環境でのJavaの実行はNC環境よりも、コンパイル等は高速ですが、画面の更新は同じマシンで実行するNC環境の方が高速です。
Q.
画面のちらつきをなくすように、オフスクリーンイメージを使っていたが、NC環境ではちらつくことがある。
A.
NC環境ではこの問題が出ることはあるようです。仮にデモがうまく動かなく ても、プログラミング上の工夫は工夫として評価します。
Q.
オセロのプログラムを作っていたのですが、1/14の講義のサンプルプログラムよりも、強いのが作れそうにないのでテーマを変えた方がよいでしょうか?
A.
あくまで評価するのはプログラミングなので、強くなくてもみるべきところ があれば評価します。ただ、1/14の講義のプログラムは非常に弱いので、勝 つプログラムはすぐに作れると思います。