def elevation(self): """ Returns an integer value of the elevation number of the terrain object """ width = self.no_name_level[0] height = self.no_name_level[1] tile = self.no_name_level[2] x = self.no_name_level[3] y = self.no_name_level[4] tiles = [] for i in tile: i = i[:-1] tiles.append(i) tiles_arranged = [ tiles[i:i + width] for i in range(0, len(tile), width) ] planet_co = [] for i in tiles_arranged: planet = [] for n in i: n = n.split(',') if len(n) != 3: a = ['-'] n += a planet.append(n) else: planet.append(n) planet_co.append(planet) planet_map = Planet(planet_co, width, height) coordinates = Planet(planet_co, width, height) coordinates = Planet.coordinates(coordinates) planet_map = Planet.coordinates_dict( planet_map ) #this is my map in dictionary format(coordinates : tile) for y1 in coordinates: if coordinates.index(y1) == y: y_value = coordinates.index(y1) for x1 in y1: if x1 == [x, y]: x_value = y1.index(x1) rover_d = coordinates[y_value][x_value] x1 = x_value + 1 x2 = x_value + 2 y1 = y_value + 1 y2 = y_value + 2 if x1 == len(coordinates[1]): x1 == 0 if y1 == len(coordinates): y1 == 0 if x2 > len(coordinates[1]): x2 = 1 if y2 > len(coordinates[1]): y2 == 1 front2 = coordinates[y2][x_value] front1 = coordinates[y1][x_value] back1 = coordinates[y_value - 1][x_value] back2 = coordinates[y_value - 2][x_value] right1 = coordinates[y_value][x1] right2 = coordinates[y_value][x2] left1 = coordinates[y_value][x_value - 1] left2 = coordinates[y_value][x_value - 2] front1_right1 = coordinates[y1][x1] front1_right2 = coordinates[y1][x2] front2_right1 = coordinates[y2][x1] front2_right2 = coordinates[y2][x2] front1_left1 = coordinates[y1][x_value - 1] front1_left2 = coordinates[y1][x_value - 2] front2_left1 = coordinates[y2][x_value - 1] front2_left2 = coordinates[y2][x_value - 2] back1_right1 = coordinates[y_value - 1][x1] back1_right2 = coordinates[y_value - 1][x2] back2_right1 = coordinates[y_value - 2][x1] back2_right2 = coordinates[y_value - 2][x2] back1_left1 = coordinates[y_value - 1][x_value - 1] back1_left2 = coordinates[y_value - 1][x_value - 2] back2_left1 = coordinates[y_value - 2][x_value - 1] back2_left2 = coordinates[y_value - 2][x_value - 2] co_f2r2 = planet_map[str(front2_right2)] co_f2r1 = planet_map[str(front2_right1)] co_f2 = planet_map[str(front2)] co_f2l1 = planet_map[str(front2_left1)] co_f2l2 = planet_map[str(front2_left2)] co_f1r2 = planet_map[str(front1_right2)] co_f1r1 = planet_map[str(front1_right1)] co_f1 = planet_map[str(front1)] co_f1l1 = planet_map[str(front1_left1)] co_f1l2 = planet_map[str(front1_left2)] co_r2 = planet_map[str(right2)] co_r1 = planet_map[str(right1)] co_rover = planet_map[str([x, y])] co_l1 = planet_map[str(left1)] co_l2 = planet_map[str(left2)] co_b1r2 = planet_map[str(back1_right2)] co_b1r1 = planet_map[str(back1_right1)] co_b1 = planet_map[str(back1)] co_b1l1 = planet_map[str(back1_left1)] co_b1l2 = planet_map[str(back1_left2)] co_b2r2 = planet_map[str(back2_right2)] co_b2r1 = planet_map[str(back2_right1)] co_b2 = planet_map[str(back2)] co_b2l1 = planet_map[str(back2_left1)] co_b2l2 = planet_map[str(back2_left2)] first_lineco = [co_f2l2, co_f2l1, co_f2, co_f2r1, co_f2r2] second_lineco = [co_f1l2, co_f1l1, co_f1, co_f1r1, co_f1r2] third_lineco = [co_l2, co_l1, co_rover, co_r1, co_r2] fourth_lineco = [co_b1l2, co_b1l1, co_b1, co_b1r1, co_b1r2] fifth_lineco = [co_b2l2, co_b2l1, co_b2, co_b2r1, co_b2r2] first_line = ['|'] sec_line = ['|'] third_line = ['|'] fourth_line = ['|'] fifth_line = ['|'] for i in first_lineco: if i[2] == '-' and co_rover[2] == '-': if int(i[1]) == int(co_rover[1]): first_line.append(' |') elif int(i[1]) < int(co_rover[1]): first_line.append("-|") else: first_line.append('+|') if i[2] == '-' and co_rover[2] != '-': if int(co_rover[2]) == int(i[1]): first_line.append(' |') elif int(co_rover[2]) > int(i[1]): first_line.append("-|") else: if int(i[1]) == int(co_rover[1]): first_line.append(' |') elif int(i[1]) > int(co_rover[1]): first_line.append('+|') if i[2] != '-' and co_rover[2] == '-': if int(co_rover[1]) == int(i[2]): first_line.append('/|') elif int(co_rover[1]) < int(i[2]): first_line.append("+|") else: if int(i[1]) == int(co_rover[1]): first_line.append("\|") elif int(i[1]) < int(co_rover[1]): first_line.append('-|') if i[2] != '-' and co_rover[2] != '-': if int(i[2]) == int(co_rover[2]): first_line.append(' |') elif int(i[2]) < int(co_rover[2]): if int(co_rover[2]) == int(i[1]): first_line.append("'\'|") elif int(co_rover[2]) > int(i[1]): first_line.append('-|') elif int(i[2]) > int(co_rover[2]): if int(i[2]) == int(co_rover[1]): first_line.append("/|") elif int(i[2]) > int(co_rover[1]): first_line.append("+|") for i in second_lineco: if i[2] == '-' and co_rover[2] == '-': if int(i[1]) == int(co_rover[1]): sec_line.append(' |') elif int(i[1]) < int(co_rover[1]): sec_line.append("-|") else: sec_line.append('+|') if i[2] == '-' and co_rover[2] != '-': if int(co_rover[2]) == int(i[1]): sec_line.append(' |') elif int(co_rover[2]) > int(i[1]): sec_line.append("-|") else: if int(i[1]) == int(co_rover[1]): sec_line.append(' |') elif int(i[1]) > int(co_rover[1]): sec_line.append('+|') if i[2] != '-' and co_rover[2] == '-': if int(co_rover[1]) == int(i[2]): sec_line.append('/|') elif int(co_rover[1]) < int(i[2]): sec_line.append("+|") else: if int(i[1]) == int(co_rover[1]): sec_line.append("'\'|") elif int(i[1]) < int(co_rover[1]): sec_line.append('-|') if i[2] != '-' and co_rover[2] != '-': if int(i[2]) == int(co_rover[2]): sec_line.append(' |') elif int(i[2]) < int(co_rover[2]): if int(co_rover[2]) == int(i[1]): sec_line.append("'\'|") elif int(co_rover[2]) > int(i[1]): sec_line.append('-|') elif int(i[2]) > int(co_rover[2]): if int(i[2]) == int(co_rover[1]): sec_line.append("/|") elif int(i[2]) > int(co_rover[1]): sec_line.append("+|") for i in third_lineco: if i[2] == '-' and co_rover[2] == '-': if int(i[1]) == int(co_rover[1]): third_line.append(' |') elif int(i[1]) < int(co_rover[1]): third_line.append("-|") else: third_line.append('+|') if i[2] == '-' and co_rover[2] != '-': if int(co_rover[2]) == int(i[1]): third_line.append(' |') elif int(co_rover[2]) > int(i[1]): third_line.append("-|") else: if int(i[1]) == int(co_rover[1]): third_line.append(' |') elif int(i[1]) > int(co_rover[1]): third_line.append('+|') if i[2] != '-' and co_rover[2] == '-': if int(co_rover[1]) == int(i[2]): third_line.append('/|') elif int(co_rover[1]) < int(i[2]): third_line.append("+|") else: if int(i[1]) == int(co_rover[1]): third_line.append("'\'|") elif int(i[1]) < int(co_rover[1]): third_line.append('-|') if i[2] != '-' and co_rover[2] != '-': if int(i[2]) == int(co_rover[2]): third_line.append(' |') elif int(i[2]) < int(co_rover[2]): if int(co_rover[2]) == int(i[1]): third_line.append("'\'|") elif int(co_rover[2]) > int(i[1]): third_line.append('-|') elif int(i[2]) > int(co_rover[2]): if int(i[2]) == int(co_rover[1]): third_line.append("/|") elif int(i[2]) > int(co_rover[1]): third_line.append("+|") for i in fourth_lineco: if i[2] == '-' and co_rover[2] == '-': if int(i[1]) == int(co_rover[1]): fourth_line.append(' |') elif int(i[1]) < int(co_rover[1]): fourth_line.append("-|") else: fourth_line.append('+|') if i[2] == '-' and co_rover[2] != '-': if int(co_rover[2]) == int(i[1]): fourth_line.append(' |') elif int(co_rover[2]) > int(i[1]): fourth_line.append("-|") else: if int(i[1]) == int(co_rover[1]): fourth_line.append(' |') elif int(i[1]) > int(co_rover[1]): fourth_line.append('+|') if i[2] != '-' and co_rover[2] == '-': if int(co_rover[1]) == int(i[2]): fourth_line.append('/|') elif int(co_rover[1]) < int(i[2]): fourth_line.append("+|") else: if int(i[1]) == int(co_rover[1]): fourth_line.append("'\'|") elif int(i[1]) < int(co_rover[1]): fourth_line.append('-|') if i[2] != '-' and co_rover[2] != '-': if int(i[2]) == int(co_rover[2]): fourth_line.append(' |') elif int(i[2]) < int(co_rover[2]): if int(co_rover[2]) == int(i[1]): fourth_line.append("'\'|") elif int(co_rover[2]) > int(i[1]): fourth_line.append('-|') elif int(i[2]) > int(co_rover[2]): if int(i[2]) == int(co_rover[1]): fourth_line.append("/|") elif int(i[2]) > int(co_rover[1]): fourth_line.append("+|") for i in fifth_lineco: if i[2] == '-' and co_rover[2] == '-': if int(i[1]) == int(co_rover[1]): fifth_line.append(' |') elif int(i[1]) < int(co_rover[1]): fifth_line.append("-|") else: fifth_line.append('+|') if i[2] == '-' and co_rover[2] != '-': if int(co_rover[2]) == int(i[1]): fifth_line.append(' |') elif int(co_rover[2]) > int(i[1]): fifth_line.append("-|") else: if int(i[1]) == int(co_rover[1]): fifth_line.append(' |') elif int(i[1]) > int(co_rover[1]): fifth_line.append('+|') if i[2] != '-' and co_rover[2] == '-': if int(co_rover[1]) == int(i[2]): fifth_line.append('/|') elif int(co_rover[1]) < int(i[2]): fifth_line.append("+|") else: if int(i[1]) == int(co_rover[1]): fifth_line.append("'\'|") elif int(i[1]) < int(co_rover[1]): fifth_line.append('-|') if i[2] != '-' and co_rover[2] != '-': if int(i[2]) == int(co_rover[2]): fifth_line.append(' |') elif int(i[2]) < int(co_rover[2]): if int(co_rover[2]) == int(i[1]): fifth_line.append("'\'|") elif int(co_rover[2]) > int(i[1]): fifth_line.append('-|') elif int(i[2]) > int(co_rover[2]): if int(i[2]) == int(co_rover[1]): fifth_line.append("/|") elif int(i[2]) > int(co_rover[1]): fifth_line.append("+|") third_line2 = [] for n, i in enumerate(third_line): if n == 3: a = "H|" third_line2.append(a) else: third_line2.append(i) number1_line = "\n{}\n{}\n{}\n{}\n{}\n".format("".join(fifth_line), "".join(fourth_line), "".join(third_line2), "".join(sec_line), "".join(first_line)) return number1_line pass
class Rover: def __init__(self, no_name_level, battery): ##width height tile rover x y list, battery """ Initialises the rover """ self.no_name_level = no_name_level self.rover_map = [] self.battery = battery self.width = self.no_name_level[0] self.height = self.no_name_level[1] self.tile = self.no_name_level[2] self.x = self.no_name_level[3] self.y = self.no_name_level[4] self.rover_coordinates = [self.x, self.y] self.tiles = [] for i in self.tile: i = i[:-1] self.tiles.append(i) self.tiles_arranged = [ self.tiles[i:i + self.width] for i in range(0, len(self.tile), self.width) ] planet_co = [] for i in self.tiles_arranged: self.planet = [] for n in i: n = n.split(',') if len(n) != 3: a = ['-'] n += a self.planet.append(n) else: self.planet.append(n) planet_co.append(self.planet) self.planet_map = Planet(planet_co, self.width, self.height) self.coordinates = Planet(planet_co, self.width, self.height) self.coordinates = Planet.coordinates(self.coordinates) self.planet_map = Planet.coordinates_dict( self.planet_map ) #this is my map in dictionary format(coordinates : tile) pass def move(self, direction, cycles): #direction, cycles """ Moves the rover on the planet """ self.direction = direction self.cycles = cycles for i in self.coordinates: for n in i: if n == self.rover_coordinates: x_index = i.index(n) y_index = self.coordinates.index(i) number_shade = 0 step = 0 if self.direction == 'N': new_noname4 = [self.width, self.height, self.tile, self.x, self.y] data4 = next1(new_noname4, self.cycles, step, self.battery) #new_battery = data4[7] new_no_name_level = [ data4[0], data4[1], data4[2], data4[3], data4[4] ] return data4 if self.direction == 'S': new_noname4 = [self.width, self.height, self.tile, self.x, self.y] data4 = next2(new_noname4, self.cycles, step, self.battery) #new_battery = data4[7] new_no_name_level = [ data4[0], data4[1], data4[2], data4[3], data4[4] ] return data4 if self.direction == 'E': new_noname4 = [self.width, self.height, self.tile, self.x, self.y] data4 = next3(new_noname4, self.cycles, step, self.battery) #new_battery = data4[7] new_no_name_level = [ data4[0], data4[1], data4[2], data4[3], data4[4] ] return data4 if self.direction == 'W': new_noname4 = [self.width, self.height, self.tile, self.x, self.y] data4 = next4(new_noname4, self.cycles, step, self.battery) #new_battery = data4[7] new_no_name_level = [ data4[0], data4[1], data4[2], data4[3], data4[4] ] return data4 pass def wait(self, cycles): """ The rover will wait for the specified cycles """ pass def starting(self): found = False for i in self.rover_map: if i == self.rover_start: found == True if not found: self.rover_map.append(self.rover_start) explored = int((len(self.rover_map) / len(self.planet_map)) * 100) return explored
def scanning(no_name_level, battery): #width height tile rover x y list width = no_name_level[0] height = no_name_level[1] tile = no_name_level[2] x = no_name_level[3] y = no_name_level[4] tiles = [] for i in tile: i = i[:-1] tiles.append(i) tiles_arranged = [tiles[i:i + width] for i in range(0, len(tile), width)] planet_co = [] for i in tiles_arranged: planet = [] for n in i: n = n.split(',') if len(n) != 3: a = ['-'] n += a planet.append(n) else: planet.append(n) planet_co.append(planet) planet_map = Planet(planet_co, width, height) coordinates = Planet(planet_co, width, height) coordinates = Planet.coordinates(coordinates) planet_map = Planet.coordinates_dict( planet_map) #this is my map in dictionary format(coordinates : tile) for y1 in coordinates: if coordinates.index(y1) == y: y_value = coordinates.index(y1) for x1 in y1: if x1 == [x, y]: x_value = y1.index(x1) rover_d = coordinates[y_value][x_value] x1 = 0 x2 = 1 y1 = 0 y2 = 1 if x_value + 1 < len(coordinates[1]) - 1: x1 += x_value + 1 if y_value + 1 < len(coordinates) - 1: y1 += y_value + 1 if x_value + 1 < len(coordinates[1]) - 1: x2 += x_value + 1 if y_value + 1 < len(coordinates) - 1: y2 += y_value + 1 front2 = coordinates[y2][x_value] front1 = coordinates[y1][x_value] back1 = coordinates[y_value - 1][x_value] back2 = coordinates[y_value - 2][x_value] right1 = coordinates[y_value][x1] right2 = coordinates[y_value][x2] left1 = coordinates[y_value][x_value - 1] left2 = coordinates[y_value][x_value - 2] front1_right1 = coordinates[y1][x1] front1_right2 = coordinates[y1][x2] front2_right1 = coordinates[y2][x1] front2_right2 = coordinates[y2][x2] front1_left1 = coordinates[y1][x_value - 1] front1_left2 = coordinates[y1][x_value - 2] front2_left1 = coordinates[y2][x_value - 1] front2_left2 = coordinates[y2][x_value - 2] back1_right1 = coordinates[y_value - 1][x1] back1_right2 = coordinates[y_value - 1][x2] back2_right1 = coordinates[y_value - 2][x1] back2_right2 = coordinates[y_value - 2][x2] back1_left1 = coordinates[y_value - 1][x_value - 1] back1_left2 = coordinates[y_value - 1][x_value - 2] back2_left1 = coordinates[y_value - 2][x_value - 1] back2_left2 = coordinates[y_value - 2][x_value - 2] co_f2r2 = planet_map[str(front2_right2)] co_f2r1 = planet_map[str(front2_right1)] co_f2 = planet_map[str(front2)] co_f2l1 = planet_map[str(front2_left1)] co_f2l2 = planet_map[str(front2_left2)] co_f1r2 = planet_map[str(front1_right2)] co_f1r1 = planet_map[str(front1_right1)] co_f1 = planet_map[str(front1)] co_f1l1 = planet_map[str(front1_left1)] co_f1l2 = planet_map[str(front1_left2)] co_r2 = planet_map[str(right2)] co_r1 = planet_map[str(right1)] co_rover = planet_map[str(coordinates[y_value][x_value])] co_l1 = planet_map[str(left1)] co_l2 = planet_map[str(left2)] co_b1r2 = planet_map[str(back1_right2)] co_b1r1 = planet_map[str(back1_right1)] co_b1 = planet_map[str(back1)] co_b1l1 = planet_map[str(back1_left1)] co_b1l2 = planet_map[str(back1_left2)] co_b2r2 = planet_map[str(back2_right2)] co_b2r1 = planet_map[str(back2_right1)] co_b2 = planet_map[str(back2)] co_b2l1 = planet_map[str(back2_left1)] co_b2l2 = planet_map[str(back2_left2)] first_lineco = [co_f2l2, co_f2l1, co_f2, co_f2r1, co_f2r2] second_lineco = [co_f1l2, co_f1l1, co_f1, co_f1r1, co_f1r2] third_lineco = [co_l2, co_l1, co_rover, co_r1, co_r2] fourth_lineco = [co_b1l2, co_b1l1, co_b1, co_b1r1, co_b1r2] fifth_lineco = [co_b2l2, co_b2l1, co_b2, co_b2r1, co_b2r2] first_line = ['|'] sec_line = ['|'] third_line = ['|'] fourth_line = ['|'] fifth_line = ['|'] for i in first_lineco: if i[0] == 'shaded': first_line.append('#|') else: first_line.append(' |') for i in second_lineco: if i[0] == 'shaded': sec_line.append('#|') else: sec_line.append(' |') for i in third_lineco: if i[0] == 'shaded': third_line.append('#|') else: third_line.append(' |') for i in fourth_lineco: if i[0] == 'shaded': fourth_line.append('#|') else: fourth_line.append(' |') for i in fifth_lineco: if i[0] == 'shaded': fifth_line.append('#|') else: fifth_line.append(' |') third_line2 = [] for n, i in enumerate(third_line): if n == 3: a = "H|" third_line2.append(a) else: third_line2.append(i) number1_line = "\n{}\n{}\n{}\n{}\n{}\n".format("".join(fifth_line), "".join(fourth_line), "".join(third_line2), "".join(sec_line), "".join(first_line)) choice_change = False while not choice_change: choice = input() if choice == "FINISH" or choice == "finish": choice_change == True return game_finish(no_name_level, battery, name) elif choice == "STATS": print(stats(no_name_level, battery)) elif choice.startswith("SCAN"): try: choice = choice.split(" ") part2 = choice[1] except IndexError: print("\nCannot perform this command\n") return scanning(no_name_level, battery) if part2 == "shade": print(number1_line) elif part2 == "elevation": print(Tile.elevation(Tile(no_name_level))) else: print("\nCannot perform this command\n") return scanning(no_name_level, battery) elif choice.startswith("MOVE W ") or choice.startswith( "MOVE N ") or choice.startswith( "MOVE E ") or choice.startswith("MOVE S "): choice_change == False choice = choice.split(" ") part2 = choice[1] part3 = choice[2] try: int(part3) except ValueError: print("\nCannot perform this command\n") return scanning(no_name_level, battery) if part2 == "N" or part2 == "S" or part2 == "E" or part2 == "W": choice_change == False file = Rover(no_name_level, battery) data = file.move(part2, int(part3)) no_name_level2 = [data[0], data[1], data[2], data[3], data[4]] return scanning(no_name_level2, data[6]) else: print("\nCannot perform this command\n") return scanning(no_name_level, battery) return "a" pass