2014年 04月02日(Wed) [長年日記]
_ [WS][TCG][艦これ]趣味100%で作ったデッキ
WS界隈ってデッキ作成ツール無いのか? 1つだけ見つけたけどまだ艦これ対応してないっぽいし。仕方ないので手書き&略称でデッキ書くか。
LV0:16枚 4 電 3 雷 3 皐月 4 霰 2 白露 LV1:10枚 4 熊野 4 夕張 2 足柄 LV2:8枚 4 熊野改 2 鳳翔 2 扶桑 LV3:8枚 4 榛名 4 長門 CX:8枚 4 ビッグ7(本 +1000/+1) 4 夜戦(ソウル2 +2000/+1 ドロー)
電は嫁だし4枚積むだろ、榛名も入れたいし熊野も入れたい。って感じで作ったデッキ。まあまあ回る。
やってみてわかったこと。
- 電→熊野→熊野改のラインがデッキの安定性に大いに貢献する。
- 熊野改の採用のため、集中使いづらい。LV2前で一周すると死ぬ。
- 夕張いらない?
- 榛名強い。長門微妙。
- 青のLV0に不満。
結論。緑抜こう(電以外)。
今は大和&武蔵ラインで構築中。あと熊野抜いた構築が考えづらいくらい熊野使いやすいんだが。
2014年 04月07日(Mon) [長年日記]
_ [ボードゲーム]ミスボド名古屋
行ってきました。
プレイしたゲーム。
- 王と枢機卿
- 初プレイ。ルールが単純でそれでいて結構悩む部分も多い良ゲームという印象。ただ運要素は少し強めかも。枢機卿駒を固めてまくり勝ちしました。
- お邪魔者2
- 昔は1の方が好きで、2の方はあまり好きじゃなかったんだけど、今回遊んでみると2もありかなと思うようになってた。でも気のせいかもしれない。
- シャドウハンターもどき
- シャドハンを少し複雑化した感じの。バランスは悪くない。テストプレイの段階だから仕方ないかもしれないけど、視認性が悪いのがマイナス。第三勢力でギリギリ勝てそうだったんだけど、上手くいかなかった。
- 彼女のカレラ
- これもテストプレイ。製品版は麻宮騎亜氏の描きおろしイラストが載るらしい。must not followなトリックテイキングゲーム(?) ずっとガソリン貯めこむプレイでリソース差をつけ、最後の最後で勝利をもぎ取る。おかげで石油王とか言われた。
- ビブリオス
- 本家ビブリオスをプレイするのは久しぶり。3人と4人で1回づつやったんだけど、どっちも勝利。ビブリオスは基本得意でほとんど負けた記憶がない。
- えんかい
- 協力して十二支を並べるゲーム。9人でプレイしたけど、ちょっとゆるめのルール適用でなんとか成功しましたが、もう少し厳密に少人数でプレイしてみたいなと思いました。っていうかこれ超欲しい。
- 髑髏と薔薇
- 定番ゲーム。2ゲームやってどっちも勝てそうだったけど固執しすぎて負ける展開。我慢が足りない。
やろうと思って持っていったテレストとアリストメイズできなかったのが地味に悔しいw 特にテレストはタイミング合わず別の卓で遊ばれてたからなー。ま、持ってったゲームいくつか遊ばれてたみたいだから良いんだけど。
2014年 04月08日(Tue) [長年日記]
_ [TCG][ruby][プログラム]ブシロードTCG Scraper
以前似たようなプログラムを日記に載せてたけど、古いのでメンテを兼ねて使いやすくしてみた。
プログラムはこんな感じ
- bushiroad-tcg-scraper.rb
#coding: utf-8 require 'thor' require 'mechanize' require 'watir-webdriver' require 'yaml' # #= ブシロード製TCGのカードリストをスクレイピングしてYAMLデータを出力するツール # #Authors:: ねくろん(@necron) #Version:: 1.0 2014-04-07 necron #Copyright:: Copyright (C) necron-web.com, 2014. All rights reserved. # module BushiroadTCGScraper class CLI < Thor # #=== エキスパンションのリストを取得する # #入力:: config.yml # proxy: [proxy, port] # uri: カードリストのURI (例: http://ws-tcg.com/jsp/cardlist) # #出力:: expansion_list.yml # text: エキスパンション名 # onclick: (同名エキスパンション対策用データ) # desc "get_expansion_list", "エキスパンションのリストを取得する" def get_expansion_list config = YAML.load_file("config.yml") list = [] agent = Mechanize.new agent.set_proxy(*config["proxy"]) if config["proxy"] puts "connecting #{config["uri"]} ..." page = agent.get(config["uri"]) (page/"div[@id='expansionList'] a").to_a.each do |link| puts text = link.inner_text.strip list << {"text" => text, "onclick" => link["onclick"]} end File.open("expansion_list.yml", "w") do |file| file << YAML.dump(list) end end # #=== エクスパンションリストからカードのリンクリストを取得する # #入力:: config.yml # expansion_list.yml # #出力:: card_link_list.yml # エキスパンション名: [個々のカードのURI,...] # desc "get_card_link_list", "エクスパンションリストからカードのリンクリストを取得する" def get_card_link_list config = YAML.load_file("config.yml") expansion_list = YAML.load_file("expansion_list.yml") puts "connecting #{config["uri"]} ..." browser = Watir::Browser.new browser.goto config["uri"] list = {} title = nil begin expansion_list.each do |expansion| title = expansion["text"] link = nil browser.links.each do |i| link = i if i.onclick == "#{expansion["onclick"]}" end link.click array = [] n = 0 begin sleep 1 flag = false browser.links.each do |i| if i.href =~ /cardno/ array << i.href puts i.href end if i.text == '≫' flag = true end end browser.link(:text, '≫').click if flag end while flag list[title] = array end ensure browser.close File.open("card_link_list.yml", 'w') do |file| file << YAML.dump(list) end end end # #=== カードのリンクリストから個々のカード情報を取得する # #入力:: config.yml # card_link_list.yml # #出力:: card_list.yml # desc "get_card", "カードのリンクリストから個々のカード情報を取得する" def get_card config = YAML.load_file("config.yml") card_link_list = YAML.load_file("card_link_list.yml") agent = Mechanize.new agent.set_proxy(*config["proxy"]) if config["proxy"] output = {} card_link_list.each do |expansion, link_list| list = [] link_list.each do |card_uri| puts "connecting #{card_uri} ..." page = agent.get card_uri array = (page/'table.status td').to_a.inject([]) do |array, e| array << e.inner_html end card = {} if config["format"] config["format"].each do |i| card[i["key"]] = if i["regexp"].to_s.empty? array[i["line"]] else Regexp.new(i["regexp"]).match(array[i["line"]]).to_a[1] end end else card["debug"] = array end list << card end output[expansion] = list end File.open("card_list.yml", 'w') do |file| file << YAML.dump(output) end end end end module Watir class Anchor attributes(:string => [:'onclick']) end end BushiroadTCGScraper::CLI.start(ARGV)
使い方。
まずrubyがインストールされてることが大前提。あとFirefoxブラウザが必要。 他のブラウザ使う場合は各自でプログラムを修正しよう。 一応 ruby2.0.0-p195 で動作確認している。
あと、MechanizeとWatirとThorが必要なので、
gem install Mechanize gem install Watir gem install Thor
とかしておこう。
1. config.ymlの用意 configファイルに
--- uri: http://ws-tcg.com/jsp/cardlist
のようにブシロードのカードリストがあるURIを記載する。proxyが必要な人は下記のようにIPとportを指定可能。必要なければ書く必要はない。
proxy: - 128.0.0.1 - 8080
2. get_expansion_listを実行
ruby ./bushiroad-tcg-scraper.rb get_expansion_list
とコマンドラインを打ち込んで実行。するとexpansion_list.ymlという中間ファイルが出力される。
中身はこんな感じ
--- - text: D.C. D.C.II onclick: showExpansionDetail('1',''); return false; - text: リトルバスターズ! onclick: showExpansionDetail('2',''); return false; - text: ゼロの使い魔 onclick: showExpansionDetail('3',''); return false; - text: なのはStrikerS onclick: showExpansionDetail('6',''); return false; (以下略)
textがエキスパンションの名前。onclickは同名エキスパンションを区別するためのメタ情報。
3. get_card_link_listを実行
ruby ./bushiroad-tcg-scraper.rb get_card_link_list
とコマンドラインを打ち込んで実行。すると勝手にFirefoxブラウザが起動して、エキスパンション毎に個々のカードのリンクリスト(card_link_list.yml)を作成してくれる。
……のだけど、相当時間かかるので注意。expansion_list.ymlの中身を修正して、欲しいエキスパンションだけとかにした方が良いかも。
例えばexpansion_list.ymlの中身を修正して以下のようにしたら、
--- - text: なのはStrikerS onclick: showExpansionDetail('6',''); return false;
結果はこうなる。
--- なのはStrikerS: - http://ws-tcg.com/jsp/cardlist?cardno=NS/W04-001 - http://ws-tcg.com/jsp/cardlist?cardno=NS/W04-001S - http://ws-tcg.com/jsp/cardlist?cardno=NS/W04-002 - http://ws-tcg.com/jsp/cardlist?cardno=NS/W04-002S - http://ws-tcg.com/jsp/cardlist?cardno=NS/W04-003 (以下略)
4.get_cardを実行して取得されるカードのデータを確認する。
カードのリンクリストができたら後はget_cardを実行して終了。
……だったら良いんだけど、そう簡単ではない。このツールはブシロードのTCG汎用として作っているので、取得したいカードゲーム毎にそれに合わせたパラメータファイルを作ってやらないといけない。
パラメータはconfig.ymlにformatというキーで指定するんだけど、config.ymlにformatキーが記述されていない場合、Webページに表示されているデータをそのまま取ってくるようになっている。
例えば、card_link_list.ymlを編集して
--- なのはStrikerS: - http://ws-tcg.com/jsp/cardlist?cardno=NS/W04-001
以下のように実行してみると、
ruby ./bushiroad-tcg-scraper.rb get_card
結果のcard_list.ymlファイルの中身はこうなる。
---
なのはStrikerS: - debug: - <img src="../cardlist/cardimages/ns_w04_001.gif" alt="カード"><br><a href="javascript:void(0);" onclick="showQuestion('NS/W04-001'); return false;">≫ このカードに関するQ&A</a> - "\r\nキャロ・ル・ルシエ<br><span class=\"kana\">キャロルルシエ</span>\r\n" - NS/W04-001 - RR - なのはStrikerS - "\r\n<img src=\"/cardlist/partimages/w.gif\">" - キャラ - <img src="../cardlist/partimages/yellow.gif"> - '1' - '1' - '5000' - <img src="../cardlist/partimages/soul.gif"> - <img src="../cardlist/partimages/soul.gif"> - "\r\n魔法 ・ 竜\r\n" - 【自】 このカードがアタックした時、あなたは自分の舞台にいる「エリオ・モンディアル」を1枚選び、手札に戻す。<br>【自】 アンコール [手札のキャラを1枚控え室に置く] (このカードが舞台から控え室に置かれた時、あなたはコストを払ってよい。そうしたら、このカードがいた枠に【レスト】して置く)<br> - 若き槍騎士に駆け抜ける力を!<br>
5. config.ymlにformatキーを追加する。 上の結果を見ながらformatキーを作成する。WSの場合はこんな感じ(もちろんUTF-8で書くように)。
format: - key: カード画像 line: 0 regexp: <img src="../cardlist/cardimages/(.+\.gif)" - key: カード名 line: 1 regexp: \s*(.+)<br><span class="kana">.*</span> - key: カード名(カナ) line: 1 regexp: .+<br><span class="kana">(.*)</span> - key: カード番号 line: 2 regexp: - key: レアリティ line: 3 regexp: - key: エクスパンション line: 4 regexp: - key: サイド line: 5 regexp: \s*(.+) - key: 種類 line: 6 regexp: - key: 色 line: 7 regexp: - key: レベル line: 8 regexp: - key: コスト line: 9 regexp: - key: パワー line: 10 regexp: - key: ソウル line: 11 regexp: - key: トリガー line: 12 regexp: - key: 特徴 line: 13 regexp: \s*(.+)\s\s - key: テキスト line: 14 regexp: - key: フレーバー line: 15 regexp:
regexpに正規表現を記述し、取り出したい部分を()で囲む。一行全部取り出す場合はregexpは何も書かなくて構わない。
6. 再度get_cardでカードデータを取得する。 実際に上の記述をconfig.ymlに追加して、get_cardを実行すると、
--- なのはStrikerS: - カード画像: ns_w04_001.gif カード名: キャロ・ル・ルシエ カード名(カナ): キャロルルシエ カード番号: NS/W04-001 レアリティ: RR エクスパンション: なのはStrikerS サイド: <img src="/cardlist/partimages/w.gif"> 種類: キャラ 色: <img src="../cardlist/partimages/yellow.gif"> レベル: '1' コスト: '1' パワー: '5000' ソウル: <img src="../cardlist/partimages/soul.gif"> トリガー: <img src="../cardlist/partimages/soul.gif"> 特徴: 魔法 ・ 竜 テキスト: 【自】 このカードがアタックした時、あなたは自分の舞台にいる「エリオ・モンディアル」を1枚選び、手札に戻す。<br>【自】 アンコール [手札のキャラを1枚控え室に置く] (このカードが舞台から控え室に置かれた時、あなたはコストを払ってよい。そうしたら、このカードがいた枠に【レスト】して置く)<br> フレーバー: 若き槍騎士に駆け抜ける力を!<br>
こんな内容のYAMLが出力される。後はエクセルに変換するなり、Javascriptで使うなりご自由に。
2014年 04月09日(Wed) [長年日記]
_ [艦これ]5-5(今月分)クリア
クリアしたのは月曜日だったけど。
わずか7回の出撃でクリア。とても運が良かった。
最後は大和さんがトドメを指してくれて、史実では沈没した日だったのですが、大活躍してくれました。
勲章4つ目。集めると何があるんですかね?
_ [TCG][WS][艦これ]大和&武蔵デッキ
■レベル0 キャラ16枚 《黄色 キャラ》 陽炎型駆逐艦7番艦 初風×4枚 陽炎型駆逐艦18番艦 舞風×2枚 《緑色 キャラ》 ドジっ娘 電×4枚 《青色 キャラ》 白露型駆逐艦1番艦 白露改×4枚 朝潮型駆逐艦4番艦 荒潮×2枚 ■レベル1 キャラ9枚 イベント1枚 計10 《青色 キャラ》 最上型重巡3番艦 鈴谷×3枚 最上型重巡4番艦 熊野×4枚 妙高型重巡3番艦 足柄×2枚 《黄色 イベント》 らしんばん×1枚 ■レベル2 キャラ8枚 《黄色 キャラ》 利根型重巡2番艦 筑摩×1枚 《青色 キャラ》 最上型航空巡洋艦3番艦 鈴谷改×3枚 最上型航空巡洋艦4番艦 熊野改×4枚 ■レベル3 キャラ8枚 《黄色 キャラ》 大和型戦艦1番艦 大和×4枚 大和型戦艦2番艦 武蔵×4枚 ■クライマックス 8枚 《黄色》 砲雷撃戦、用意!×3枚 《青色》 鈴谷にお任せー!×3枚 さぁ、素敵なパーティしましょ!×2枚
長門あんまり強くないから大和に変えたいなぁ→ついでに榛名も武蔵にしてみるか。
という感じで赤と緑抜いて黄色入れたらこんな感じに。今はさらに赤足して榛名入れた形を試行中。
鈴熊が共存するか? ってのが裏テーマだったんですが、結構上手く回ってる気がする。早出しは強いけど対処された時のダメージが大きいので、メインに考えない方が良さそう。
2014年 04月11日(Fri) [長年日記]
_ [ボードゲーム]にゃんごろべりー行ってきた
4月から大須に移転してきた同人誌&同人グッズショップ。どうやらボードゲームで遊べるスペースがあるらしく少し気になってはいたのですが。
そんなある日twitterでT氏が偶然にゃんごろべりーについてどんなところなんだろう?といった類の事を呟いてたので、じゃあ代わりに偵察してきましょうか? と昨日覗きに行ってきました。
行ってみるとちょうどダンガンロンパ人狼のインストをやっていたので、場所代300円を払って混ざる事に。
最初は5人だったのが、最後には9人ぐらい集まって遊んでました。私が帰った後に7Wondersも遊んでたみたい。
お店としてはワンフロアの壁際に同人グッズなどの商品が陳列されていて、フロアの真ん中4人がけのテーブルが2つあって、そこがゲームフロアとなっています。特に仕切りもないためお客さんに見られ放題ですが。
料金は4/10現在で1時間300円/3時間800円/5時間1300円/終日2000円 延長料金は30分150円。
まあ私の場合イエサブあるのでわざわざ有料スペース借りる事もあまり無さそうですが、お店に置いてあるボードゲームで遊べる点と定期的にボドゲの初心者体験会を開いているっぽいあたりが利点かな?
あとやりたいゲームを予めtwitterで公式アカに投げておくと、公式アカがアナウンスしてくれるのでプレーヤー集めやすいかも?
2014年 04月15日(Tue) [長年日記]
_ [TCG][Chaos][プログラム]Chaosデッキ構築支援ツール(超α版)
先日知らない人からメールが来た。
内容は昔作ったChaosTCGのデッキ構築支援ツールのPASSを教えて欲しいとの事。
残念ながら5年も前のツールのPASSなんて覚えてるわけもなく(^^;
しかも古いツールだからデータベースも古いし……。
Chaosは最近遊ぶ相手もいないので、ツール完成させる程の情熱は無く。とは言え折角メールまでくれたので、データベースくらいは最新にアップデートしておこうかな、と。
既に使ってるPCが違うので環境から整え直さないといけなかったりしましたが、とりあえず動いたのでアップしておきます。
折角なのでソース付き。
あ、もちろん超α版なので、データベース更新機能とかインポート、エクスポート機能は未実装ですよ。
2014年 04月16日(Wed) [長年日記]
_ [艦これ][WS][TCG]デッキ名「鈴熊は正義」
実際はデッキとして見れば正義なのはくまのんであって。さすがに鈴谷の早出しは抜きました。あと電は超便利&俺の嫁。
■レベル0 キャラ17枚 《黄色 キャラ》 陽炎型駆逐艦7番艦 初風×4枚 《緑色 キャラ》 ドジっ娘 電×4枚 《赤色 キャラ》 睦月型駆逐艦5番艦 皐月×4枚 吹雪型駆逐艦9番艦 磯波×1枚 《青色 キャラ》 白露型駆逐艦1番艦 白露改×2枚 朝潮型駆逐艦1番艦 朝潮×2枚 ■レベル1 キャラ8枚 イベント2枚 計10 《黄色 キャラ》 奇跡の駆逐艦 雪風×2枚 《青色 キャラ》 最上型重巡4番艦 熊野×4枚 妙高型重巡3番艦 足柄×2枚 《黄色 イベント》 らしんばん×2枚 ■レベル2 キャラ7枚 《青色 キャラ》 最上型航空巡洋艦3番艦 鈴谷改×3枚 最上型航空巡洋艦4番艦 熊野改×4枚 ■レベル3 キャラ8枚 《黄色 キャラ》 大和型戦艦2番艦 武蔵×4枚 《赤色 キャラ》 金剛型戦艦3番艦 榛名×4枚 ■クライマックス 8枚 《青色》 鈴谷にお任せー!×4枚 さぁ、素敵なパーティしましょ!×4枚
艦これはCIP回復が強い気がしないんです。少なくとも回復メタがもう少し減らないと。
ってわけで大和抜いて榛名入れてみた。うん、もちろん上の文は言い訳で単に榛名入れたくて仕方がないってだけなんだけど。榛名可愛いよ榛名。
LV0は電でくまのんをサーチ。クロックには熊野改を優先的に。熊野改握ってる必要は皆無なので。あとCXシナジーが皆無なのでCXを手札に握る必要もありません。クロックに置いても問題無いです。
LV1になったらくまのん並べます。3体並べてもOK。くまのんが盤面維持している間にLV3を手札に溜め込みます。他のデッキと違ってLV2を抱え込む必要が無いので、多少手札に余裕を持ちながらプレイできる筈です。
ただくまのんの能力でLV1帯はすごい勢いで駆け抜けますけどね。
LV2になったら熊野改の登場です。コイツはソウル2なので今まで失っていたクロックのアドバンテージをここで取り返します。熊野改は手札に残ってしまったCXを処理できるのも強み。
LV3になったら榛名と武蔵の能力で一気に削り切りましょう。手札に熊野があれば、熊野改をコスト1で引っ張ってこれるので、ソウル2を3面並べるのも結構容易です。
電→熊野→熊野改の流れによってデッキの安定性は抜群です。LV2からソウル2を並べられるので、LV2~LV3までずっと押していける点は強みです。
一方、LV1帯でのクロックのディスアドバンテージは相当辛いです。ソウル特化型は苦手。またサイズもあまり重要視されていないので、サイズアドバンテージで押してくる相手にはしっかりと軸をずらして応対する事を求められます。
これはこれでほぼ完成形かなって気がしてる。これ以上いじるならコンセプトから練り直すべきかと。まあデッキは生き物なので周りの環境によって変化することもあるけど。