研究帖12

 

 

 


作者へのメッセージ
研究課題 未確認走行物体 (UnIdentified Running Object) 

研究課題 未確認走行物体 (UnIdentified Running Object)

 

 

ナイス博士「今度作るサッカーゲームは、オブジェクト指向方式で作るぞ。」

そよ風さん「へえ、オブジェクト指向って、どうやるんですか。」

ナイス博士「プログラムは、細かく分けて作るといろいろ便利だから、物を作る ように、細かい部品に分けてみんなで分担して作るんだ。」

BB君「なるほど、で、何を作りますか?」

ナイス博士「まず、それから考えよう。私の設計した、このクラス図を見てくれ!」

 

 

 

BB君「なんですか?これは」

そよ風さん「ずいぶん簡単な図ですねえ。」

ナイス博士「簡単だが、これがサッカーゲームの本質だ!これを細かく分けて、実際に javaのコードで実現できるように持っていけばいいんだ。」

そよ風さん「ねえ博士、これ、だめじゃないですか?」

ナイス博士「なぜだい?」

そよ風さん「だって、グランドもボールもないじゃないですか。ルールも審判も いりますよ。」

ナイス博士「そうか、だから必要があればどんどん足せばいいんだ。これでどうだ!」

 

 

 

BB君「博士、まだまだこれじゃ、全然だめです!話になりませんよ。」

ナイス博士「なっ、なんだ!どこがだめなんだ!!」

BB君「だって、パソコンゲームだから、ゲームだけ出来ても表示する機能がないとだめでしょう!」

ナイス博士「だから、どんどん足すんだよ!これでどうだ!!」

 

 

 

そよ風さん「なんか違うわね。だいたい何を表示するのか,,,,,,,。」

BB君「うん、博士の考える事は、いつも簡単過ぎるよ。」

ナイス博士「なんだ!!じゃあ、君たちも書いてみなさい!!!」

BB君「ゲームを動かす機能が必要だな。だからこうだ!」

 

 

 

そよ風さん「それだったら、もっと簡単にしたほうがいいわ。こうよ!」

 

 

 

ナイス博士「ちょっと待て、なんか違うぞ!」

BB君「何ですか、博士。」

ナイス博士「オブジェクト指向だから、直接機能を考えるより、もっと物として考えて いいんだ。そうすれば、最後には、何にどんな機能を持たせればいいのか分かってくるんだ。」

そよ風さん「じゃあ、どうします?」

ナイス博士「最初に戻って、どんどん分けていこう。まず、参加者はチームとする。 チームには選手がいる。選手には、名前やポジションがある。グランドやボールも別なクラスにする。 こうだ!」

 

 

そよ風さん「なるほどねえ!何となく分かるわ。」

BB君「そうですね。じゃあ、グランドも分けます。ゴールラインに、タッチラインに、 センターサークル、ペナルティエリア、それから.......」

ナイス博士「いや、本当はペナルティエリアとセンターサークルはいらないんだ。」

BB君「なぜですか?反則してもPKが取れないじゃないですか。」

ナイス博士「機械は反則をしないんだ。」

BB君「ああ、なるほど!」

そよ風さん「ええっ、どう言う事ですか?」

ナイス博士「選手が人間なら、どんな反則でも出来る。その気になれば、わざとボールを手で 落としたり、他の選手にかみついたり、ゴールを倒して全員でしがみついたり、隠し持ったスコップで グランドに落とし穴を掘ったり、何でも出来るだろう?だからやってはいけない事を決めておくわけだ。」

そよ風さん「そんな事するかなあ。..」

ナイス博士「でも、ルールで決めておかないと、反則に出来ないだろう?が、パソコンなら 決まった事しかやらないように出来るから、ルールもずっと単純化出来るんだ。」

そよ風さん「まあ、それは言えますけど、グランドの外見だけは有った方がいいなあ。」

BB君「じゃ、それは後で作ろう。で、ラインの元のクラスを作って、それからいろんなラインを作れば いいですね。」

ナイス博士「うん、で、ラインクラスはどうする?」

BB君「始まりと終わりの点の座標と、太さを指定すればいいですね。」

ナイス博士「点はどうする?」

BB君「それもクラスを作ります。こうだ!」

 

 

ナイス博士「なんとなく出来てきたな!」

そよ風さん「ちょっと待って!今思いついたんだけど.......」

BB君「何だい?」

そよ風さん「選手やボールにも、グランド上の位置が有りますよね?」

ナイス博士「うん、そうだ。大事な事だな。」

そよ風さん「それも点で指定できますね!」

ナイス博士「そうだ!点のクラスは重要だな!」

BB君「そうですね!ボールがどこにあるか、選手がどこにいるかで勝敗が決まるし、ゲームが 表示される訳だから、最重要ポイントですね!!」

 

そよ風さん「それで、、ルールはどうしますか?」

ナイス博士「タッチラインから出ればスローイン、ゴールラインから出ればゴールキック、」

そよ風さん「コーナーキックは?」

ナイス博士「ない。そういうクリアーはしない。必ずパスにつなげるんだ。それにオフサイド もタッチラインアウトも相手チームはやらない。プレイヤーだけしかしないんだ。」

そよ風さん「単純ですねえ。」

ナイス博士「うん、別にリアルなゲームが作りたい訳じゃないし、やってもつまらない事は しない事にした。」

BB君「うーーん、ゲーム内容をもうちょっと説明してもらえないかなあ。....」

ナイス博士「そうか、よし。これを見てくれ!」

 

 

 

そよ風さん「これは?」

ナイス博士「プレイヤーのやる事の図だよ。マウスでセンターフォワードを動かすんだ。 詳しく書くと、

 

1. 最初は相手がラインを上げるので、オフサイドにならないよう相手より ハーフラインに近くなるように移動する。自分のサイドに入ってもいい。

2. 中盤からサイドバックに長いパスが出る。サイドバックは足が速いので、相手を振り切って ボールを追う。

3. サイドバックがボールに追いついたら、相手に邪魔される前にマウスのクリックで 合図し、センタリングをしてもらう。そのとき右ボタンか左ボタンかで、次に シュートするか ポストプレーするかが決まる。

4. 合図していない時にサイドバックがセンタリングしたら、スルーしなければいけない。 その場合は別の選手がシュートする。間違ってボールに触れると攻撃が失敗する。

5. センターフォワードがボールに触れる時は、マークを振り切っていないといけない。 そうしないと相手に接触されて攻撃は失敗する。

6. シュートする直前に相手のゴールキーパーは右か左に移動する。ボールが来たら右か左かを クリックして相手キーパーがいない方にシュートする。そうすれば3分の1の確立で、ゴールする か、ポストに跳ね返るか、アウトになる。ゴールできない時は相手が反撃する。

7. ポストプレーは、ボールに触れる時右か左をクリックすると、その側に ミッドフィールダーがいればシュートする。

8. 攻撃が失敗すると、相手がカウンター攻撃をする。ラインを上げているのですぐキーパーと 1対1になる。プレイヤーはシュートの瞬間にキーパーを動かして阻止して、また中盤から攻撃 する。

 

こういう事だよ。」

 

 

BB君「結構複雑ですね。」

ナイス博士「そうなんだ。実現するのは大変だと思うよ。」

そよ風さん「で、ゴールの判定は?」

ナイス博士「ゴールラインのうち、決められた領域をボールが越えればゴールになるんだ。」

BB君「でも、バーの上を越えることも有りますよ。」

ナイス博士「そうだけど、このゲームはグランドを真上から見て、平面上でやるので、ボールの 高さは関係ないんだ。」

BB君「そうすると、ボールの座標によって、判定は、

 

タッチラインを越えれば相手のスローイン、ゴールの部分を越えれば得点、 それ以外はゴールキック

と、こういう風に考えていいんですね。」

 

ナイス博士「そう言う事だな。」

 

   

 

ナイス博士「さて、問題は、..............」

そよ風さん「どうやって画面を描くか。..............」

BB君「うーーーん、今までやった事ないからなあ。...」

ナイス博士「そうだなあ。まあ、位置情報を集めるのが先決だな。」

そよ風さん「そうですねえ。位置情報を集めて、グランド上にアイコンを描けばいいんでしょうね。」

BB君「そうなると、ポリフォリズムですか?」

ナイス博士「そうだなあ。ボールと選手のスーパークラスを作って、位置情報を配列でどこかに 渡して、再描画すればいいのかな。」

BB君「これが最大の難関ですね。」

ナイス博士「うん。まあ、時間はたっぷり有るし、いろいろ研究して見よう。」

 

続く。

 

研究課題に戻る。

見学者への注意事項に戻る。