hubotと戯れてみる #5 slackとhubotでオセロゲーム。華麗なるエンディング?

hubotと戯れてみる #5 slackとhubotでオセロゲーム。華麗なるエンディング?

ソフトバンク・au・ドコモの方は、公式のオンラインショップを利用すれば頭金不要で通常のショップよりお得に購入できます。

slack上でhubotを利用してオセロゲームを作っています。今回はゲーム終了判定とエンディングを実装します。前回は石をひっくり返す処理を実装しました。

slackとhubotでオセロゲーム編

#1 slackと連携するhubotを3分でインストールする。(動画付き)
#2 slackとhubotを利用してオセロゲームを作ってみる。
#3 slackとhubotでオセロゲーム。とりあえず石を置いてみる。
#4 slackとhubotでオセロゲーム。石をひっくり返す。
#5 slackとhubotでオセロゲーム。華麗なるエンディング? ← ← 今ここ

さて、slackとhubotでオセロゲーム編も今回で最後となります。気合を入れて実装していきます。

処理の流れ

処理の流れはこんな感じ、前回の流れに追加します。

  1. ボードの状態とターンの状態を取得します。 ← 前回作りました。
  2. メッセージから指示された石を置く座標を抜き取ります。 ← 前回作りました。
  3. 石が置ける場所か判定する。 ← 前回作りました。
  4. ひっくり返す石を判定する。 ← 前回作りました。
  5. 盤上に石を置きます。 ← 前回作ったものを修正
  6. ターンをチェンジします。 ← 前回作りました。
  7. 盤上の情報とターン情報を保存します。 ← 前回作りました。
  8. ゲーム終了判定を行う。終了ならエンディング ← 新たに追加
  9. メッセージを返します。 ← 前回作りました。

では、実装します。

8.ゲーム終了判定を行う。終了ならエンディング [追加]

[javascript] if checkGameEnd(bordArray)
msg.send outputBord(bordArray)
msg.send outputEnding(bordArray)
return
[/javascript]

checkGameEnd関数は簡単です。bordArrayを検索して□がないか調べるだけです。

[javascript] checkGameEnd = (ba) ->
isEnd = true
for x in [0..7] for y in [0..7] if ba[x][y] == “□”
isEnd = false
break
[/javascript]

outputEnding関数は、エンディングメッセージを流す関数です。

[javascript] outputEnding = (ba) ->
retmsg = “ゲームが終了しました。お疲れ様でした。”
[/javascript]

石の数を数えたり、どちらが勝者か返したりするのも良いかもしれません。ソースには加えていませんが、私の環境ではランダムで画像を返すように実装しています。

以上で、slackとhubotでオセロゲームの連載は終了です。次は、どのゲームを移植しようかなっと!!

本日作成したファイルは、こちらに置いてあります。

最後に

えっと。。。。。。。実はこの記事を書いている段階で、機能を1つ実装し忘れた事に気が付きました。それは、パスをする機能です。いずれどこなのタイミングで号外として実装しようかなと思います。

ソフトバンク・au・ドコモの方は、公式のオンラインショップを利用すれば頭金不要で通常のショップよりお得に購入できます。

【週刊bitWave】(メルマガ)始めました!

登録はこちらからメールアドレスを入力してお申込みください。

ご登録いただいたメールアドレスは 【週刊bitWave】の更新情報の配信にのみ使用します。

個人情報の取扱いに関しては、「プライバシーポリシー」をご確認ください。解除はいつでもこちらから行うことが可能です。

あなたにおすすめ