随机游走 - 任何方向

Random Walk - Any Direction

我是新手,但我正在尝试创建一个在 turtle 中随机游走的程序,但我不知道我是什么 doing.This 是我需要的程序创建 Requirements, and this is what I have so far Code。我开始有点迷茫,想知道我是否正朝着正确的方向前进,或者我是否需要放弃它并重新开始

谢谢,

import turtle
import random
import math

def start():
    myS = turtle.Screen()
    myS.title("Random Walk")
    border = 50
    myWin.setworldcoordinates(-border, -border, border, border)

def go(heading, step_size):
    turtle.setheading(heading)
    turtle.forward(step_size)

def random_walk(step_size, steps):
    angle = random.random() * 2 * math.pi
    x = 0
    y = 0
    x = x + math.cos(angle)
    y = y + math.sin(angle)
    coord = (x, y)
    for _ in range(steps):
        go(random.choice(coord), step_size)

if __name__ == '__main__':
    turtle.hideturtle()
    turtle.speed('fastest')
    random_walk(15, 1000)

因为这看起来像是一项家庭作业,所以我不想只修复您的错误,而是为您提供正确解决方案的指示。我也会在剧透后面隐藏提示...

  1. 如果你 运行 random_walk() 例如parameters random_walk(1, 1) 你会注意到行走的方向不会随机出现。使用某种形式的调试找出原因

    你的 go() 函数需要一个角度,看看 random.choice() 产生什么

  2. 如果你修复了问题1,你会发现海龟不会再随机画线了

    貌似每一步角度都没有变化。找到在每一步之前更新角度的解决方案!

  3. 角度单位:找出setheading()期望的单位:hint

  4. 你的要求提到直线距离和行驶距离的输出。这在某种程度上听起来像是您需要某种形式的计数变量(一个或多个)。提示:如果你仔细阅读 turtle 文档,你可能会发现一个函数可以使这个任务更容易

    阅读 turtle.position() 的文档。

您的 random_walk 函数可以处理很多事情;我认为它有点超过你的头脑。每一步应该做什么:

  • 计算02*math.pi之间的随机角度
  • 用给定的公式计算xy
  • 调用turtle.goto(x,y)去这些坐标

start 中还有一个小错字。

import turtle
import random
import math

def start():
    myS = turtle.Screen()
    myS.title("Random Walk")
    border = 50
    myS.setworldcoordinates(-border, -border, border, border)

def go(heading, step_size):
    turtle.setheading(heading)
    turtle.forward(step_size)

def random_walk(steps):
    x = 0
    y = 0
    for i in range(steps):
        angle = random.random()*2*math.pi
        x = x + math.cos(angle)
        y = y + math.sin(angle)
        turtle.goto(x,y)



if __name__=="__main__":
    start()
    random_walk(100)