def give_prize(self, inv_type, amount): num = -1 for x in range(len(ReadFile.get_inventory_types())): #Get the inv num if ReadFile.get_inventory_types()[x] == inv_type: num = x break cap = ReadFile.read_caps()[num] if cap == None: #Unbounded cap self.inventory[inv_type] += amount else: #Bounded cap difference = cap - self.inventory[inv_type] #How much left can be added self.inventory[inv_type] += min(difference, amount)
def __init__(self, maze): self.maze = maze self.inventory = {} inv_items = ReadFile.get_inventory_types() for i in range(len(inv_items)): inv_type = inv_items[i] self.inventory[inv_type] = ReadFile.get_init_inv_vals()[i]
def generate_prize_order(self): possible_prizes = ReadFile.get_inventory_types() possible_prizes.append(None) ordered = [] for x in range(3): random_number = randint(0, len(possible_prizes) - 1) ordered.append(possible_prizes[random_number]) if possible_prizes[random_number] == None: possible_prizes.remove(None) #Prevent more than 1 None return ordered
def decrement(self): decrement_vals = ReadFile.read_decrement() #Read in how much to decrement by inv_types = ReadFile.get_inventory_types() decrement_amounts = [0]*len(inv_types) for x in range(len(decrement_vals)): if (self.maze.total_step_count ) % decrement_vals[x][0] == 0: #Should dec? self.inventory[inv_types[x]] -= decrement_vals[x][1] decrement_amounts[x] = decrement_vals[x][1] return decrement_amounts
def is_dead(self): inv_types = ReadFile.get_inventory_types() mins = ReadFile.get_mins() #Smallest possible amount dead_at = [False, False, False] #At each inventory item, are you ok? for x in range(len(self.inventory)): if self.inventory[inv_types[x]] < mins[x]: dead_at[x] = True self.inventory[inv_types[x]] = mins[x] return dead_at
def add_output_buffer_postlim(self): position = self.maze.position.last_pos if position != None: #Choice if position.is_choice_room: self.out_list.append(str(self.maze.position.prize[0])) else: self.out_list.append("-1") inv_types = ReadFile.get_inventory_types() self.out_list.extend([str(self.inventory.inventory[inv_types[x]]) for x in range(3)]) if self.maze.position.prize[2]: #If just got a prize self.out_list.extend([str(self.maze.position.prize[0]), str(self.maze.position.prize[1])]) else: self.out_list.extend(['None', 'None'])
def add_output_buffer_postlim(self, direction, current_inventory, decrement_amounts): position = self.maze.position.last_pos # if position != None: #Choice # if position.is_choice_room: # self.out_list.append(str(self.maze.position.prize[0])) # else: # self.out_list.append("-1") global chosen_direction, chasing_infos, str_infos chosen_direction = direction # for updating centre/chasing infos later self.out_list.append(direction) # Direction chosen # to update chasing info for next turn (ie what you just selected) and output the infos of the current chosen direction to file if direction == "left": chasing_infos = self.prize_info_to_string(position.prize_infos[0]) self.out_list.extend(str_infos[0:4]) elif direction == "right": chasing_infos = self.prize_info_to_string(position.prize_infos[2]) self.out_list.extend(str_infos[4:8]) elif direction == "centre" and self.maze.position.prize.count(None) != len( self.maze.position.prize ): # if centre, don't update, unless prize given, then update to nones chasing_infos = ["None", "None", "None", "None"] self.out_list.extend(str_infos[0:4]) inv_types = ReadFile.get_inventory_types() # for prize and decrease for x in inv_types: if x == self.maze.position.prize[0]: self.out_list.append(str(self.maze.position.prize[1])) else: self.out_list.append("0") self.out_list.extend([str(x) for x in decrement_amounts]) self.out_list.extend([str(current_inventory[inv_types[x]]) for x in range(len(inv_types))]) # Inventory
def add_output_buffer_postlim(self, direction, current_inventory, decrement_amounts): position = self.maze.position.last_pos if position != None: #Choice if position.is_choice_room: self.out_list.append(str(self.maze.position.prize[0])) else: self.out_list.append("-1") self.out_list.append(direction) #Direction chosen inv_types = ReadFile.get_inventory_types() self.out_list.extend([str(current_inventory[inv_types[x]]) for x in range(3)]) #Inventory for x in inv_types: if x == self.maze.position.prize[0]: self.out_list.append(str(self.maze.position.prize[1])) else: self.out_list.append('0') self.out_list.extend([str(x) for x in decrement_amounts])
def __init__(self): self.inventory = {} for inv_type in ReadFile.get_inventory_types(): self.inventory[inv_type] = 0