任意方向随机行走

2024-05-23 20:30:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我是新手,但我正在尝试创建一个程序,在turtle中随机走动,我不知道我是什么做。这个是我需要创建Requirements的程序,这是到目前为止{a2}所拥有的程序。我开始有点迷路了,我想知道我是朝着正确的方向前进,还是需要放弃它重新开始

谢谢

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)

Tags: import程序gosizedefsteprandommath
2条回答

因为这看起来像是一个家庭作业,我不想只是纠正你的错误,而是给你指出正确的解决方法。我也会在破坏者背后隐藏暗示。。。在

  1. 如果使用参数random_walk()运行random_walk(1, 1),则会注意到漫游的方向不会随机出现。使用某种形式的调试来找出原因

    your go() functions expects an angle, look at what random.choice() produces

  2. 如果你解决了第一个问题。你会看到乌龟再也不会随意画线了

    looks like the angle does not change every step. find a solution that updates the angle before each step!

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

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

    read the documentation for turtle.position().

您的random_walk函数对许多事情都有作用;我认为它在您的头上增长了一点。每一步应该做什么:

  • 计算02*math.pi之间的随机角度
  • 用给定公式计算x和{}
  • 调用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)

相关问题 更多 >