麻雀のシミュレーター
プレイ用ではなく、エージェント間でプレイさせて、作戦の有効性を調べるのに使いたいあんも.icon
牌とプレイヤー
点数と推移
副露や抜きドラはあとから実装するので良さそう?
難しそうな問題なので、機能を分解して作る
効率的な動作よりも、組み合わせやすいものにしたいあんも.icon
完成品よりも部品に興味があるあんも.icon
すでに知られている結果よりも、その結果を得ることに興味がある
セオリーを知らないので、なぜそれが問題になっているかのモチベーションがわからない
ある種のオープンソースの思想?あんも.icon
オープンソースのゲームの中身を読んだらいいのか
牌
列挙
リストの合成の関数?あんも.icon
簡単に複製して4つにしたい
code:hai
# 山の生成
三麻牌 = append!(三麻萬子, 筒子, 索子, 東南西北, 三元牌) #? 山からランダムに引いていく仕様にする
面子の確認のための辞書
牌に順番を持たせる
順子の成立しないものは大きい数字にすればよさそう?あんも.icon
39*3<になるようにするとか
code:hai.jl
# 色別にIDを割り当てる辞書
牌ID = Dict()
for (i, 牌) in enumerate(萬子)
end
for (i, 牌) in enumerate(筒子)
end
for (i, 牌) in enumerate(索子)
end
for (i, 牌) in enumerate(東南西北)
end
for (i, 牌) in enumerate(三元牌)
end
役の判定
手牌から面子にどうやって分ける?あんも.icon
IDで割ればよさそう?あんも.icon
面子判定
もっと単純にできる?
IDのmodを見る
code:mentu.jl
function is_刻子(tiles::Vector{String})
return length(tiles) == 3 && length(unique(tiles)) == 1
end
function is_順子(tiles::Vector{String})
return true
end
println(is_刻子(kotu), ' ', is_刻子(shuntu),' ', is_順子(kotu),' ', is_順子(shuntu))
完成形の点数計算?
局の進行
手牌
手牌の評価関数?
手牌+ツモ→切る牌