11/30 簡単なグラフィクス


質問と回答

Q.
講義と直接関係無いのですが失礼します。 自宅のMachintosh(OS X)でもemacsを使用したいのでGNUからダウンロードしてインストールを試みたのですが、エラーになってしまいま す。 具体的にはターミナルで
$$$$$$ ./configure
と入力すると
loading cache ./config.cache
checking host system type... powerpc-apple-darwin8.3.0
configure: error: Emacs hasn't been ported to `powerpc-apple-darwin8.3.0' systems.
Check `etc/MACHINES' for recognized configuration names.
というメッセージが出てきます。これはどうやって解決すれば良いのですか?
A.
ソースからmakeするのはそれなりに大変なので,パッケージシステムを使って導入した方が良いでしょう. MacOS 10.3の場合は,東大finkチームが作成した情報処理ナビゲータ6付属のCD-ROMでfinkパッケージシステムをインストールす るのがおすすめです.ただ,最新のMacOS 10.4ではこのCD-ROMでインストールしたemacsは不具合が発生するようです.finkの機能を 利用してソースからコンパイルさせれば良いかもしれませんが, http://home.att.ne.jp/alpha/z123/emacs-mac-j.html などの バイナリパッケージをインストールする手もあります.
Q.
GameSolver.javaについて(3)と(4)について、メソッドgetやanswerTypeを使って、(3)をget(j), (4)をanswerType(nextQuestion)としたのですがコンパイルできません。highLowProblemクラスのメソッドを使ってはいけないので しょうか。
A.
メソッド呼び出しの方法を思い出してください.
  1. クラスメソッドは,「クラス名.メソッド名(引数 1, .., 引数n)」
  2. インスタンスメソッドは,「式.メソッド名(引数 1, 引数2, ... , 引数n)」
  3. 同じクラスのクラスメソッドの呼び出しでは「クラス名.」を省略できる.
  4. インスタンスメソッドから,式として「this」(自分自身)を指定してインスタンスメソッドを呼び出すときは,「this.」を省略できる.
ことになります.クラスGameSolverの中から,クラスProblem およびそのサブクラスで定義されたインスタンスメソッド get, answerTypeを呼び出すときの文法は 2 になります.3 や 4 の場合には該当しないので,メソッド名だけで呼び出すことはできません.
Q.
載っていたものをコピーしてコンパイルしたら最後の方の部分で
Janken.java:41: 式の開始が不正です。
public static void main(String args[]) throws IOException{
^
と出ましたが、どこを直したらよいのですか?
A.
マウスで範囲を指定して「コピー」->「貼付け」をおこなったのではなく,キーボードから入力したのでしょうか?

問題のエラーは,入力の際に閉括弧「}」を入力し忘れた時のエラーに見えます.また,マウスでコピーした場合は, 問題の行は44行目になるはずですが,エラーメッセージを見ると41行目でエラーが出ているようです.

Q.
受講者同士の対戦をしようと、ファイルを実行しても、処理が止まったり、Exception,,,,,などと表示され、実行できないんですが、なにが問 題なんでしょうか?
A.
受講者同士の対戦は,受講者が2名ほぼ同時に接続しないと実行できません.一人しか接続しない場合は, 「処理が止まったり」するように見えるかもしれませんが,接続相手を待っているという状態です.

ただ,サーバプログラムに問題があるのはたしかで,

Exception in thread "main" java.net.SocketException: Connection reset
のようなエラーが発生することがあります.これは,対戦相手が揃わずに誰かが抜けてしまった後に,対戦 しようとするとなるようです.この場合は,もう一度接続すると問題なく実行できます.

どちらにしても,同時に二人がサーバに接続する必要があるので,講義時間中以外はなかなか対戦するチャン スはないでしょう.


過去の課題について


今日の内容


今日の課題