| 風船手紙のような思想を好む私なので、時間に縛られずにゆったりとした雰囲気のもとで、ゆるく繋がっていたいものです。 そこで今、風船手紙の思想を汲んだリバーシアプリを開発中です。
まだ途中ですが、その中枢であるリバーシロジックが完成しました。 で、仕組み上API公開が可能なので公開することにします。 例のごとくXMLですw
APIのURLは、http://www.daisukeuchida.com/reversi/reversiXml.phpです。 パラメータを付加しないでリクエストすると以下のようなXMLを返します。(実際は改行無しです)
<result> <nowPlay>2</nowPlay> <select>0</select> <black>2</black> <write>2</write> <stage>0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,9,0,0,0,0, 0,0,9,1,2,0,0,0, 0,0,0,2,1,9,0,0, 0,0,0,0,9,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0</stage> </result> |
| result | 結果 | | nowPlay | 石を置く側[1:白 | 2:黒] | | select | 直前に置かれた石の位置[0 - 63] | | black | 黒い石の数 | | write | 白い石の数 | | stage | 盤の状態(カンマ区切り)[1:白 | 2:黒 | 0:未設置 | 9:設置可能] |
スタートは、「黒の番」ということになります。 図にするとこんな感じです。
 stageの値をカンマ区切りで配列にして8つずつ折り返すと、リバーシの盤になります。
で、今度は石を置くリクエストをします。パラメータは以下の通りです。
| play | 石を置いた側[1:白 | 2:黒] | | sel | 石を置いた位置[0 - 63] | | presel | 直前に石を置かれた位置(任意) | | stage | 現時点の盤の状態(カンマ区切り)[1:白 | 2:黒 | 0:未設置 | 9:設置可能(0でも可)] |
例えば上記のスタート時点から「黒が、上から3行目の4列目に石を置く」場合のリクエストはこんな感じです。(実際は改行無しです)
| play | 2 |
| sel | 19 |
| presel | 0 |
| stage | 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,9,0,0,0,0, 0,0,9,1,2,0,0,0, 0,0,0,2,1,9,0,0, 0,0,0,0,9,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0 |
成功すると以下のようなXMLを返します。(実際は改行無しです)
<result> <nowPlay>1</nowPlay> <select>19</select> <black>4</black> <write>1</write> <stage>0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,9,2,9,0,0,0, 0,0,0,2,2,0,0,0, 0,0,9,2,1,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0</stage> </result> |
図にするとこんな感じです。
 これを最後まで繰り返して行くことによってゲームが進行します。
因みに、相手が石を置く事ができない場合、相手の番はパスされて再び石を置ける状態として返されます。 また、リクエストが処理できない状態であった場合は、元の情報を返します。
reversiAPIを使ったサンプルも公開しておきますので、参考になればっ《←ソースきったない》 しかしこのAPI化によって画面表示部分が174行で済みました。しかも任意の表現を自在に加える事ができます。 つまり余計な事に悩む必要が無いという。
ちなみにサンプルはAjaxの形式をとっています。何故ならiPhoneでもAndroidでも動くからです。 さ、こちらはゆるいリバーシアプリの続きをつくることにします。 |
| | ここからコメント |
| | | |    | | | |
| | |
|