0
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?

Kotlin/JavaでBCDiceを動かす

Posted at

Kotlin/JavaでBCDiceを動かす

BCDiceとは

日本で最も使われている、TRPG用ダイスロール処理システムです。どどんとふ、ココフォリア、ユドナリウム、TRPGスタジオなど様々なオンセツールで使われています。
https://bcdice.org/ からの引用

Kotlin/JavaからBCDiceを用いる方法

1. APIサーバーを使用した方法

BCDiceには公式からbcdice-apiというWebサーバーが公開されています。

自分でホストすることもできますし、有志によって維持/管理されているサーバーもあります。

Kotlin/JavaからもこれらのAPIサーバーにアクセスすることで、BCDiceを用いることができます。

2. bcdice-ktを用いる

今回の本題はこのbcdice-ktを用いる方法です。
これは私が学生時代にDiscordBot用に作成したもので、APIサーバーに依存せずにBCDiceを用いることができます。

bcdice-kt

Gradle・Maven

GradleとMavenなどのパッケージマネージャーを用いることで使用できます。

Gradle

repositories {
    maven { url 'https://jitpack.io' }
}

dependencies {
    implementation 'com.github.simple-timer:bcdice-kt:VERSION'
}

Maven

<repositories>
    <repository>
        <id>jitpack.io</id>
        <url>https://jitpack.io</url>
    </repository>
</repositories>

<dependency>
    <groupId>com.github.simple-timer</groupId>
    <artifactId>bcdice-kt</artifactId>
    <version>VERSION</version>
</dependency>

実行時の下準備

bcdice-ktは内部にBCDice本体を内包していません。ですので、初回起動時はインターネット上からBCDiceをダウンロード/インストールする必要があります。すでにダウンロードされている場合、それ以降はインターネットに接続されている必要がありません。
インストールの確認後、setup()で初期化処理を行います。

Kotlin

val bcdice = BCDice()

//動作に必要なファイルがインストールされているかを確認
if (!bcdice.wasInstalled()) {
    //インストール
    bcdice.install()
}

//ゲームシステム読み込みなどのセットアップを行う
bcdice.setup()

Java

BCDice bcdice = new BCDice();

//動作に必要なファイルがインストールされているかを確認
if(!bcdice.wasInstalled()){
//インストール
    bcdice.install();
}

//ゲームシステム読み込みなどのセットアップを行う
bcdice.setup();

ダイスロール

ダイスロールを行うには、ゲームシステムを指定する必要があります。
ゲームシステムの一覧は、公式の対応ゲームシステム一覧をご覧ください。

Kotlin

/*
実行時の下準備をあらかじめ行う
 */


//ゲームシステムを取得
val gameSystem = bcdice.getGameSystem("Cthulhu7th")

val result = gameSystem.roll("CC+1")
println(result.text) //結果のテキスト

Java

/*
実行時の下準備をあらかじめ行う
 */


//ゲームシステムを取得
GameSystem gameSystem = bcdice.getGameSystem("Cthulhu7th");

GameSystem.DiceResult result = gameSystem.roll("CC+1");
System.out.println(result.getText()); //結果のテキスト

オリジナル表

オリジナル表にも対応しています。

Kotlin

/*
実行時の下準備をあらかじめ行う
 */


//テーブルのデータをテキストで作成
val text = """
    飲み物表
    1D6
    1:水
    2:緑茶
    3:麦茶
    4:コーラ
    5:オレンジジュース
    6:選ばれし者の知的飲料
""".trimIndent()

val result = bcdice.rollOriginalTable(text)
println(result.text) //結果のテキスト
/*
実行時の下準備をあらかじめ行う
 */


//テーブルのデータをTableDataとして作成
val tableData = OriginalTable.TableData(
    "飲み物表",
    "1D6", 
    mapOf(
        1 to "水",
        2 to "緑茶",
        3 to "麦茶",
        4 to "コーラ",
        5 to "オレンジジュース",
        6 to "選ばれし者の知的飲料"
    )
)

val result = bcdice.rollOriginalTable(tableData)
println(result.text) //結果のテキスト

Java

/*
実行時の下準備をあらかじめ行う
 */


//テーブルのデータをテキストで作成
String text = """
飲み物表
1D6
1:水
2:緑茶
3:麦茶
4:コーラ
5:オレンジジュース
6:選ばれし者の知的飲料
""";

Result result = bcdice.rollOriginalTable(text);
System.out.println(result.getText()); //結果のテキスト
/*
実行時の下準備をあらかじめ行う
 */


//テーブルのデータをTableDataとして作成
OriginalTable.TableData tableData = new OriginalTable.TableData(
    "飲み物表",
    "1D6",
    Map.of(
        1, "水",
        2, "緑茶",
        3, "麦茶",
        4, "コーラ",
        5, "オレンジジュース",
        6, "選ばれし者の知的飲料"
    )
);

//テーブルを作成
Result result = bcdice.rollOriginalTable(tableData);
System.out.println(result.getText()); //結果のテキスト
0
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
0
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?