Skip to content

Commit 365ea6b

Browse files
authored
docs: Add Japanese wiki (#188)
* docs: Add Japanese wiki * docs: tweak
1 parent e4dc4c5 commit 365ea6b

File tree

3 files changed

+230
-0
lines changed

3 files changed

+230
-0
lines changed

.github/wiki/Home.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
## v2 version (in development)
44
- [[v2-English]]
55
- [[v2-Chinese]]
6+
- [[v2-Japanese]]
67

78
## Previous Versions
89

.github/wiki/_Sidebar.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
**v2** (in development)
44
- [[v2-English]]
55
- [[v2-Chinese]]
6+
- [[v2-Japanese]]
67

78
**v1**
89
- [[English]]

.github/wiki/v2-Japanese.md

Lines changed: 228 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,228 @@
1+
Python 3.10以上に対応しています。
2+
3+
本ライブラリには日本麻雀(立直麻雀)用の様々なツール(シャンテン数計算、和了判定、点数計算)が含まれています。
4+
5+
## 立直麻雀の点数計算
6+
7+
本パッケージは立直麻雀の手牌詳細(飜、符、役、点数)を計算するために使用できます。
8+
9+
以下のオプション機能をサポートしています:
10+
11+
| 機能 | キーワード引数 | デフォルト値 |
12+
|------|----------------|--------------|
13+
| 喰い断を有効にするかどうか | `has_open_tanyao` | `False` |
14+
| 赤ドラを有効にするかどうか | `has_aka_dora` | `False` |
15+
| ダブル役満(四暗刻単騎など)を有効にするかどうか | `has_double_yakuman` | `True` |
16+
| 数え役満の扱い(役満または三倍満) | `kazoe_limit` | `HandConstants.KAZOE_LIMITED` |
17+
| 切り上げ満貫を有効にするかどうか | `kiriage` | `False` |
18+
| 喰い平和形ロンに2符を追加するかどうか | `fu_for_open_pinfu` | `True` |
19+
| 平和のツモ符を有効にするかどうか | `fu_for_pinfu_tsumo` | `False` |
20+
| 人和を役満とするかどうか(無効の場合は5飜) | `renhou_as_yakuman` | `False` |
21+
| 大車輪(門前清 22334455667788筒)を有効にするかどうか | `has_daisharin` | `False` |
22+
| 色違いの大車輪(索子:大竹林、萬子:大数隣)を有効にするかどうか | `has_daisharin_other_suits` | `False` |
23+
| オープン立直への放銃を役満にするかどうか | `has_sashikomi_yakuman` | `False` |
24+
| 役満複合の上限を6にするかどうか(最高 192000 点) | `limit_to_sextuple_yakuman` | `True` |
25+
| 大七星(字一色七対子)を有効にするかどうか | `has_daichisei` | `False` |
26+
| 八連荘に役が必要かどうか | `paarenchan_needs_yaku` | `True` |
27+
28+
コードはtenhou.net(天鳳)鳳凰卓の牌譜**11,120,125局**で検証済みです。
29+
30+
したがって、本パッケージの手牌計算機は天鳳の手牌計算と同じように動作していることが確認できます。
31+
32+
## 使い方
33+
34+
次の手牌の点数を計算してみましょう:
35+
36+
![image](https://user-images.githubusercontent.com/475367/30796350-3d30431a-a204-11e7-99e5-aab144c82f97.png)
37+
38+
### 断幺九ロン
39+
40+
```python
41+
from mahjong.hand_calculating.hand import HandCalculator
42+
from mahjong.tile import TilesConverter
43+
from mahjong.hand_calculating.hand_config import HandConfig
44+
from mahjong.meld import Meld
45+
46+
# we had to use all 14 tiles in that array
47+
tiles = TilesConverter.string_to_136_array(man='22444', pin='333567', sou='444')
48+
win_tile = TilesConverter.string_to_136_array(sou='4')[0]
49+
50+
result = HandCalculator.estimate_hand_value(tiles, win_tile)
51+
52+
print(result.han, result.fu)
53+
print(result.cost['main'])
54+
print(result.yaku)
55+
for fu_item in result.fu_details:
56+
print(fu_item)
57+
```
58+
59+
Output:
60+
61+
```
62+
1 40
63+
1300
64+
[Tanyao]
65+
{'fu': 30, 'reason': 'base'}
66+
{'fu': 4, 'reason': 'closed_pon'}
67+
{'fu': 4, 'reason': 'closed_pon'}
68+
{'fu': 2, 'reason': 'open_pon'}
69+
```
70+
71+
### ツモの場合
72+
73+
```python
74+
result = HandCalculator.estimate_hand_value(tiles, win_tile, config=HandConfig(is_tsumo=True))
75+
76+
print(result.han, result.fu)
77+
print(result.cost['main'], result.cost['additional'])
78+
print(result.yaku)
79+
for fu_item in result.fu_details:
80+
print(fu_item)
81+
```
82+
83+
Output:
84+
85+
```
86+
4 40
87+
4000 2000
88+
[Menzen Tsumo, Tanyao, San Ankou]
89+
{'fu': 20, 'reason': 'base'}
90+
{'fu': 4, 'reason': 'closed_pon'}
91+
{'fu': 4, 'reason': 'closed_pon'}
92+
{'fu': 4, 'reason': 'closed_pon'}
93+
{'fu': 2, 'reason': 'tsumo'}
94+
```
95+
96+
### 副露がある場合
97+
98+
```python
99+
from mahjong.hand_calculating.hand_config import OptionalRules
100+
101+
melds = [Meld(meld_type=Meld.PON, tiles=TilesConverter.string_to_136_array(man='444'))]
102+
103+
result = HandCalculator.estimate_hand_value(tiles, win_tile, melds=melds, config=HandConfig(options=OptionalRules(has_open_tanyao=True)))
104+
105+
print(result.han, result.fu)
106+
print(result.cost['main'])
107+
print(result.yaku)
108+
for fu_item in result.fu_details:
109+
print(fu_item)
110+
```
111+
112+
Output:
113+
114+
```
115+
1 30
116+
1000
117+
[Tanyao]
118+
{'fu': 20, 'reason': 'base'}
119+
{'fu': 4, 'reason': 'closed_pon'}
120+
{'fu': 2, 'reason': 'open_pon'}
121+
{'fu': 2, 'reason': 'open_pon'}
122+
```
123+
124+
### 立直と裏ドラ
125+
126+
裏ドラ表示牌は `ura_dora_indicators` パラメーターで指定できます。裏ドラは立直後の和了の場合のみカウントされます。
127+
128+
```python
129+
tiles = TilesConverter.string_to_136_array(man='22444', pin='333567', sou='444')
130+
win_tile = TilesConverter.string_to_136_array(sou='4')[0]
131+
dora_indicators = TilesConverter.string_to_136_array(man='1')
132+
ura_dora_indicators = TilesConverter.string_to_136_array(pin='2')
133+
134+
result = HandCalculator.estimate_hand_value(
135+
tiles,
136+
win_tile,
137+
dora_indicators=dora_indicators,
138+
ura_dora_indicators=ura_dora_indicators,
139+
config=HandConfig(is_riichi=True, is_tsumo=True)
140+
)
141+
142+
print(result.han, result.fu)
143+
print(result.yaku)
144+
```
145+
146+
Output:
147+
148+
```
149+
10 40
150+
[Menzen Tsumo, Riichi, Tanyao, San Ankou, Dora 2, Ura Dora 3]
151+
```
152+
153+
## シャンテン数計算
154+
155+
```python
156+
from mahjong.shanten import Shanten
157+
from mahjong.tile import TilesConverter
158+
159+
tiles = TilesConverter.string_to_34_array(man='13569', pin='123459', sou='443')
160+
result = Shanten.calculate_shanten(tiles)
161+
162+
print(result)
163+
```
164+
165+
Output:
166+
167+
```
168+
2
169+
```
170+
171+
## 青天井ルール
172+
173+
```python
174+
from mahjong.hand_calculating.hand import HandCalculator
175+
from mahjong.hand_calculating.hand_config import HandConfig
176+
from mahjong.hand_calculating.scores import Aotenjou
177+
from mahjong.tile import TilesConverter
178+
from mahjong.meld import Meld
179+
from mahjong.constants import EAST
180+
181+
tiles = TilesConverter.string_to_136_array(honors='111133555566667777')
182+
win_tile = TilesConverter.string_to_136_array(honors='3')[0]
183+
184+
melds = [
185+
Meld(meld_type=Meld.KAN, tiles=TilesConverter.string_to_136_array(honors='1111'), opened=False),
186+
Meld(meld_type=Meld.KAN, tiles=TilesConverter.string_to_136_array(honors='5555'), opened=False),
187+
Meld(meld_type=Meld.KAN, tiles=TilesConverter.string_to_136_array(honors='6666'), opened=False),
188+
Meld(meld_type=Meld.KAN, tiles=TilesConverter.string_to_136_array(honors='7777'), opened=False),
189+
]
190+
191+
result = HandCalculator.estimate_hand_value(
192+
tiles,
193+
win_tile,
194+
melds=melds,
195+
dora_indicators=TilesConverter.string_to_136_array(honors='4444'),
196+
ura_dora_indicators=TilesConverter.string_to_136_array(honors='7777'),
197+
scores_calculator_factory=Aotenjou,
198+
config=HandConfig(
199+
is_riichi=True,
200+
is_tsumo=True,
201+
is_ippatsu=True,
202+
is_haitei=True,
203+
player_wind=EAST,
204+
round_wind=EAST
205+
)
206+
)
207+
208+
print(result.han, result.fu)
209+
print(result.cost['main'])
210+
print(result.yaku)
211+
for fu_item in result.fu_details:
212+
print(fu_item)
213+
```
214+
215+
Output:
216+
217+
```
218+
103 160
219+
12980742146337069071326240823050300
220+
[Menzen Tsumo, Riichi, Ippatsu, Haitei Raoyue, Yakuhai (seat wind east), Yakuhai (round wind east), Daisangen, Suu Kantsu, Tsuu Iisou, Suu Ankou Tanki, Dora 16, Ura Dora 16]
221+
{'fu': 32, 'reason': 'closed_terminal_kan'}
222+
{'fu': 32, 'reason': 'closed_terminal_kan'}
223+
{'fu': 32, 'reason': 'closed_terminal_kan'}
224+
{'fu': 32, 'reason': 'closed_terminal_kan'}
225+
{'fu': 20, 'reason': 'base'}
226+
{'fu': 2, 'reason': 'pair_wait'}
227+
{'fu': 2, 'reason': 'tsumo'}
228+
```

0 commit comments

Comments
 (0)