Java Network Games (工事開始)
この集中講義ではネットワークゲームを題材にして、通信プロトコル、イベント駆動、マルチスレッドのJavaプログラミングを体験する。サンプルプログラムはプロフェッショナルな書法からは大きく隔たっている。演習に際して問題点、改善点を説明するので、受講者が立派なプログラムに発展させていくことを期待している。この演習で所定の課題を達成した諸君は、以下のような知識、技能を獲得しているはずだ。
- ネットワークアプリケーションの通信プロトコルを設計することができる
- マルチスレッドとイベント駆動を適切に組み合わせてアプリケーションのロジックを実現する
- 素朴なテスト、デバッグの手法が使える
以上の体験が、今後どのようなプログラミング言語を学ぶときに大いに役立つ。もちろんJava言語で更に上級のオブジェクト指向プログラミングを学ぶ上でも前提条件となる。
Q and A のページ(2012年度プログラミング演習3と共用) ==> こちら?
基礎知識
通信プロトコルとは
(to be filled)
マルチスレッドの考え方
(to be filled)
簡単なデバッグ手法
(to be filled)
スケジュールと課題
以下の課題は例である。そのまま大項目を選択してもよいし、自由に変更してもよい。ソースコード1000行が最低ライン。友達と組んでやるのも可。ただし、2人のチームなら1500行、3人のチームなら2000行くらいを目指して機能の充実をはかってほしい。
課題例
- GUIイベント駆動とマルチスレッド のサンプルを参考に
- メッセージの表示を複数行化
- 接続から終了までをGUIからできるように変更
- 多人数のチャットへ機能拡張
- 三目並べ のサンプルを参考に
- ゲームの進行をプログラム側で管理するような機能の追加
- 接続から終了までをGUIからできるように変更
- 鬼ごっこ ゲームのサンプルを参考に
- 自分のアイデアでもっと面白く改造
参考と注意事項
- ブロックしないI/Oもあるので興味があったら調べてみるとよい。New I/Oというキーワードで。
- Threadを使ったサンプルではSynchronized処理を意図的に消している。そのままで動くかも知れないが正しくない。マルチスレッドでは共有データへのアクセスを排他制御する必要があるので、きちんと修正すること。
第1日
- 最初の一歩 のサンプルを理解する。第2週までに上記のどの課題に挑戦するか決め、計画書を書く。
- 3つの課題例を概観する。
第2日
- 提出された計画書に基づき課題を決定する。
- この日は、午後は自習とする。第2日と第3日の間の日は個別指導の日とする。
第3日
課題達成に向けて個別指導。
第4日
- 発表資料作成
- 発表会
作品
レポートの作成と提出について
- 締め切り
- 授業時間内
- 提出方法
- 授業中に指示する。
- 提出ファイルの形式
- ファイル名は"学籍番号.zip"とする。例えば"10k2001.zip"のように。このZIPファイルには以下のファイルを含むものとする。
- ソースコード
- 発表資料(ppt,pptx,doc,docx,pdfのいずれか)
:デモの実行
1. jar ファイルの作成 プロジェクト projectABC のパッケージ packageABC を固めるとする。 ...\workspace\projectABC\bin に移動 jar cvf anyfilename.jar packageABC これで anyfilename.jar ができる。これを配布する。 2. jar ファイルの実行 packeageABC のクラス Client を実行するなら anyfilename.jar を適当なディレクトリに置き、そこに移動する。 java -cp anyfilename.jar packageABC.Client