接着剤の精進日記

競プロでの精進や研究に関係したことを書いていきます。

Codingameのローカル対戦環境をdockerでポンする(GUI編)

はじめに

前回記事でローカル対戦環境をdockerで構築できるようにしたが、CUIのみだったのでGUIでもできるようにした
GUIでの環境構築には以下を参考にさせていただきました
前回同様おばあちゃん回での構築
koyumeishi.hatenablog.com

前提

dockerの詳しい説明は省きます
docker-desktopなどをインストールしてdockerコマンドが使えるようになっていればできるはずです

環境構築

必要なリポジトリをcloneする

git clone https://github.com/EmulsionBondo/CodingameLocalBattle_GUI.git
cd CodingameLocalBattle_GUI

Codingameのリポジトリをcloneする

今回はCodingameの公式リポジトリをそのまま使用します
src/test/javaに必要なファイルが入っているのでsrc/main/javaに移動します

git clone https://github.com/CodinGame/FallChallenge2020.git
cp assembly.xml FallChallenge2020/
mv FallChallenge2020/src/test/java/Fall2020Main.java FallChallenge2020/src/main/java/
mv FallChallenge2020/src/test/java/BasicAgent.java FallChallenge2020/src/main/java/

Mavenでビルド

docker run -it --rm --name my-maven-project --platform linux/amd64 -v $PWD/FallChallenge2020/:/usr/src/mymaven -w /usr/src/mymaven maven:3.3-jdk-8 mvn clean install assembly:assembly -Ddescriptor=assembly.xml
mv FallChallenge2020/target/fall-2020-1.0-SNAPSHOT-jar-with-dependencies.jar ./

ローカル対戦環境のdockerを立てる

docker build -t local_battle --platform linux/amd64 ./
docker run -it -d --rm --name local_battle --platform linux/amd64 -p 8888:8888 -v $PWD:/work local_battle

ブラウザでローカル対戦のGUIを確認

ブラウザからhttp://localhost:8888/test.htmlにアクセス
実行に若干時間がかかるので、dockerを立ててすぐだとアクセスできないかもしれません

対戦させるAIの変更

src/main/java/Fall2020Main.java

//Add players
gameRunner.addAgent(BasicAgent.class, "Kotake");
gameRunner.addAgent(BasicAgent.class, "Koume");

部分を自分の書いたプログラムへのパスに変更
変更したあとは再度ビルドしてからdockerを再度立てるなりしてください

終わりに

GUIで試してみたらできた
IDEで十分な気もするけど気にしない