class Game: """ The game class containing Player, Difficulty, Universe, and Current Region """ def __init__(self): self.difficulty = None self.player = None self.universe = None self.curr_region = None self.npc = None def start_game(self, player, difficulty): """Starts the game and instantiates all objects/attributes player -- the player that's added to the game difficulty -- the game's difficulty """ self.difficulty = difficulty self.player = player self.universe = Universe( ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'], [], self.player.credits) self.curr_region = self.universe.pick_random_region() self.npc = None def travel(self, region): distance = ( (self.curr_region.x_coord - region.x_coord)**2 + (self.curr_region.y_coord - region.y_coord)**2)**(1 / 2) / 10 if distance != 0: fuel_cost = distance - self.player.pilot if fuel_cost < 0: fuel_cost = 0 if self.player.ship.current_fuel >= fuel_cost: self.player.ship.current_fuel -= fuel_cost return True return False return False def buy(self, item_key, value): if self.player.credits >= value and len( self.player.ship.inventory) < self.player.ship.cargo_space: self.player.credits -= value self.player.ship.inventory.append(item_key) return True else: return False def sell(self, item_key): self.player.credits += self.curr_region.market.get(item_key) self.player.ship.inventory.remove(item_key) def loseCredits(self, amount): self.player.credits -= amount def loseItem(self, item_key): self.player.credits += 3 self.player.ship.inventory.remove(item_key) def loseRandomItem(self): self.player.ship.inventory.remove( random.choice(self.player.ship.inventory)) def refuel(self): fuelToFill = 100 - self.player.ship.current_fuel cost = fuelToFill / 3 if cost <= self.player.credits: self.player.ship.current_fuel = 100 self.player.credits -= cost return True else: return False def repair(self): repairs = 100 - self.player.ship.health cost = repairs / 3 - self.player.engineer if cost <= self.player.credits: self.player.ship.health = 100 self.player.credits -= cost return True return False def loseAllCredits(self): self.player.credits = 0 def loseAllItems(self): self.player.ship.inventory = [] def encounter(self): encounterChance = random.randint(0, 1) if encounterChance == 1: if self.difficulty == "Easy": chance = random.randint(1, 6) if chance == 1: randAttacker = random.randint(0, 1) if randAttacker == 0: if len(self.player.ship.inventory) > 0: self.npc = Police() else: self.npc = Bandit(self.difficulty) else: self.npc = Bandit(self.difficulty) else: self.npc = Trader(self.curr_region) if self.difficulty == "Medium": chance = random.randint(1, 6) if chance > 1 and chance < 4: randAttacker = random.randint(0, 1) if randAttacker == 0: if len(self.player.ship.inventory) > 0: self.npc = Police() else: self.npc = Bandit(self.difficulty) else: self.npc = Bandit(self.difficulty) else: self.npc = Trader(self.curr_region) if self.difficulty == "Hard": chance = random.randint(3, 6) if chance > 3: randAttacker = 0 if randAttacker == 0: if len(self.player.ship.inventory) > 0: self.npc = Police() else: self.npc = Bandit(self.difficulty) else: self.npc = Bandit(self.difficulty) else: self.npc = Trader(self.curr_region) else: self.npc = None