绘制没有Turtle模块的乌龟路径

时间:2020-09-23 21:40:35

标签: python matplotlib

我正在尝试编写一个程序,该程序在给出字符串时会绘制“乌龟”的路径。我不能使用turtle模块。我们假设乌龟从(0,0)开始并指向 y

以下是四种可能的角色:

S:沿当前方向前进1;
R:向右转90度;
L:向左转90度;
T:禁用位移跟踪(如果当前处于活动状态),否则启用它。

例如,路径可以是:SSSRSSLSTSST

我看到两种解决此问题的方法。要么乌龟总是在旋转的平面中一直笔直移动。粒子可以“识别”其实际指向的位置,然后左右移动。

在两种情况下,我都被卡住了。

这是我做的“代码”:

import matplotlib.pyplot as plt


pathUser=input('Write a path')           #User enter a path
path=list(pathUser)                      #Convert string to a matrix

x=0
y=0

for p in path:                           #Check  the letters one-by-one

    if p == "S":
        y=y+1                            #Moves straight
        plt.plot(x,y,'k^')       
  
    elif p == "R":
        
    elif p == "L":
        
    elif p == "T":   
            
plt.show()

这是一个好的开始吗?我能做的是旋转点,而不旋转轴。 有人可以帮我弄清楚该放入R和L零件吗? 预先感谢您的时间和帮助。

1 个答案:

答案 0 :(得分:0)

对于乌龟图形,我们需要存储和更新方向和位置。 这是一个简单的方法:

  1. 初始化位置和方向
  2. 如果S:更改位置acc。向方向
  3. 如果R:将方向改变-90度 如果L:将方向改变+90度

这里是示例代码:

import matplotlib.pyplot as plt


direction = 90
track     = True
move_dir  = {  0: [ 1,  0],
              90: [ 0,  1],
             180: [-1,  0],
             270: [ 0, -1]}

x, y = [0, 0]
prev_x, prev_y = x, y
path = input('write a path: \n>>>')


for p in path:
    if p == 'S':
        prev_x, prev_y = x, y
        x += move_dir[direction][0]
        y += move_dir[direction][1]
        if track:
            plt.plot([prev_x, x], [prev_y, y], color='red', marker='.', markersize=10)
    
    elif p == 'L':
        direction = (direction + 90) % 360

    elif p == 'R':
        if direction == 0:
            direction = 270
        else:
            direction = direction - 90
    
    else:
        track = not track


plt.grid()
plt.show()

示例测试用例:

write a path:
>>>SSSRSSLSTSSTS

输出:

enter image description here