def play (): grid = [] util.create_grid (grid) add_block (grid) add_block (grid) won_message = False while (True): util.print_grid (grid) key = input ("Enter a direction:\n") if (key in ['x', 'u', 'd', 'l', 'r']): saved_grid = util.copy_grid (grid) if (key == 'x'): return elif (key == 'u'): push.push_up (grid) elif (key == 'd'): push.push_down (grid) elif (key == 'r'): push.push_right (grid) elif (key == 'l'): push.push_left (grid) if util.check_lost (grid): print ("Game Over!") return elif util.check_won (grid) and not won_message: print ("Won!") won_message = True if not util.grid_equal (saved_grid, grid): add_block (grid)
def push_down (grid): """merge grid values downwards""" new_grid=[] new_grid=util.create_grid(new_grid) while grid!=new_grid: new_grid=util.copy_grid(grid) for row in range(3,0,-1): for col in range(4): if grid[row][col]==0: grid[row][col]=grid[row-1][col] grid[row-1][col]=0 for row in range(3,0,-1): for col in range(4): if grid[row][col]==grid[row-1][col]: grid[row][col]= grid[row][col]+grid[row-1][col] grid[row-1][col]=0 for row in range(3,0,-1): for col in range(4): if grid[row][col]==0: grid[row][col]=grid[row-1][col] grid[row-1][col]=0 return grid
def push_down (grid): """merge grid values downwards""" grid_copy=[] grid_copy=util.create_grid(grid_copy) while grid!=grid_copy: grid_copy=util.copy_grid(grid) for y in range(3,0,-1): for x in range(4): if grid[y][x]==0: grid[y][x]=grid[y-1][x] grid[y-1][x]=0 for x in range(4): if grid[y][x]==grid[y-1][x]: grid[y][x]= grid[y][x]+grid[y-1][x] grid[y-1][x]=0 for y in range(3,0,-1): for x in range(4): if grid[y][x]==0: grid[y][x]=grid[y-1][x] grid[y-1][x]=0 return grid
def push_up (grid): """merge grid values upwards""" grid_copy=[]#grid_copy empty list grid_copy=util.create_grid(grid_copy) while grid!=grid_copy: grid_copy=util.copy_grid(grid)#this calls util and creates a grid copy for y in range(3):#iterate throught the list in grid for x in range(4): if grid[y][x]==0:#if the number is 0 we move the value to the right one unit grid[y][x]=grid[y+1][x] grid[y+1][x]=0 #zero value is then put in. for y in range(3): for x in range(4): if grid[y][x]==grid[y+1][x]: grid[y][x]= grid[y][x]+grid[y+1][x] grid[y+1][x]=0 for y in range(3): for x in range(4): if grid[y][x]==0: grid[y][x]=grid[y+1][x] grid[y+1][x]=0 return grid
def push_up(grid): # Merge grid values upwards (i.e. copy the values into an array, manipulate the array and replace the origional array with the new array) old_grid = util.copy_grid(grid) # Create a copy of the origional grid while len(grid) > 0: del grid[0] util.create_grid(grid) # Grid with 0's for col in range(4): pos = 0 merge = 0 for row in range(4): if old_grid[row][col] == grid[merge][col]: grid[merge][col] += old_grid[row][col] merge += 1 else: grid[pos][col] = old_grid[row][col] pos += 1 if pos-merge >= 2: merge += 1
def push_left(grid): # Merge grid values right old_grid = util.copy_grid(grid) # Create a copy of the origional grid while len(grid) > 0: del grid[0] util.create_grid(grid) # Grid with 0's for row in range(4): pos = 0 merge = 0 for col in range(4): if old_grid[row][col] != 0: if old_grid[row][col] == grid[row][merge]: grid[row][merge] += old_grid[row][col] merge += 1 else: grid[row][pos] = old_grid[row][col] pos += 1 if pos - merge >= 2: merge += 1
def push_right(grid): # Merge grid values left old_grid = util.copy_grid(grid) # Create a copy of the origional grid while len(grid) > 0: del grid[0] util.create_grid(grid) # Grid with 0's for row in range(4): pos = 3 merge = 3 for col in range(3,-1,-1): if old_grid[row][col] != 0: if old_grid[row][col] == grid[row][merge]: grid[row][merge] += old_grid[row][col] merge -= 1 else: grid[row][pos] = old_grid[row][col] pos -= 1 if merge - pos >= 2: merge -= 1
def push_up(grid): """Merge numbers upward""" oldgrid = util.copy_grid(grid) while len(grid)> 0: del grid[0] util.create_grid(grid) for column in range(4): position = 0 merge = 0 for row in range(4): if oldgrid[row][column] != 0: if oldgrid[row][column] == grid[merge][column]: grid[merge][column] += oldgrid[row][column] merge += 1 else: grid[position][column] = oldgrid[row][column] position += 1 if position-merge >= 2: merge += 1
def push_right(grid): """Merge numbers to the right""" oldgrid = util.copy_grid(grid) while len(grid)> 0: del grid[0] util.create_grid(grid) for row in range(4): position = 3 merge = 3 for column in range(3,-1,-1): if oldgrid[row][column] != 0: if oldgrid[row][column] == grid[row][merge]: grid[row][merge] += oldgrid[row][column] merge -= 1 else: grid[row][position] = oldgrid[row][column] position -= 1 if merge - position >= 2: merge -= 1
def play (): """generate grid and play game interactively""" # create grid grid = [] util.create_grid (grid) # add 2 starting random numbers add_block (grid) add_block (grid) won_message = False while (True): util.print_grid (grid) key = input ("Enter a direction:\n") if (key in ['x', 'u', 'd', 'l', 'r']): # make a copy of the grid saved_grid = util.copy_grid (grid) if (key == 'x'): # quit the game return # manipulate the grid depending on input elif (key == 'u'): push.push_up (grid) elif (key == 'd'): push.push_down (grid) elif (key == 'r'): push.push_right (grid) elif (key == 'l'): #print(grid) push.push_left (grid) #print(grid) # check for a grid with no more gaps or legal moves if util.check_lost (grid): print ("Game Over!") return # check for a grid with the final number elif util.check_won (grid) and not won_message: print ("Won!") won_message = True # finally add a random block if the grid has changed if not util.grid_equal (saved_grid, grid): add_block (grid)
def play(): """generate grid and play game interactively""" # create grid grid = [] util.create_grid(grid) # add 2 starting random numbers add_block(grid) add_block(grid) won_message = False while (True): util.print_grid(grid) key = input("Enter a direction:\n") if (key in ['x', 'u', 'd', 'l', 'r']): # make a copy of the grid saved_grid = util.copy_grid(grid) if (key == 'x'): # quit the game return # manipulate the grid depending on input elif (key == 'u'): push.push_up(grid) elif (key == 'd'): push.push_down(grid) elif (key == 'r'): push.push_right(grid) elif (key == 'l'): push.push_left(grid) # check for a grid with no more gaps or legal moves if util.check_lost(grid): print("Game Over!") return # check for a grid with the final number elif util.check_won(grid) and not won_message: print("Won!") won_message = True # finally add a random block if the grid has changed if not util.grid_equal(saved_grid, grid): add_block(grid)
def play (): # makes the game and plays # makes grid grid = [] util.create_grid (grid) # adds 2 random numbers to start with add_block (grid) add_block (grid) won_message = False while (True): util.print_grid (grid) key = input ("Enter a direction:\n") if (key in ['x', 'u', 'd', 'l', 'r']): # copies the grid saved_grid = util.copy_grid (grid) if (key == 'x'): # end the game return # edit the grid depending on the input elif (key == 'u'): push.push_up (grid) elif (key == 'd'): push.push_down (grid) elif (key == 'r'): push.push_right (grid) elif (key == 'l'): push.push_left (grid) # check for a grid with no more gaps or legal moves if util.check_lost (grid): print ("Game Over!") return # check for a grid with the last number elif util.check_won (grid) and not won_message: print ("Won!") won_message = True # lastly add a random block if the grid has changed if not util.grid_equal (saved_grid, grid): add_block (grid)
def play(): grid = [] # CREATE THE GRID util.create_grid(grid) # PLACE THE TWO NUMBERS ON THE BOARD util.generate_next_position(grid) while (True): # Clear the terminal so that the game seems more interactive os.system('cls' if os.name == 'nt' else 'clear') # PRINT THE CURRENT GRID util.print_grid(grid) # set 'key' to a user input which represents the move they would like to do key = input("Enter a direction:\n") # check if 'key' is one of the available options if (key in ['x', 'u', 'd', 'l', 'r']): if (key == 'x'): # quit the game return # manipulate the grid depending on input elif (key == 'u'): grid = push.push_up(grid) elif (key == 'd'): grid = push.push_down(grid) elif (key == 'r'): grid = push.push_right(grid) elif (key == 'l'): grid = push.push_left(grid) print(grid) # check for a grid with no more gaps or legal moves util.check_for_loss(grid) util.check_for_win(grid)
def push_right (grid): """merge grid values right""" grid_copy=[] grid_copy=util.create_grid(grid_copy) while grid!=grid_copy: grid_copy=util.copy_grid(grid) for y in range(4): for x in range(3,0,-1): if grid[y][x]==0: grid[y][x]=grid[y][x-1] grid[y][x-1]=0 for y in range(4): for x in range(3,0,-1): if grid[y][x]==grid[y][x-1]: grid[y][x]= grid[y][x]+grid[y][x-1] grid[y][x-1]=0 for y in range(4): for x in range(3,0,-1): if grid[y][x]==0: grid[y][x]=grid[y][x-1] grid[y][x-1]=0 return grid
def push_right (grid): """merge grid values right""" new_grid=[] new_grid=util.create_grid(new_grid) while grid!=new_grid: new_grid=util.copy_grid(grid) for row in range(4): for col in range(3,0,-1): if grid[row][col]==0: grid[row][col]=grid[row][col-1] grid[row][col-1]=0 for row in range(4): for col in range(3,0,-1): if grid[row][col]==grid[row][col-1]: grid[row][col]= grid[row][col]+grid[row][col-1] grid[row][col-1]=0 for row in range(4): for col in range(3,0,-1): if grid[row][col]==0: grid[row][col]=grid[row][col-1] grid[row][col-1]=0 return grid
def play(agent='human', record=True, filename='human_games.dat', delay=1): """generate grid and play game interactively""" # create grid grid = [] util.create_grid(grid) # add 2 starting random numbers add_block(grid) add_block(grid) won_message = False score = 0 trajectory = [] saved_grid = [[]] try: while (True): util.print_grid(grid) if agent == HUMAN: key = input("Enter a direction:\n") if (key == 'x'): # quit the game break try: key = util.action_num_to_letter(int(key)) except: continue elif agent == SVM or agent == NN: if util.grid_equal(saved_grid, grid): #previous action not allowed #use pior agent since model is deterministic given the same input key = agents.random_agent_with_prior() print("Prior") else: print("Model") model_agent = agents.Model() model_agent.load_model(filename="models/" + agent + ".joblib") key = model_agent.predict([np.array(grid).flatten()]) key = util.action_num_to_letter(int(key[0])) print(key) elif agent == RANDOM: key = agents.random_agent() elif agent == RANDOM_WITH_PRIOR: key = agents.random_agent_with_prior() if (key in ['u', 'd', 'l', 'r']): # make a copy of the grid saved_grid = util.copy_grid(grid) # manipulate the grid depending on input if (key == 'u'): _, add_score = push.push_up(grid) elif (key == 'd'): _, add_score = push.push_down(grid) elif (key == 'r'): _, add_score = push.push_right(grid) elif (key == 'l'): _, add_score = push.push_left(grid) score += add_score print("Score: ", score) if record and key in 'ludr': data_instance = np.array(saved_grid).flatten() data_instance = np.append( data_instance, [util.action_letter_to_num(key), add_score, score]) data_instance = np.append(data_instance, np.array(grid).flatten()) trajectory.append(data_instance) # check for a grid with no more gaps or legal moves if util.check_lost(grid): print("Game Over!") break # check for a grid with the final number elif util.check_won(grid) and not won_message: print("Won!") won_message = True # finally add a random block if the grid has changed if not util.grid_equal(saved_grid, grid): add_block(grid) if agent != HUMAN: time.sleep(delay) #in seconds finally: if record: util.save_game(trajectory, filename="games/" + agent.lower() + "/" + agent.lower())
def run_test (test): if test == 0: grid = [] util.create_grid (grid) print(grid) print (len (grid)) print (len (grid[0])) print (len (grid[1])) print (len (grid[2])) print (len (grid[3])) print (grid[0][0]) print (grid[1][2]) print (grid[2][1]) print (grid[3][3]) elif test == 1: grid = [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]] util.print_grid (grid) elif test == 2: grid = [[2,0,2,0],[0,4,0,8],[0,16,0,128],[2,2,2,2]] util.print_grid (grid) elif test == 3: grid = [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]] print (util.check_lost (grid)) elif test == 4: grid = [[2,0,2,0],[0,4,0,8],[0,16,0,128],[2,2,2,2]] print (util.check_lost (grid)) elif test == 5: grid = [[2,2,2,2],[2,2,2,2],[2,2,2,2],[2,2,2,2]] print (util.check_lost (grid)) elif test == 6: grid = [[4,16,2,4],[2,4,16,2],[2,4,8,4],[4,8,4,2]] print (util.check_lost (grid)) elif test == 7: grid = [[4,2,8,2],[2,8,16,8],[16,32,8,4],[4,8,4,2]] print (util.check_lost (grid)) elif test == 8: grid = [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]] print (util.check_won (grid)) elif test == 9: grid = [[2,0,2,0],[0,4,0,8],[0,16,0,128],[2,2,2,2]] print (util.check_won (grid)) elif test == 10: grid = [[2,2,2,2],[2,2,2,2],[2,2,2,2],[2,2,2,2]] print (util.check_won (grid)) elif test == 11: grid = [[4,16,2,4],[2,4,16,2],[2,4,8,4],[4,8,4,2]] print (util.check_won (grid)) elif test == 12: grid = [[2,32,2,4],[4,2,16,2],[8,0,8,4],[2,0,4,2]] print (util.check_won (grid)) elif test == 13: grid = [[2,2,8,0],[0,8,16,0],[16,32,8,8],[2,8,4,4]] print (util.check_won (grid)) elif test == 14: grid = [[64,32,32,2],[8,4,2,0],[4,2,0,0],[2,0,0,0]] print (util.check_won (grid)) elif test == 15: grid = [[64,32,32,2],[8,4,2,0],[4,2,0,0],[2,0,0,0]] print (util.check_won (grid)) elif test == 16: grid = [[128,4,0,0],[8,4,2,0],[4,2,0,2],[2,0,0,0]] print (util.check_won (grid)) elif test == 17: grid = [[4,2,8,2],[2,8,16,8],[16,32,8,4],[4,8,4,2]] test_grid = util.copy_grid (grid) print (grid[0][0],test_grid[0][0]) print (grid[1][2],test_grid[1][2]) print (grid[3][3],test_grid[3][3]) grid[0][0] = 64 grid[1][2] = 64 grid[3][3] = 64 print (grid[0][0],test_grid[0][0]) print (grid[1][2],test_grid[1][2]) print (grid[3][3],test_grid[3][3]) elif test == 18: grid1 = [[4,2,8,2],[2,8,16,8],[16,32,8,4],[4,8,4,2]] grid2 = [[4,2,8,2],[2,8,16,8],[16,32,8,4],[4,8,4,2]] print (util.grid_equal (grid1, grid2)) elif test == 19: grid1 = [[4,2,8,2],[2,8,16,8],[16,32,8,4],[4,8,4,2]] grid2 = [[4,2,8,2],[2,8,16,4],[16,32,8,4],[4,8,4,2]] print (util.grid_equal (grid1, grid2)) elif test == 20: grid1 = [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]] grid2 = [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]] print (util.grid_equal (grid1, grid2)) elif test == 21: grid1 = [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]] grid2 = [[2,4,8,16],[32,64,128,256],[512,1024,2048,4096],[8192,16384,32768,65536]] print (util.grid_equal (grid1, grid2)) elif test == 22: grid1 = [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]] grid2 = [[2,2,2,2],[2,2,2,2],[2,2,2,2],[2,2,2,2]] print (util.grid_equal (grid1, grid2))
def play(): """generate grid and play game interactively""" # create grid grid = [] util.create_grid(grid) # add 2 starting random numbers add_block(grid) add_block(grid) # initially set 'won_message' to False. 'won_message' is used to determine if the user has been alerted that they won as to not keep printing the winning message if they continue playing. won_message = False # start while (True): # Clear the terminal so that the game seems more interactive os.system('cls' if os.name == 'nt' else 'clear') # print the current state of the grid util.print_grid(grid) # set 'key' to a user input which represents the move they would like to do key = input("Enter a direction:\n") # check if 'key' is one of the available options if (key in ['x', 'u', 'd', 'l', 'r']): # make a copy of the grid saved_grid = util.copy_grid(grid) if (key == 'x'): # quit the game return # manipulate the grid depending on input elif (key == 'u'): push.push_up(grid) elif (key == 'd'): push.push_down(grid) elif (key == 'r'): push.push_right(grid) elif (key == 'l'): push.push_left(grid) # check for a grid with no more gaps or legal moves if util.check_lost(grid): print("Game Over!") return # check for a grid with the final number elif not won_message and util.check_won(grid): print("Won!") won_message = True # Clear the terminal so that the game seems more interactive os.system('cls' if os.name == 'nt' else 'clear') # print the current state of the grid util.print_grid(grid) if input('Would you like to keep playing? (Y)es or (N)o: ' ).lower() == 'n': print('Game Over!') return # finally add a random block if the grid has changed if not util.grid_equal(saved_grid, grid): add_block(grid) # check for a grid with no more gaps or legal moves if util.check_lost(grid): # Clear the terminal so that the game seems more interactive os.system('cls' if os.name == 'nt' else 'clear') # print last state of grid util.print_grid(grid) print("Game Over!") return
def run_test (test): if test == 0: grid = [] util.create_grid (grid) print (len (grid)) print (len (grid[0])) print (len (grid[1])) print (len (grid[2])) print (len (grid[3])) print (grid[0][0]) print (grid[1][2]) print (grid[2][1]) print (grid[3][3]) elif test == 1: grid = [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]] util.print_grid (grid) elif test == 2: grid = [[2,0,2,0],[0,4,0,8],[0,16,0,128],[2,2,2,2]] util.print_grid (grid) elif test == 3: grid = [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]] print (util.check_lost (grid)) elif test == 4: grid = [[2,0,2,0],[0,4,0,8],[0,16,0,128],[2,2,2,2]] print (util.check_lost (grid)) elif test == 5: grid = [[2,2,2,2],[2,2,2,2],[2,2,2,2],[2,2,2,2]] print (util.check_lost (grid)) elif test == 6: grid = [[4,16,2,4],[2,4,16,2],[2,4,8,4],[4,8,4,2]] print (util.check_lost (grid)) elif test == 7: grid = [[4,2,8,2],[2,8,16,8],[16,32,8,4],[4,8,4,2]] print (util.check_lost (grid)) elif test == 8: grid = [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]] print (util.check_won (grid)) elif test == 9: grid = [[2,0,2,0],[0,4,0,8],[0,16,0,128],[2,2,2,2]] print (util.check_won (grid)) elif test == 10: grid = [[2,2,2,2],[2,2,2,2],[2,2,2,2],[2,2,2,2]] print (util.check_won (grid)) elif test == 11: grid = [[4,16,2,4],[2,4,16,2],[2,4,8,4],[4,8,4,2]] print (util.check_won (grid)) elif test == 12: grid = [[2,32,2,4],[4,2,16,2],[8,0,8,4],[2,0,4,2]] print (util.check_won (grid)) elif test == 13: grid = [[2,2,8,0],[0,8,16,0],[16,32,8,8],[2,8,4,4]] print (util.check_won (grid)) elif test == 14: grid = [[64,32,32,2],[8,4,2,0],[4,2,0,0],[2,0,0,0]] print (util.check_won (grid)) elif test == 15: grid = [[64,32,32,2],[8,4,2,0],[4,2,0,0],[2,0,0,0]] print (util.check_won (grid)) elif test == 16: grid = [[128,4,0,0],[8,4,2,0],[4,2,0,2],[2,0,0,0]] print (util.check_won (grid)) elif test == 17: grid = [[4,2,8,2],[2,8,16,8],[16,32,8,4],[4,8,4,2]] test_grid = util.copy_grid (grid) print (grid[0][0],test_grid[0][0]) print (grid[1][2],test_grid[1][2]) print (grid[3][3],test_grid[3][3]) grid[0][0] = 64 grid[1][2] = 64 grid[3][3] = 64 print (grid[0][0],test_grid[0][0]) print (grid[1][2],test_grid[1][2]) print (grid[3][3],test_grid[3][3]) elif test == 18: grid1 = [[4,2,8,2],[2,8,16,8],[16,32,8,4],[4,8,4,2]] grid2 = [[4,2,8,2],[2,8,16,8],[16,32,8,4],[4,8,4,2]] print (util.grid_equal (grid1, grid2)) elif test == 19: grid1 = [[4,2,8,2],[2,8,16,8],[16,32,8,4],[4,8,4,2]] grid2 = [[4,2,8,2],[2,8,16,4],[16,32,8,4],[4,8,4,2]] print (util.grid_equal (grid1, grid2)) elif test == 20: grid1 = [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]] grid2 = [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]] print (util.grid_equal (grid1, grid2)) elif test == 21: grid1 = [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]] grid2 = [[2,4,8,16],[32,64,128,256],[512,1024,2048,4096],[8192,16384,32768,65536]] print (util.grid_equal (grid1, grid2)) elif test == 22: grid1 = [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]] grid2 = [[2,2,2,2],[2,2,2,2],[2,2,2,2],[2,2,2,2]] print (util.grid_equal (grid1, grid2))
def start(): grid = create_grid(GRID_SIZE) prey_pos = (231, 201) hunter_pos = (1, 1) hunter_dir = (1, 1) prey = RandomPrey(prey_pos, hunter_pos, hunter_dir, grid) is_prey_move = False walls_placed = 0 hunter = HalfHunter(hunter_pos, hunter_dir, prey_pos, MAX_WALLS) hunter.set_grid(grid) turn = 0 cooldown = WALL_COOLDOWN while True: log("Turn:", turn) log("Hunter Position", hunter.position) log("Prey Position", prey.position) walls_to_remove, new_wall = hunter.placeAndRemoveWall() if len(walls_to_remove) > 0: for wall in walls_to_remove: wall_start_pos, wall_direc, wall_length = wall grid = remove_wall(wall_start_pos, wall_direc, wall_length, grid) walls_placed -= len(walls_to_remove) if cooldown == 0: if new_wall != () and walls_placed < MAX_WALLS: wall_start_pos, wall_direc, wall_length = new_wall new_grid, valid = place_wall(hunter_pos, prey_pos, wall_start_pos, wall_direc, wall_length, grid) if valid: walls_placed += 1 walls.append((wall_start_pos, wall_direc, wall_length)) grid = new_grid log(f"Hunter places wall starting at {wall_start_pos} of length {wall_length} in direction {wall_direc}") cooldown = WALL_COOLDOWN elif cooldown > 0: cooldown -= 1 hunter_dir = hunter.direction log("Hunter moves in direction:", hunter_dir) hunter_pos, new_hunter_dir = get_new_pos(hunter_pos, hunter_dir, grid) log("Hunter new position:", hunter_pos) hunter_dir = new_hunter_dir prey.receiveHunterPosition(hunter_pos, hunter_dir) hunter.updatePosition(hunter_pos, hunter_dir) if is_prey_move: prey_dir = prey.getMove() log("Prey moves in direction:", prey_dir) prey_pos, prey_dir = get_new_pos(prey.position, prey_dir, grid) log("Prey new position:", prey_pos) hunter.receivePreyPosition(prey_pos) prey.updatePosition(prey_pos) if compute_distance(hunter_pos, prey_pos) <= 4: break turn += 1 log() if is_prey_move: is_prey_move = False else: is_prey_move = True print("Hunter caught prey in", turn, "turns")
def run_test (test): if test == 0: grid = [] util.create_grid (grid) print (len (grid)) print (len (grid[0])) print (len (grid[1])) print (len (grid[2])) print (len (grid[3])) print (grid[0][0]) print (grid[1][2]) print (grid[2][1]) print (grid[3][3]) elif test == 1: grid = [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]] util.print_grid (grid) elif test == 2: grid = [[2 File "/home/rngkum001/python/util.py", line 21 print("|") ^ IndentationError: unindent does not match any outer indentation level rngkum001@sl-dual-78:~/python$ python3 question2.py > output.txt Traceback (most recent call last): ,0,2,0],[0,4,0,8],[0,16,0,128],[2,2,2,2]] util.print_grid (grid) elif test == 3: grid = [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]] print (util.check_lost (grid)) elif test == 4: grid = [[2,0,2,0],[0,4,0,8],[0,16,0,128],[2,2,2,2]] print (util.check_lost (grid)) elif test == 5: grid = [[2,2,2,2],[2,2,2,2],[2,2,2,2],[2,2,2,2]] print (util.check_lost (grid)) elif test == 6: grid = [[4,16,2,4],[2,4,16,2],[2,4,8,4],[4,8,4,2]] print (util.check_lost (grid)) elif test == 7: grid = [[4,2,8,2],[2,8,16,8],[16,32,8,4],[4,8,4,2]] print (util.check_lost (grid)) elif test == 8: grid = [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]] print (util.check_won (grid)) elif test == 9: grid = [[2,0,2,0],[0,4,0,8],[0,16,0,128],[2,2,2,2]] print (util.check_won (grid)) elif test == 10: grid = [[2,2,2,2],[2,2,2,2],[2,2,2,2],[2,2,2,2]] print (util.check_won (grid)) elif test == 11: grid = [[4,16,2,4],[2,4,16,2],[2,4,8,4],[4,8,4,2]] print (util.check_won (grid)) elif test == 12: grid = [[2,32,2,4],[4,2,16,2],[8,0,8,4],[2,0,4,2]] print (util.check_won (grid)) elif test == 13: grid = [[2,2,8,0],[0,8,16,0],[16,32,8,8],[2,8,4,4]] print (util.check_won (grid)) elif test == 14: grid = [[64,32,32,2],[8,4,2,0],[4,2,0,0],[2,0,0,0]] print (util.check_won (grid)) elif test == 15: grid = [[64,32,32,2],[8,4,2,0],[4,2,0,0],[2,0,0,0]] print (util.check_won (grid)) elif test == 16: grid = [[128,4,0,0],[8,4,2,0],[4,2,0,2],[2,0,0,0]] print (util.check_won (grid)) elif test == 17: grid = [[4,2,8,2],[2,8,16,8],[16,32,8,4],[4,8,4,2]] test_grid = util.copy_grid (grid) print (grid[0][0],test_grid[0][0]) print (grid[1][2],test_grid[1][2]) print (grid[3][3],test_grid[3][3]) grid[0][0] = 64 grid[1][2] = 64 grid[3][3] = 64 print (grid[0][0],test_grid[0][0]) print (grid[1][2],test_grid[1][2]) print (grid[3][3],test_grid[3][3]) elif test == 18: grid1 = [[4,2,8,2],[2,8,16,8],[16,32,8,4],[4,8,4,2]] grid2 = [[4,2,8,2],[2,8,16,8],[16,32,8,4],[4,8,4,2]] print (util.grid_equal (grid1, grid2)) elif test == 19: grid1 = [[4,2,8,2],[2,8,16,8],[16,32,8,4],[4,8,4,2]] grid2 = [[4,2,8,2],[2,8,16,4],[16,32,8,4],[4,8,4,2]] print (util.grid_equal (grid1, grid2)) elif test == 20: grid1 = [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]] grid2 = [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]] print (util.grid_equal (grid1, grid2)) elif test == 21: grid1 = [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]] grid2 = [[2,4,8,16],[32,64,128,256],[512,1024,2048,4096],[8192,16384,32768,65536]] print (util.grid_equal (grid1, grid2)) elif test == 22: grid1 = [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]] grid2 = [[2,2,2,2],[2,2,2,2],[2,2,2,2],[2,2,2,2]] print (util.grid_equal (grid1, grid2))