[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
ただいまコメントを受けつけておりません。
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();
}
}
}
ただいまコメントを受けつけておりません。