用Python绘制/绘制迷宫般的线条?
编程新手,我正在尝试绘制道路边界线。基本上,我正在创建一个类似于路线图的东西,我希望一个矩形始终在轨迹中移动(我的意思是,矩形的x,y坐标随着直线的增加而增加) 想法如下图所示 有人能帮我吗?如何创建和绘制红线以及沿箭头方向移动的黑色矩形 更新:每次我都需要检查从矩形到直线的距离是否低于某个阈值。我想我可能需要使用某种数组/元素。但我不清楚如何使用它。有人能帮我吗?谢谢用Python绘制/绘制迷宫般的线条?,python,plot,draw,lines,Python,Plot,Draw,Lines,编程新手,我正在尝试绘制道路边界线。基本上,我正在创建一个类似于路线图的东西,我希望一个矩形始终在轨迹中移动(我的意思是,矩形的x,y坐标随着直线的增加而增加) 想法如下图所示 有人能帮我吗?如何创建和绘制红线以及沿箭头方向移动的黑色矩形 更新:每次我都需要检查从矩形到直线的距离是否低于某个阈值。我想我可能需要使用某种数组/元素。但我不清楚如何使用它。有人能帮我吗?谢谢 你可以使用pygames,随便画任何东西。由于您还没有开始学习,请尝试本教程 或者你可以试试 或者你可以试试乌龟 下面是我用P
你可以使用pygames,随便画任何东西。由于您还没有开始学习,请尝试本教程 或者你可以试试 或者你可以试试乌龟 下面是我用Python turtle实现的一个极简地图跟随者。(不是迷宫跟随者,因为它不会进行任何回溯。)这应该让您大致了解如何使用包含迷宫结构的数组绘制迷宫和在其中移动的对象:
from turtle import Turtle, Screen
MAP = '''
XXXXXXXXOX
XOOOOOOOOX
XOXXXXXXXX
XOOOOXXXXX
XXXXOXXXXX
XXXXOXXXXX
XXXXOOOOOX
XXXXXXXXOX
XOOOOOOOOX
XOXXXXXXXX
'''
MAP_ARRAY = [list(row) for row in MAP.strip().split('\n')]
MAP_ARRAY.reverse() # put 0, 0 in lower left corner
ADJACENT = [
(0, 1),
(-1, 0), (1, 0),
(0, -1),
]
SCALE = 3
STAMP_SIZE = 20
WIDTH, HEIGHT = len(MAP_ARRAY[0]), len(MAP_ARRAY)
def any_adjacent(x, y):
return [(x + dx, y + dy) for dx, dy in ADJACENT if 0 <= x + dx < WIDTH and 0 <= y + dy < HEIGHT and MAP_ARRAY[y + dy][x + dx] == 'O']
def move(): # slowly navigate the MAP, quit when no where new to go
x, y = turtle.position()
adjacent_squares = any_adjacent(int(x), int(y))
# always moves to first valid adjacent square, need to consider
# how to deal with forks in the road (e.g. shuffle adjacent_squares)
for adjacent in adjacent_squares:
if adjacent not in been_there:
turtle.goto(adjacent)
been_there.append(adjacent)
screen.ontimer(move, 1000) # one second per move, adjust as needed
break
screen = Screen() # recast the screen into MAP coordinates
screen.setup(WIDTH * STAMP_SIZE * SCALE, HEIGHT * STAMP_SIZE * SCALE)
screen.setworldcoordinates(-0.5, -0.5, WIDTH - 0.5, HEIGHT - 0.5)
turtle = Turtle('square', visible=False)
turtle.shapesize(SCALE)
turtle.speed('fastest')
turtle.penup()
for y, row in enumerate(MAP_ARRAY): # draw the MAP
for x, character in enumerate(row):
if character == 'X':
turtle.goto(x, y)
turtle.stamp()
turtle.color('red')
turtle.shapesize(SCALE / 2)
turtle.goto(1, 0) # should use unique character in MAP to indicate start & end points
turtle.showturtle()
been_there = [] # prevent doubling back
move()
screen.mainloop()
从海龟导入海龟,屏幕
MAP=''
XXXXXXXX箱
Xooooox
XOXXXXXXXX
xoooxxxxx
XXXXOXXXXX
XXXXOXXXXX
XXOOOX
XXXXXXXX箱
Xooooox
XOXXXXXXXX
'''
MAP_数组=[MAP.strip().split('\n')中的行的列表(行)]
MAP_ARRAY.reverse()#将0,0放在左下角
相邻的=[
(0, 1),
(-1, 0), (1, 0),
(0, -1),
]
比例=3
邮票大小=20
宽度,高度=len(映射数组[0]),len(映射数组)
定义任何相邻的(x,y):
如果0 Python本身没有任何图形功能,则返回[(x+dx,y+dy)for dx,dy in nexted;有类似matplotlib的功能,但答案将取决于您决定使用哪个。