Java で人狼のキャラクターモデルを定義する
最近は Android アプリのリリースを目標として、コードを書いている。
Android アプリ開発で必要となる Java の習熟度が高くなくて、入門書片手に、な状況だ。「スッキリわかるJava入門」という本がとても分かりやすくて、それでの継承を扱った章を読んでから、一気に世界が開けた感がある。コード中に出てくることに慣れない implements
や interface
といった単語ももう大丈夫だ。
どんな Android アプリを作るか
Java に入門する以前考えていたものと、現在つくりたいと思っているものは違っていて、今は 「人狼のゲームマスターを務めてくれるアプリ」を開発しようと思っている。
なぜ人狼ゲームアプリかと言うと理由はいくつかある。
- スッキリわかるJava入門に掲載されている例は、ゲームを題材にしたものばかりでそういうものの振る舞いを実装することに楽しさを感じる
- 基本的な役職のみ登場させれば難しくなさそう
- 自分たちで遊べる
- 友達に紹介しやすい
下の2つがけっこう大きな理由で、身近な人に遊んでもらってフィードバックが得られれば嬉しみがある。でも、人狼はめちゃくちゃ好きってわけでもないです。
キャラクターモデル
書いた。バッと書いたので、ミスありそう。
誤りや、こうした方がいいよ という点を指摘してもらえるとすごく助かります。
// lynch: 人間が処刑 // maul: 人狼がやる public abstract class Character { private int lynchCount = 0; private int maulCount = 0; public abstract boolean isWerewolf(); public int getLynchCount() { return this.lynchCount; } public void setLynchCount(int lynchCount) { this.lynchCount = lynchCount; } public int getMaulCount() { return this.maulCount; } public void setMaulCount(int maulCount) { this.maulCount = maulCount; } public void pollLynch(Character chara) { chara.setLynchCount(chara.getLynchCount++;) } } // 村人 public class Villager extends Character { private boolean isWerewolf = false; @Override public boolean isWerewolf() { return this.isWerewolf; } } // 預言者 public class Seer extends Character { private boolean isWerewolf = false; @Override public boolean isWerewolf() { return this.isWerewolf; } private boolean see(Character chara) { return chara.isWerewolf(); } } // 人狼 public class Werewolf extends Character { private boolean isWerewolf = true; @Override public boolean isWerewolf() { return this.isWerewolf; } // 人狼が複数人の場合を考慮して、kill ではなくあくまで投票とする private void pollMaul(Character chara) { chara.setMaulCount(chara.getMaulCount++;) } }
前のアプリ
人狼アプリを作ろうと思う前は、「モンスターストライクの全国マルチを中継する掲示板アプリ」を開発しようと考えていた。
知らない人に説明すると、モンスターストライクっていうスマホゲーは、クエストの URL を送信することで、離れた場所にいる人ともマルチプレイができるんだけど、それは(LINE に登録されている)身内としかできない仕様になっている。それをモンスト掲示板アプリは、全国の強いプレイヤー・自分に都合の良いプレイヤーと協力するようにするものだ。