オセロのボード

オセロのボードはビスケットでは簡単そうに見えて結構(というか相当)面倒です.

自分が黒だとして,黒と黒の間に隙間がなく白が1つか2つか,...と続いていたら,それらをひっくり返す,ということをしなければなりません.この判定はビスケットのパターンとしてはかけないので,手続き的にプログラムを作る必要があります.

まず基本的な部分を設計するために,自分が黒で白が右方向に並んでいる(一番左に黒を置いた)という状態を考えてみます.

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-11-03-18-13-34
赤いマークがいま黒を置いたところです.上と中は引っ繰り返せますが,下は引っ繰り返せません.

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-11-03-18-15-55
マークから右に矢印を発車して,それが白の上なら進んで行きます.
%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-11-03-18-13-51

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-11-03-18-16-05
黒に着いたら,「ひっくり返せ矢印」に変わります.

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-11-03-18-14-15

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-11-03-18-16-10
「ひっくり返せ矢印」は,白を黒にひっくり返して戻ります.

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-11-03-18-14-33%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-11-03-18-14-59

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-11-03-18-16-21
それ以外のとき(なにもないか違う色のところ)の矢印は消えます.

この方法はたしか,ずっと昔にに,JAISTという大学に遊びに行ったときにそこの学生さんと考えたときに出た気がします.プログラムはこちらです.

一応これで,任意の個数を並んだときに対応できました.一つの色,一つの方向に対して,メガネは進む,ひっくり返すで3つ,消えるで2つ,絵は2つです.

色は2色,方向は8つあるので,メガネは2x8x(3+2)=80個,絵は2x8x2=32個ですね.掛け算からすれば大した分量ではないです.

あとは淡々と作って行けばよいのです.ビスケットでの大きなプログラミングは最初に戦略を考えて決定したら,あとは単純作業になることが多いですね.

がんばって作ってみました.

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-11-03-18-33-58 %e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-11-03-18-34-17 %e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-11-03-18-35-01 %e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-11-03-18-35-18
テスト用に並んでいるのはここです.

ひっくり返す部分ができたので,あとはゲームとして遊べるようにします.

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-11-03-18-41-33

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-11-03-18-43-05
最低限にはこれだけでよいです.タッチすると駒を置くマークが出て,そのマークの黒を押せば黒の駒,白を押せば白の駒が生成されます.

作品はこちらです.

この後必要なのは,8×8のボードのサイズにすること.置けない場所に置いたときの扱いでしょうか.置けない場所のうち,すでに駒が置かれている場所には置けないというのはすぐにできると思います.問題は,なにもひっくり返すことができない場所に置いたときの処理でしょう.

ひっくり返すことができると「ひっくり返せ矢印」が自分のところに帰ってくるので,それを利用すればよいでしょう.作ってませんが,矢印を8方向に発車するときに自分のところに仮置きのマーク(X)を置いておいて.ひっくり返せ矢印がもどってきたら仮置きマークを削除する.なにもひっくり返せなければ仮置きマークは残っているので,仮置きマークをタッチすればその下の駒が消える,という感じにするのかな.さらに自動的に消すにはタイマーが必要だと思います.

ボードサイズを決めるには,これもビスケットのプログラミングでは常套手段の空白を示す絵を並べます.ボードはこの空白の絵の並びだけできまるので,たとえば8×8じゃない,正方形でもない並べ方にもできるということで,これはこれで違うルールのオセロになります.長方形の版のオセロとか,ときどき置けない場所があるオセロとか考えても面白いかもしれません.

ビスケットでゲームを作る面白さは,作ること自身の面白さももちろんありますが,作った後の改造がとても容易で可能性がいろいろとあるということでもありますね.

シェアする

  • このエントリーをはてなブックマークに追加

フォローする