我正在尝试编写一个程序,该程序在给出字符串时会绘制“乌龟”的路径。我不能使用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零件吗? 预先感谢您的时间和帮助。
答案 0 :(得分:0)
对于乌龟图形,我们需要存储和更新方向和位置。 这是一个简单的方法:
这里是示例代码:
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
输出: