golfゲームと木構造
この記事は、SLP KBIT Advent Calendar 10日目の記事です。
ごあいさつ
SLP KBIT Advent Calendarをきっかけに、はてなブログデビューをしました。
過去のAdvent Calendarを参考に作っていますが、いろいろ初心者なのでその点は御了承を。また、私は国語力が壊滅的なので文法面でも多々おかしな点があると思いますがその点もご了承を。
SLPのみなさん向けの記事となります。
はじめに
私は、GMVに配属されていて約5ヶ月?になりますが、まだまともにプロジェクト活動できない部分がある。
というより、なにひとつゲーム制作に取り掛かれていない・・・
同じプロジェクトメンバーとのコーディング能力に差がある分、なかなか団結して取り組むことができない。
はっきりいってゲーム制作は停滞中である。
そこで、まずは自信のGMVでの経験を積むために一人でもゲーム制作を始めることにした。
この場を借りて自分が考えているゲーム制作、今の現状をそこはかとなく書き連ねていこうと思う。
自分が考えているゲーム制作
記事のタイトルやAdvent Calendarでも告知していたが、
私が考えるゲーム制作はずばり
シミュレーションゴルフゲーム
である。
私は、SLPとゴルフ部を兼部している状態である。そこで、ゴルフ部の経験をどうにかSLPにも活かせないかということで決まった。
そして、大学の講義で最近、ポインタを使った木構造を学んだのでその木構造も取り入れてみようと思った。
できるだけ詳しく
では、そのシミュレーションゴルフゲームというものをできるだけ詳しく語ろうと思う。
1.ゴルフとは
まず、ゴルフがどういうものなのかということを知ってもらいたい。ゴルフというのは単純に遠くにボール飛ばせたらいいってものではない。雨晴れ、高低差、風向き、湿度などいろいろな自然環境を考慮して考えなければならない。つまり、右に打つか、左に打つか、強め弱めに打つか、自分で選択して打たなければならないのである。
2.ここで木構造
私はこの選択という面に注目して木構造でゴルフゲームができないものか考えた。下図がその概略である。
*アウト・オブ・バウンズ(out of bounds)とは、ショットしたボールがプレー領域の外にでることでペナルティーとして打数に+2カウントされる。
厳密には木構造ではないが、これならボールが止まる位置というのが決まっているので選択してその地点をたどっていくことができる。余談だが、ペイントで編集したので荒くなってしまった。また、ゴルフ経験者がこの図を見るとツッコミどころ満載になっている。
3.コマンドプロンプトで実装
バーディとは、目標打数より1打少なくカップインすることである。
ボギーとは、目標打数より1打多くカップインすることである。
実験段階として上図の木構造で実装してみた。入力は右と左の2択で1と2のみである。出力は現在の場所と打数、カップインした場合はバーディやボギーなどのスコア名称が出力される。再帰と構造体を使って木構造を走査している。OB判定やバンカー、ウォータハザードの処理はまだで、コース一面がフェアウェイ前提であり、この程度なら誰でも簡単に作れる非常に簡素なものになっている。
コードはまた後日。。。
4.今後の展望
OB判定やバンカー、ウォータハザードの処理も近々、実装予定である。また、しばらくはC言語でいくつもりだが、いずれはjava言語でGUIとして実装したいと考えている。今の段階でjavaの知識がほとんどないのが現状ではあるが、このgolfゲーム制作を通してjavaの知識を学ぶことが目的でもある。ネタ要素もいれる予定である。
さいごに
以上ではありますが、この木構造を使ったgolfゲームについての詳細はまた後日、改めてLTを通して発表したと思います。
また、このgolfゲームの進捗情報は随時このはてなブログを通して記事として更新したいと思います。(せっかくはてなブログデビューしたのだから・・・)
このブログの更新が1か月以上なければgolfゲームの制作は停滞しているとお考えください。