AndroidStudioでリバーシできた

スポンサーリンク
スポンサーリンク

スポンサーリンク

基本はできた

懸念していた盤端にかかった時のエラーも解消され基本的な部分は完成したと思う。

  • 動いてるとこ

  • apkファイル
https://apk.dalomo.net/Reversi.apk
  • ソース
Androidアプリ リバーシのソース (activity_reversi.xml)
<GridLayout xmlns:android="" xmlns:app="" android:id="@+id/gridLayout1" android:layout_width="match_parent" android:layo...
Androidアプリ リバーシのソース (Reversi.java)
package net.dalomo.reversi;import android.content.Context;import android.support.v7.app.AppCompatActivity;import android...
Androidアプリ リバーシのソース (Board.java)
package net.dalomo.reversi;import android.content.Context;import android.view.View;import android.widget.TextView;import...

エラーの原因

デバッグでステップインして調べていったら、やっぱり盤外のTextViewを取得しようとして落ちてた。ということで、取得できなかった時の処理を追加してあげる。

findViewWithTagで取得できない時の戻り値

if(tv == null) return;

はnullです!8方向全ての関数に上記コードを追加した。そしたら無事、端の行列でもエラーは発生せず、ちゃんと動いてくれました。

これが有名な「ぬるぽ」のnullかー。ガッ!ガッ!

機能追加したい

できたはできたのだけど、これで遊ぶにはちょっと物足りなさが残る。こんな機能がついてたらいいな、というのが結構あるので書いてみる。大体のリバーシには付いてるんだろうけどね。

着手の可否

一人で二役のゲームをしているので、手番がこんがらがって誤タップしたりする。なので着手できない所をタップした時、「そこに置けません」を出したい。もしくは、「現状で石が置ける場所」を何らかの方法で表現したい。

手番の表示

上記に関連してるけど、あれ?今どっちだっけ?ってよく考える。なので、現在の手番を表示させておきたい。PlayerTurnを変数で設定してたので、簡単なはず。

現在の石数の表示

今どっちが勝ってんだかが全然わからないのでこれも表示させたい。あとゲーム終わった時に手作業で石数えるのがめんどい。終わったら整地とかできるとかっこよさそう。作り方わからんけど。

勝利判定

そもそもどっちが勝ったか判定すりゃいいんだよな。ただ、石が置けなくなったら、なのか、盤面が全部埋まったら、なのか置いてある石が全部片方の色になったら、なのか。その判定が難しそう。

パス機能

片方は置けるけど、片方は置けないって状況は終盤結構発生する。だけど今は、そこで物理的にゲームが終わってしまう。本家ルールだとパスはいくらでもしていいそうなので、パスが実装できればいいなと。上記の勝利判定と絡みそうだからやっぱり追加するの難しそうだな。

時間経過

囲碁・将棋・チェスってチェスクロック方式の対局時計があるので、それも表現したい。なんかかっこいいよね。あ、だと設定画面とかも作らなきゃなのかな。そういえば文字の逆立ちってできるのかな。隣同士で一つの画面見ながらいちゃいちゃするのもいいけど、やっぱ向かい合ってできるようにするのがいいよね。

COM戦を作りたい

俺には無理だ…って思ってたけど、例えば石が置けるとこが見つかったら置く。みたいな単純なCOMだったら俺にも作れないかな。ちょっと欲が出てきた。できるかな。どうだろ。書くだけはタダだし、書いとこ!

コード改善

8方向への探査の所、やっぱりもうちょっとなんとかなんないかなと思う。とりあえず完成させることを優先にしたので、似たような処理がこんもりだし、あそこの部分だけ長いので見辛いし。なんか良い考え方見つかんないかなー。

わくわく

楽しみ

参考

View  |  Android Developers

コメント

タイトルとURLをコピーしました