« ○×ゲームをやるとき | トップページ | コンソール版オセロ完成 »

2005/01/08

オセロ

今日は昨日に引き続きオリジナルでゲームを作ろうと思って、まず何を作るのがいいかいろいろ考えてみたんだけどどれもこれも難しそうだったんで、ことごとくボツになっってしまった^^;
結局今回はオセロを作ってみようということで作成開始。
でも一応コンソールのアプリから作って完成したらそれにフォームをつけようかなぁと思ったんでコンソールで開始。
今日もまた長い長いPCとの戦いが始まっちゃいましたOTL

とりあえず最初は基本的なものを作っていく。
前回も最初は盤から作り始めたので今日も盤を作成。でも今回は前回と違って広いのでfor文を利用して作ってみた。
まぁ見た目はまったく変わらないんだけど何かと編集とかするのに便利ですね
そしてお次は盤に表示するものを数字から●や○に置き換える関数。
盤も置き換えの関数もわりと仕組みは簡単なんですいすいと進み完成。
ちょこっとメイン関数を書き換えてテスト。無事表示されたんでこの2つは完成。

そしてちょっと大変な入力機能
これもすぐには成功しませんでしたけど昨日と似たような感じで少しずつ改良して完成。
特に大苦戦したわけじゃないんでわりとすんなりできたかなぁって感じでした

んで一番苦労したのが挟んだら間のをひっくり返すという処理。
まずはどうやって挟んだのかを判定させるところでストップ。
んで思いついたのがおいたマスを基準に8方向すべてを調べて違う色が隣接していてさらに同じ色が次にあればはさんでいるという風に判定処理を作成。
結局8方向文の処理を書かなきゃいけないわけで大変大変OTL
んで書いたはいいけどうまく動作してくれずはさんだところの色が変わらないでほかのところの色が変化^^;
それを直すのに2時間くらいかかったかなぁ・・・・w
結局原因だったのがfield[8][8]という変数でマスをあらわしていたんですけど左が縦、右が横に対応してたんですけどそれを逆にしてました^^;
まぁいろいろと細かいミスもあって判定をする関数だけでかなり時間かかりました^^;
まぁでもこれができればあとは結構楽でした。
なんといっても判定が難しかったので^^;
そして最後に作ったのがゲームが終わったかどうかの判定。これも結構悩みました。
そして最終的に○×ゲームの時と同じで全部のマスが空欄でなくなったら終了というふうにして完成~。と思いきやおける場所が無くてゲームが止まってしまうことがあるということが発覚。
こりゃどうやって対処すりゃいいんでしょうかねぇ・・・。
結局今日は解決方法は見つからずに終わりにしました。
明日にでも考えてみようと思ってます。
とりあえずパスをできるようにしてもし置けなかったら自分で判断してパスしてくださいということで^^;
とりあえずほぼ完成ということでアップしておきます。
これまた暇な人がいたらやってみてください<(__)>
バグとかもあれば報告してくれたらなぁと思います

uploader

« ○×ゲームをやるとき | トップページ | コンソール版オセロ完成 »

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: オセロ:

« ○×ゲームをやるとき | トップページ | コンソール版オセロ完成 »