Skip to content

Commit

Permalink
测试更新
Browse files Browse the repository at this point in the history
  • Loading branch information
nocturne123 committed Oct 10, 2023
1 parent 65a3c40 commit 0d467c1
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 15 deletions.
30 changes: 18 additions & 12 deletions game.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
from random import shuffle
from itertools import chain, zip_longest
from collections import deque
from player_action import PlayerAction


# 游戏类
Expand Down Expand Up @@ -75,8 +76,8 @@ def set_team(self):
self.team_deque.extend([team1, team2])

@property
def alive_team_list(self):
return [team for team in self.team_deque if team.is_remaining]
def alive_team_deque(self):
return deque(team for team in self.team_deque if team.is_remaining)

def next_alive_team(self):
a = self.team_deque.popleft()
Expand All @@ -88,15 +89,6 @@ def next_alive_team(self):
else:
pass

def start_stage(self, stage, player):
pass

def end_stage(self, stage, player):
pass

def start_turn(self, player):
pass

def game_start_dealing(self):
for player in self.player_list:
for i in range(player.start_game_draw):
Expand All @@ -105,14 +97,28 @@ def game_start_dealing(self):
player.hand_sequence.append(card)
card.get_into_hand()

# 返回当前玩家的优先级序列,可以视作玩家观察到的轮次
def set_round_list(self):
"""返回当前玩家的优先级序列,可以视作玩家观察到的轮次"""
return [
player
for player in chain.from_iterable(zip_longest(*self.team_deque))
if player.living_stage != CharaterAliveEnum.dead
]

def set_player_to_current(self):
self.current_player = self.team_deque[0][0]

def set_current_player_start_turn(self):
self.current_player.start_turn() # 开始回合,进入准备阶段
self.current_player.end_prepare() # 结束准备阶段,进入抽牌阶段
PlayerAction.draw_card_from_pile(
self.current_player,
self.draw_pile,
self.current_player.draw_stage_card_number,
) # 玩家抽牌

self.current_player.end_draw() # 玩家结束抽牌阶段,进入出牌阶段


# 轮次类,里面包含多个回合,游戏逻辑更新后,以角色看到的优先级序列作为轮次的实现
# 优先级序列由game类计算并提供,round类内部只做保存
Expand Down
4 changes: 2 additions & 2 deletions player.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

stage_transitions = [
{
"trigger": "start_round",
"trigger": "start_turn",
"source": PlayerStateEnum.wait,
"dest": PlayerStateEnum.prepare,
},
Expand All @@ -38,7 +38,7 @@
"dest": PlayerStateEnum.end,
},
{
"trigger": "end_round", # 用于结束回合
"trigger": "end_turn", # 用于结束回合
"source": PlayerStateEnum.end,
"dest": PlayerStateEnum.wait,
},
Expand Down
10 changes: 10 additions & 0 deletions player_action.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,3 +75,13 @@ def card_cancel_target(card: Card):
def player_end_play(player: Player):
"""结束回合"""
player.stage_state.end_play()

@staticmethod
def player_end_discard(player: Player):
"""结束阶段"""
player.stage_state.end_discard()

@staticmethod
def player_end_turn(player: Player):
"""结束回合"""
player.stage_state.end_turn()
17 changes: 16 additions & 1 deletion test_code_4.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from card_pile import DrawPile, DiscardPile
from card import PhysicalAttackCard, MagicAttackCard, MentalAttackCard
from charaters import Charater
from ENUMS import SpeciesEnum, GameModeEnum
from ENUMS import SpeciesEnum, GameModeEnum, CharaterAliveEnum, PlayerStateEnum
from player_action import PlayerAction
from pprint import pprint

Expand Down Expand Up @@ -59,3 +59,18 @@
)
print(mac_player.hand_sequence)
print(draw_pile)

while (
mac_player.living_state == CharaterAliveEnum.alive
and dummy_player.living_state == CharaterAliveEnum.alive
):
while mac_player.stage_state.state == PlayerStateEnum.play:
print(mac_player.stage_state.state)
print(mac_player.living_state.state)
print(mac_player.hand_sequence)
print(mac_player)
print(dummy_player)
print(draw_pile)
print(discard_pile)
print("=====================================")
print("=====================================")

0 comments on commit 0d467c1

Please sign in to comment.