Spaces:
Sleeping
Sleeping
import gradio as gr | |
yaku_list = [ | |
"立直", "門前清自摸和", "一発", "ドラ", | |
"海底撈月", "河底撈魚", "嶺上開花", "槍槓", | |
"ダブル立直", "七対子", "混全帯幺九", "一気通貫", | |
"三色同順", "三色同刻", "三槓子", "対々和", | |
"三暗刻", "小三元", "混老頭", "二盃口", | |
"純全帯幺九", "混一色", "清一色", "国士無双", | |
"大三元", "四暗刻", "小四喜", | |
"大四喜", "字一色", "緑一色", "清老頭", | |
"九蓮宝燈", "四槓子", "天和", | |
"地和", | |
] | |
yaku_hand = { | |
"立直":1, "門前清自摸和":1, "一発":1, "ドラ":1, | |
"海底撈月":1, "河底撈魚":1, "嶺上開花":1, "槍槓":1, | |
"ダブル立直":2, "七対子":1.5, "混全帯幺九":2, "一気通貫":2, | |
"三色同順":2, "三色同刻":2, "三槓子":2, "対々和":2, | |
"三暗刻":2, "小三元":2, "混老頭":2, "二盃口":3, | |
"純全帯幺九":3, "混一色":3, "清一色":6, "国士無双":13, | |
"大三元":13, "四暗刻":13, "小四喜":13, | |
"大四喜":13, "字一色":13, "緑一色":13, "清老頭":13, | |
"九蓮宝燈":13, "四槓子":13, "天和":13, | |
"地和":13, | |
} | |
parent_ron_points = {1:2000, 1.5:2400, 2:3900, 2.5:4800,3:7700, 3.5:9600,4:12000,5:12000,6:18000,7:18000,8:24000,9:24000,10:36000,11:36000,12:36000,13:48000} | |
children_ron_points = {1:1000, 2:2000, 3:3900, 4:8000,5:8000,6:12000,7:12000,8:16000,9:16000,10:24000,11:24000,12:24000,13:32000} | |
def calculate_score(selected_yaku): | |
hand = 0 | |
for yaku in selected_yaku: | |
# 各役の翻数を加算 | |
hand += yaku_hand[yaku] | |
if hand > 13: | |
hand = 13 | |
# 少数点以下切り捨て | |
elif hand > 4: | |
hand = int(hand) | |
return hand, parent_ron_points[hand], children_ron_points[hand] | |
def mahjong_score_interface(selected_yaku): | |
hand, parent_ron_score, children_ron_score = calculate_score(selected_yaku) | |
return f""" | |
選択された役: {selected_yaku} | |
翻数: {hand} | |
親(ロン): {parent_ron_score} | |
子(ロン): {children_ron_score} | |
(役満以上は全て13翻、七対子は1.5翻とした。) | |
""" | |
yaku_checkboxes = [gr.Checkbox(label=yaku) for yaku in yaku_list] | |
interface = gr.Interface( | |
fn=mahjong_score_interface, | |
inputs=[gr.components.CheckboxGroup(choices=yaku_list, label="役を選択")], | |
outputs="text", | |
title="簡易版麻雀点数計算アプリ" | |
) | |
interface.launch(share=True) | |