1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

JavaでBattleLineの対戦フレームワークを作ってみた

Posted at

BattleLineとは

2人対戦用のボードゲームです。
https://boardgamegeek.com/boardgame/760/battle-line
http://www.amazon.co.jp/GMT-%E3%83%90%E3%83%88%E3%83%AB%E3%83%A9%E3%82%A4%E3%83%B3/dp/B000VQOI10

アプリも出ていたりします。
https://itunes.apple.com/jp/app/reiner-knizias-battleline/id406165160?mt=8

経緯

実は少し前に作り始めたプログラムだったのですが、
放置していたGithubアカウントとQiitaアカウントを何とかしたいなということで今回アップロードしました。

やったこと

  • BattleLineというボードゲームをJavaに移植した
  • GUIで操作できるようにした
  • 通信対戦を実装した
  • AIを簡単に実装できるようにした

リポジトリ

https://github.com/oxsoft/battleline
とりあえず遊びたい人は、
https://github.com/oxsoft/battleline/releases

スクリーンショット

AI開発方法

README.mdにも書いていますが、ここにも書いておきます。

AIはcom.oxsoft.battleline.ai以下で開発します.
AIはクラスを作り,AriticialIntelligenceを継承して実装して下さい.
com.oxsoft.battleline.ai以下にAriticialIntelligenceを継承したクラスを実装すると,自動的にプログラムがAIとして認識します.
AriticialIntelligenceの各関数は,現在のゲームの状態をGameStateContainer型として受け取り,GameStateInput型のインスタンスinputの関数を呼び出すことにより,ゲームをプレイします.
必ず何らかのinputの関数を実行し,成功(trueが返ってくる)しなければなりません.成功していない場合は,そのゲームは失格となります.

  • action
  • カードを置く(input.putCard),パスをする(input.passTurn)などを行います.
  • パスはカードを置く場所がない,または手札が全て戦術カードの時のみ行うことができます.
  • draw
  • 部隊カードを引く(input.drawTroop),戦術カードを引く(input.drawTactics),カードを引かずにターンを終了する(input.endTurnWithoutDraw)などを行います.
  • どちらの山札も無い時のみ,カードを引かずにターンを終了することができます.
  • returnCard
  • 偵察を使い,カードを引いた時に,カードを山札に戻します(input.returnCards).
  • resolveFlags(オプショナル)
  • フラッグを取るこの関数が,actionの前後で呼ばれます.
  • 何も実装しないと,全てのフラッグについて,取ることができれば取ります.
  • win(オプショナル)
  • ゲームに勝利したときに呼ばれます.(機械学習用)
  • lose(オプショナル)
  • ゲームに敗北したときに呼ばれます.(機械学習用)

TheFool.javaがサンプルとなっていますのでぜひ一度ご覧ください.

さいごに

誰か強いAIを開発してください。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?