本文整理汇总了Python中transitions.Machine.on_enter_ending_game方法的典型用法代码示例。如果您正苦于以下问题:Python Machine.on_enter_ending_game方法的具体用法?Python Machine.on_enter_ending_game怎么用?Python Machine.on_enter_ending_game使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类transitions.Machine
的用法示例。
在下文中一共展示了Machine.on_enter_ending_game方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: Game
# 需要导入模块: from transitions import Machine [as 别名]
# 或者: from transitions.Machine import on_enter_ending_game [as 别名]
class Game():
start_message = '''Вы находитесь в запертой кабине лифта, вместе с вами ещё два человека. Через некоторое время запасная дверь кабины откроется, для того, чтобы ею воспользоваться, вам нужна помощь кого-либо из этих людей. После открытия запасной двери запустится счётчик времени, если по иестечении срока никто не выберется – трос оборвётся, вы погибнете.
Цель игры: набрать максимальное количество очков. Если освобождается один человек, он получает 6 очков. Если освобождаются два человека, каждый из них получает 3 очка. Если освобождаются трое, каждый из них получает 2 очка'''
phrases = ['Привет',
'Ты мне нравишься',
'Ты мне тоже нравишься',
'Ты мне не нравишься',
'Ты мне тоже не нравишься',
'Мне нужна твоя помощь',
'Мне не нужна твоя помощь',
'Я не буду тебе помогать',
'А как же наш третий друг?',
'Он мне не нравится',
'Он мне нравится',
'Я направляюсь к выходу',
'Подсади меня',
'Подсаживаю тебя',
'Вытащи меня',
'Вытаскиваю тебя',
'Я согласен',
'Я не согласен',
'Ты будешь со мной дружить?',
'У тебя есть план?',
'Уступи мне дорогу',
'Уступаю тебе дорогу',
'Не уступаю тебе дорогу',
'Похоже, вы обойдётесь без меня']
states = ['waiting', 'waiting_for_start', 'joining_player', 'player_turn', 'starting_game', 'starting_round', 'ending_turn', 'ending_round', 'ending_game']
def __init__(self, max_pl_num):
self.max_pl_num = max_pl_num
self.obj = ObjectSpawner(1)
self.max_time = 10 * 60
self.machine = Machine(model=self, states=Game.states, initial='waiting')
self.machine.add_transition(trigger='_end_round', source='*', dest='ending_round')
self.machine.add_transition(trigger='_end_turn', source='*', dest='ending_turn')
self.machine.add_transition(trigger='_start_turn', source='*', dest='player_turn')
self.machine.add_transition(trigger='_start_round', source='*', dest='starting_round')
self.machine.add_transition(trigger='all_players', source='waiting_for_start', dest='starting_game')
self.machine.add_transition(trigger='_player_joined', source='waiting', dest='waiting_for_start', conditions='is_full')
self.machine.add_transition(trigger='_player_joined', source='waiting', dest='waiting', unless='is_full')
self.machine.on_enter_waiting('waiting_notification')
self.machine.on_enter_starting_game('start_game')
self.machine.on_enter_starting_round('start_round')
self.machine.on_enter_player_turn('start_turn')
self.machine.on_enter_ending_turn('end_turn')
self.machine.on_enter_ending_round('end_round')
self.machine.on_enter_ending_game('end_game')
self.timer = GameTimer(self.max_time, self._end_round)
skip_action = Action('Пропустить ход', Player.can_skip, Player.skip)
go_to_action = TargetedAction('Подойти к', Player.can_move, Player.come_to, Player.check_come_to_target, GameObject.on_approach)
leave_action = TargetedAction('Отойти от', Player.can_move, Player.leave, Player.check_leave_target, GameObject.on_leave)
punch_action = TargetedAction('Толкнуть', Player.can_punch, Player.punch, Player.check_punch_target, Player.on_punch)
shoot_action = TargetedAction('Выстрелить в', Player.can_shoot, Player.shoot, Player.check_shoot_target, Player.on_shoot)
conversation_action = ConversationAction('Сказать', Player.can_say_phrase, Player.say_phrase, Player.check_say_phrase, Player.on_say_phrase, self.phrases)
self.actions = OrderedDict()
self.actions[go_to_action.title()] = go_to_action
self.actions[leave_action.title()] = leave_action
self.actions[punch_action.title()] = punch_action
self.actions[shoot_action.title()] = shoot_action
self.actions[conversation_action.title()] = conversation_action
self.actions[skip_action.title()] = skip_action
def get_available_actions(self, player):
available_actions = []
for action_name in self.actions:
if self.actions[action_name].is_available(player):
available_actions.append(self.actions[action_name])
return available_actions
def get_available_targets(self, player, action):
available_targets = []
for obj_class in self.obj.objects:
for obj_inst_id, obj in self.obj.objects[obj_class].items():
if action.target_check(player, obj):
available_targets.append(obj)
return available_targets
def build_actions_menu(self, player):
actions = self.get_available_actions(player)
root = MenuNode(item_name='Вы можете')
for action in actions:
amn = MenuNode(item_name=str(action), item_value=action)
if action.is_targeted():
targets = self.get_available_targets(player, action)
if not targets:
continue
for target in targets:
tmn = MenuNode(item_name=str(target), item_value=target)
if action.is_conversation():
for phrase in action.phrases:
pmn = MenuNode(phrase)
tmn.add_child(pmn)
amn.add_child(tmn)
root.add_child(amn)
# print('{0} menu: \n{1}'.format(amn, amn.menu()))
# print('parent: {}'.format(amn.get_parent()))
# print('='*10)
return root
#.........这里部分代码省略.........