def run_game(): snake_coords = [(1, 2), (1, 1)] apple = get_apple_coord(snake_coords) score = 0 canvas.draw_bg() canvas.draw_grid() canvas.draw_cell_line(snake_coords, canvas.COLOR.DARK_GRAY.value, canvas.COLOR.DARK_GREEN.value) canvas.draw_cell(apple, canvas.COLOR.RED.value) canvas.update() while True: n_coord = next_coord(snake_coords, apple) if not n_coord: print("Game Over! STUCK") return score += move(snake_coords, n_coord, apple, draw=True) if not valid_coord(snake_coords[0], snake_coords[1:]): print("Game Over!") valid_coord(snake_coords[0], snake_coords[1:]) return if len(snake_coords) == TOTAL: print("Game KO!") canvas.draw_grid() return if tools.cell_equal(n_coord, apple): apple = get_apple_coord(snake_coords) canvas.draw_cell(apple, canvas.COLOR.RED.value) canvas.draw_grid()
def move(snake_coords, n_coord, apple, draw=False): """ 移动一个格子 :param snake_coords: snake_coords :param n_coord: 移动到此格子 :param apple: apple :param draw: 是否更新canvas """ snake_coords.insert(0, n_coord) tail = None if not tools.cell_equal(n_coord, apple): score = 0 tail = snake_coords.pop() else: score = 1 if draw: if tail: canvas.draw_cells([tail, apple], canvas.COLOR.BG_COLOR.value) canvas.draw_cell_line(snake_coords, canvas.COLOR.DARK_GRAY.value, canvas.COLOR.DARK_GREEN.value) return score
if __name__ == "__main__": canvas.init("BFS") canvas.draw_bg() canvas.draw_grid() start = (6, 5) end = (12, 10) obstacles = [] for x in range(4, 10): obstacles.append((x, 3)) for x in range(4, 20): obstacles.append((x, 12)) for y in range(2, 14): obstacles.append((10, y)) for y in range(2, 16): obstacles.append((17, y)) canvas.draw_cell(start, canvas.COLOR.GREEN.value) canvas.draw_cell(end, canvas.COLOR.RED.value) canvas.draw_cells(obstacles, canvas.COLOR.WHITE.value) canvas.update() input("Press <Enter> to start!") path = bfs(start, end, obstacles, show_details=True) canvas.draw_cell_line(path[:-1], canvas.COLOR.DARK_GRAY.value, canvas.COLOR.RED.value) canvas.update() input("Press <Enter> to close!")