TopPage > 最終課題に向けて > 演習4-1 オセロの基礎1
オセロの基礎 †
はじめに †
まずは,最終課題?を確認してください.
演習4は任意の課題です.既に作りたい作品を想定している方は,やらなくてもかまいません!
ここでは,「ひとまずオセロを作りたいんだけど,何をしたらいいか分からない!」方向けに解説を行います.
※クライアントは,演習3-2のMyClient.javaを引き続き利用します.
※サーバは,演習3-1-1で作成したMyServer2.javaを使います.
やりたいことを考える †
- オセロといっても,単純ではありません.やることはいっぱいですね!
- まず,どんなプログラムを書けばいいかの想定と順序を組み立てましょう.
- オセロの場合はまず,コマを自由に置ける空間を作り,それから少しずつ制限をかけていく順序が良さそうです.
細かな準備
クライアントごとに置けるコマの色を決定する
ターン制にする
判定を行う
置けるかどうか
ひっくり返すかどうか
ターンをパスするかどうか
勝敗はどうか
etc ...
課題1・細かな準備 †
- 使用するマウスイベントを限定する
- 余計な出力や,マス目をドラッグできる機能はいりませんよね.
- コメントアウト(// や /* */)しておくと,その行を無効化できます.
- ウインドウのタイトルやサイズを設定する
- ボタンを8x8にする
- 初期のコマを配置する
課題2・置けるコマをクライアントごとに限定する †
- ここで,演習3-2で記述したプログラムを少しいじります.
- CLICKの送信部分で送る色の情報は,myColorにしてください.
- その上に,アイコンを変更するなどの処理があれば,全て消します.
図1. 2つのMyClient.javaの送信と受信(クリックで拡大)
- 受信部分は両方のクライアントで実行される,という話はしましたね.
- 自分のmyColorを送信した場合,これと相手のmyColorは異なるはずです.よって,受信部分の中で
- 両方のクライアントで行いたい処理
- 送信元のみで行いたい処理
- 送信先のみで行いたい処理
- を場合分けすることができます.ここがポイント!
- あとは,送信元はmyIcon,送信先はyourIconを置く処理を行うことで,それぞれが同じ色になります.
課題3・ターン制にする †
- myColorと同じように,myTurnという変数を作ります.
- ターンの判定方法は様々です.ここでは,例を4つぐらい挙げておきますね.
- myTurnを「0」と「1」に限定し,一方を1,他方を0で初期化する場合
- 0なら相手のターン,1なら自分のターン
- 0なら黒のターン,1なら白のターン
- 両者とも0から始めて,自分のターンが済んだら自分だけ+1する場合
- 自分と相手のターン数を比較し,一致したら先攻のターン
- 両者とも0から始めて,自分のターンが済んだら両者とも+1する場合
- myTurnの初期化は,myColorの決まるタイミングで行うと良いでしょう.
- クリックした時に,myTurnによって処理を行う・行わないを分けましょう.
- あとは,myTurnをどこでうまく変更するかを考えてみてください.
演習4-2へ