Mercurial > sypikslang
view gamelib/tests/repl_game.py @ 98:e386ec5d179b
The game can end
author | Neil Muller <drnlmuller@gmail.com> |
---|---|
date | Wed, 09 May 2012 22:03:07 +0200 |
parents | a40a76012bd7 |
children | e4f9513c9dd0 |
line wrap: on
line source
from gamelib.gamestate import Game from gamelib.constants import SUCCESS, FAILURE, NEW_SCIENCE, NEW_SCHEMATIC class ReplGame(object): def __init__(self, init_data=None): self.game = Game(init_data=init_data) self._begin_turn() def _begin_turn(self): self.game.start_turn() self.display_state() def display_turn_data(self): print "Repute:", self.game.reputation print "Moneys:", self.game.money print "Points:", self.game.points def display_science(self): print "Science:" self.science = [] for science in self.game.lab.science: if science.can_spend(self.game.lab, 1): self.science.append(science) print " %s. %s (%s)" % ( len(self.science), science.NAME, science.points) else: print " -- %s (%s)" % (science.NAME, science.points) def display_equipment(self): print "Equipment:" self.equipment = [] for equipment in self.game.get_available_equipment(): self.equipment.append(equipment) print " %s. %s (%s) $%s" % ( len(self.equipment), equipment.NAME, equipment.points, equipment.COST) def display_missions(self): print "Missions:" self.missions = [] for mission in self.game.get_available_missions(): self.missions.append(mission) print " %s. %s\n %s" % ( len(self.missions), mission.NAME, mission.SHORT_DESCRIPTION) def display_state(self): print "-" * 10, "NEW TURN", "-" * 30 self.display_turn_data() print "" self.display_science() print "" self.display_equipment() print "" self.display_missions() print "-" * 50 def next_turn(self, research_list, missions): missions = [(self.missions[i[0] - 1], [self.equipment[i[j] - 1] for j in range(1, len(i))]) for i in missions] research_list = [self.science[i - 1] for i in research_list] self.game.cur_allocation.extend(research_list) self.game.cur_missions.extend(missions) print "-" * 10, "RESULTS", "-" * 31 messages = self.game.end_turn() for msg_type, msg in messages: if msg_type == NEW_SCIENCE or msg_type == NEW_SCHEMATIC: print msg elif msg_type == FAILURE: print 'Mission failure: %s' % msg elif msg_type == SUCCESS: print 'Success: %s' % msg else: print 'Unhandled result %d: %s' % (msg_type, msg) self._begin_turn()