Edited at

JavaScriptでトランプ遊び part 1

ある日、男はUnicodePlaying Cardsというブロックを見つける

"ABCD".split("").forEach((u)=>{console.log("123456789ABDE".split("").map((l)=>String.fromCodePoint(`0x1F0${u}${l}`)).join(""))})

※↑ブラウザ(chromeで確認済み)のConsoleでやってみてください。

※ダイヤとハートも黒く表示されてしまうのは、一旦納得してください。

、、、というわけで、Unicodeのトランプと、ブラウザのJavaScript Consoleで遊べる遊びを考えていきたいと思います。目標は、ネットワークに繋がっていないPCでも、ブラウザがあれば遊べるようになることです。


遊んでみる

まず、さっきのスクリプトを実行したあなたの「表示小さすぎるな!?これトランプなの!?」という心の声が私に聞こえてきましたので、先になるべく大きく表示する関数 clog を先に作っておきます。また、カードも一通り変数 cards に入れておきましょう。ここで、ジョーカーも2つ加えておきます。

const clog = (t)=>{console.log("%c"+t, "font-size:xx-large")};

let cards={};
"ABCD".split("").forEach((u,i)=>{"123456789ABDE".split("").forEach((l,j)=>{cards["SHDC"[i]+"1234567890JQK"[j]]=String.fromCodePoint(`0x1F0${u}${l}`)})});
cards.J0 = String.fromCodePoint(0x1F0BF); // Red joker
cards.J1 = String.fromCodePoint(0x1F0DF); // White joker
clog(cards.S1);

スペードのAが表示されましたか?では、カードをシャッフルしたのち(シャッフルの精度が雑ですが、それも現実っぽくて良いでしょう)、デッキから5枚引いて、表示してみましょう。

clog(Object.keys(cards).sort(()=>{return Math.random()-.5 }).slice(-5).map((c)=>cards[c]).join(""))

これで、ポーカーっぽいことが出来そうですね。

、、今日はここまで。このあと、どう進めるか何も決めていませんので、コメントなど頂けたら幸いです。

ちなみにUnicodeには麻雀牌もあるので、興味ある方はそちらで遊んでみてはいかがでしょうか。しかも、(私の環境では)麻雀牌は色が付いており、トランプよりも視認性が高いです。残念ながら私は麻雀のルールを知りませんが。