def main(): puni = Puni() args = parse(puni) PFSM = PuniFSM(puni) fsm = Fysom({ 'initial': 'init', 'events': [ {'name': 'goToMap', 'src': 'init', 'dst': 'map'}, {'name': 'goToMap', 'src': 'battle_waiting', 'dst': 'map'}, {'name': 'goToMap', 'src': 'result', 'dst': 'map'}, {'name': 'goToMap', 'src': 'ranking', 'dst': 'map'}, {'name': 'searchEnemy', 'src': 'map', 'dst': 'search'}, {'name': 'waiting', 'src': 'search', 'dst': 'battle_waiting'}, {'name': 'fight', 'src': 'battle_waiting', 'dst': 'battle'}, {'name': 'showResult', 'src': 'battle', 'dst': 'result'}, {'name': 'sendSoul', 'src': 'map', 'dst': 'ranking'}, {'name': 'panic', 'src': '*', 'dst': 'error'}, {'name': 'exit', 'src': 'map', 'dst': 'finish'} ], 'callbacks': { 'oninit': PFSM.on_init, 'onmap': PFSM.on_map, 'onsearchEnemy': PFSM.on_search, 'onbattle_waiting': PFSM.on_waiting, 'onfight': PFSM.on_fight, 'onbattle': PFSM.on_battle, 'onranking': PFSM.on_ranking, 'onresult': PFSM.on_result, 'onfinish': PFSM.on_finish, }}) fsm.goToMap() if random.randint(0, 20) is 0: fsm.sendSoul() fsm.goToMap() fsm.exit() fsm.searchEnemy() fsm.waiting() fsm.fight() fsm.showResult() fsm.goToMap() fsm.exit() return