first commit
This commit is contained in:
0
src/engine/__init__.py
Normal file
0
src/engine/__init__.py
Normal file
41
src/engine/chengdu_mahjong_engine.py
Normal file
41
src/engine/chengdu_mahjong_engine.py
Normal file
@@ -0,0 +1,41 @@
|
||||
class ChengduMahjongEngine:
|
||||
def __init__(self):
|
||||
self.state = ChengduMahjongState()
|
||||
self.game_over = False
|
||||
|
||||
def draw_tile(self):
|
||||
# 当前玩家摸牌
|
||||
if self.state.remaining_tiles == 0:
|
||||
self.game_over = True
|
||||
return "牌堆已空"
|
||||
tile = self.state.deck.pop(0)
|
||||
self.state.remaining_tiles -= 1
|
||||
self.state.hands[self.state.current_player][tile] += 1
|
||||
return tile
|
||||
|
||||
def discard_tile(self, tile):
|
||||
# 当前玩家打牌
|
||||
if self.state.hands[self.state.current_player][tile] == 0:
|
||||
raise ValueError("当前玩家没有这张牌")
|
||||
self.state.hands[self.state.current_player][tile] -= 1
|
||||
self.state.discards[self.state.current_player].append(tile)
|
||||
|
||||
def peng(self, tile):
|
||||
# 碰牌逻辑
|
||||
player = self.state.current_player
|
||||
if self.state.hands[player][tile] < 2:
|
||||
raise ValueError("碰牌条件不满足")
|
||||
self.state.hands[player][tile] -= 2
|
||||
self.state.melds[player].append(("peng", tile))
|
||||
|
||||
def gang(self, tile, mode="ming"):
|
||||
# 杠牌逻辑
|
||||
player = self.state.current_player
|
||||
if mode == "ming" and self.state.hands[player][tile] == 3:
|
||||
self.state.hands[player][tile] -= 3
|
||||
self.state.melds[player].append(("ming_gang", tile))
|
||||
elif mode == "an" and self.state.hands[player][tile] == 4:
|
||||
self.state.hands[player][tile] -= 4
|
||||
self.state.melds[player].append(("an_gang", tile))
|
||||
else:
|
||||
raise ValueError("杠牌条件不满足")
|
||||
Reference in New Issue
Block a user