首页 > 解决方案 > 如何使用python在盒子里移动机器人?

问题描述

我有一个 8x8 尺寸的盒子。

它有一些线表示机器人应该遵循的理想路径。

在该区域周围创建一个边界框,以便机器人无法逃脱。

伪代码

import math
import random
import pygame
direction = {'up': (0, -1), 'down': (0, 1), 'left': (-1, 0), 'right': (1, 0)}
direction = direction['up']                   # set a direction

标签: pythonpygameturtle-graphics

解决方案


你找到了一个有趣的地方去探索!您的问题遗漏了很多细节,因此我将尝试就解决这些一般问题提供一些建议。

  • 您正在使用字符网格。采用 '。' 表示空仓;使用空格会导致更长的调试时间。
  • 你应该把你的网格变量想象成grid[line][col]. 如果您尝试使用[y][x], [x][y][row][col]那么您会感到困惑并为自己制造错误。
  • 用许多小步骤制作这个程序。在每个步骤中,您都应该能够运行它并看到一些输出。您可以执行以下步骤:
    • make_blank_gridprint_grid。您应该能够打印一个空网格。
    • 编写make_grid_from_stringget_string_from_grid以便您可以传递一个长字符串来制作不同的网格。将所有这些放在一个 Grid 类中。
    • 启动您的机器人类,以便您的机器人知道自己的行和列。写dump_robot出来把这些打印出来。
    • 开始一个具有机器人和网格的世界级。这个类应该有办法在网格上打印机器人(dump_world)。
    • 添加一个愚蠢的(无错误检查)move(delta_line, delta_row)功能,制作一个简单的循环让您的机器人四处移动(但破坏墙壁)。
    • 现在,在网格中实现墙并添加can_move()到您的机器人中。通过重新运行循环,如果路径中有墙壁,机器人应该拒绝移动。
    • 一旦你掌握了所有这些,你就可以开始添加迷宫、解决迷宫、寻找路径等。如果任何步骤开始变得令人沮丧,就把它分解。
  • 让逻辑首先起作用。我建议使用 I/O 中的简单打印和输入,直到您的 Robot、Grid 和 World 类正常工作。
  • 正确初始化您的网格。那就是:grid = [['.' for col in range(COLS)] for line in range(LINES)]不是grid = [' ' * COLS]*LINES

继续努力。继续黑客攻击!记笔记。


推荐阅读