Есть ли способ, где я могу создать карту с цветными квадратами, чтобы представить место, куда игрок (черепаха) не может go? Рассматриваемая карта - это сетка с шириной 24 на 10 и возможностью изменения, когда игрок покидает комнату. Каждая карта загружается из текстового файла с именем карты в качестве имени файла, например, «Dungeon1.txt» будет первой картой. Вот пример первого подземелья Я пытался сохранить координаты, где игрок не может быть в списке, но безрезультатно, так как я не могу точно определить место, где черепаха покидает координаты. Вот код, который у меня уже есть:
import turtle as t
sc = t.Screen()
##### draw border for map
border_pen = t.Turtle()
bp = border_pen
bp.speed(0)
bp.ht()
bp.pensize(3)
bp.penup()
bp.goto(600,250)
bp.pendown()
bp.right(90)
bp.forward(500)
bp.right(90)
bp.forward(1200)
bp.right(90)
bp.forward(500)
bp.right(90)
bp.forward(1200)
### make the grid
bp.pensize(1)
bp.right(180)
for i in range(1,24):
bp.forward(50)
bp.left(90)
bp.forward(500)
bp.backward(500)
bp.right(90)
bp.forward(50)
bp.left(90)
bp.forward(50)
for i in range(1,10):
bp.left(90)
bp.forward(1200)
bp.backward(1200)
bp.right(90)
bp.forward(50)
bp.setx(-hlob)
bp.sety(hlob)
### fill the grid
hloby = lob/2
badBoxList = []
filling_pen = t.Turtle()
fp = filling_pen
fp.ht()
fp.setx(-600)
fp.sety(250)
fp.speed(0)
y = round(fp.ycor())
datalist = (line.rstrip('\n') for line in open("Dungeon1.txt"))
for row in datalist:
row = row.split(',')
for i in row:
if i == "x":
fp.begin_fill()
fp.forward(50)
fp.right(90)
fp.forward(50)
fp.right(90)
fp.forward(50)
fp.right(90)
fp.forward(50)
fp.right(90)
fp.end_fill()
coordinates = ("{},{}".format(round(fp.xcor()),round(fp.ycor())))
badBoxList.append(coordinates)
fp.forward(50)
elif i == "y":
fp.forward(50)
elif i == "c":
fp.color("#964B00")
fp.begin_fill()
fp.forward(50)
fp.right(90)
fp.forward(50)
fp.right(90)
fp.forward(50)
fp.right(90)
fp.forward(50)
fp.right(90)
fp.end_fill()
fp.color("#000000")
fp.forward(50)
fp.setx(-600)
y = y - 50
fp.sety(y)
##for i in badBoxList:
## print(i)
global player
player = t.Turtle()
player.shape("square")
player.speed(0)
player.penup()
player.color("#FF0000")
player.shapesize(2.37,2.37,1)
player.setx(int(50/2))
player.sety(int(50/2))
## define movement patterns
def Up():
coordsOfPlayer = ("{},{}".format(round(player.xcor()-25),round(player.ycor()-75)))
print(coordsOfPlayer)
if coordsOfPlayer not in badBoxList:
player.setheading(90)
player.forward(50)
def Left():
player.setheading(180)
player.forward(50)
def Right():
player.setheading(0)
player.forward(50)
def Down():
player.setheading(270)
player.forward(50)
sc.onkey(Up,"Up")
sc.onkey(Down,"Down")
sc.onkey(Left,"Left")
sc.onkey(Right,"Right")
sc.listen()
Любая помощь будет удивительно - спасибо !!