忍者ブログ

ひつ(じのひよこが)プログラミングします。
お仕事や趣味で困ったこととか、何度も「あれ?どうだったかしら」と調べたりしたこととか、作ったものとか、こどものこととかを書きます
★前は週末定期更新でしたが今は不定期更新です

2024/03    02« 1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  »04

Java から BCDice を BCDice-API を使わず叩く

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

コメント

ただいまコメントを受けつけておりません。

Java から BCDice を BCDice-API を使わず叩く

JRuby でなんかなんとかした。コアな部分は以下。全体を見るならば https://github.com/Shunshun94/myJruby/tree/5a765cbbaf79364e4f7a7c7ad436b885ca240a82 からどうぞ。

public class App 
{
    public static void main( String[] args )
    {
    	ScriptEngineManager manager = new ScriptEngineManager();
    	ScriptEngine engine = manager.getEngineByName("jruby");
    	try {
			// 実行ディレクトリを MyJRuby/src/main/resources/BCDice/src にしている
			// ソースコードは https://github.com/ysakasin/bcdice-api/blob/master/lib/bcdice_wrap.rb からコピペしたのをいじいじ。
			engine.eval("$:.unshift File.dirname(__FILE__)");
			engine.eval("require \"./bcdiceCore\"\nrequire \"diceBot/DiceBot\"\nrequire \"diceBot/DiceBotLoader\"");
			engine.eval("DICEBOTS = ([DiceBot.new] + DiceBotLoader.collectDiceBots).\r\n" + 
					"    map { |diceBot| [diceBot.id, diceBot] }.\r\n" + 
					"    to_h.\r\n" + 
					"    freeze\r\n\r\n" +
			        "    SYSTEMS = DICEBOTS.keys.\r\n" + 
					"    sort.\r\n" + 
					"    freeze\r\n\r\n" +
					"    NAMES = DICEBOTS.\r\n" + 
					"    map { |gameType, diceBot| {system: diceBot.id, name: diceBot.name} }.\r\n" + 
					"    freeze\r\n" + 
					"");
			engine.eval("dicebot = DICEBOTS['SwordWorld2.0']");
			engine.eval("bcdice = BCDiceMaker.new.newBcDice");
			engine.eval("dicebot.bcdice = bcdice");
			engine.eval("puts dicebot.dice_command('aaaaa', 'SwordWorld2.0')");
			engine.eval("puts dicebot.dice_command('FT', 'SwordWorld2.0')");
			engine.eval("puts dicebot.dice_command('2d6', 'SwordWorld2.0')");
			engine.eval("puts dicebot.dice_command('K20', 'SwordWorld2.0')");
			engine.eval("puts dicebot.dice_command('k20', 'SwordWorld2.0')");
		} catch (ScriptException e) {
			e.printStackTrace();
		}
    }
}
PR

コメント

ただいまコメントを受けつけておりません。

ブログ内検索

P R