Как сделать карту, используя Python модуль Turtle - PullRequest
0 голосов
/ 11 февраля 2020

Есть ли способ, где я могу создать карту с цветными квадратами, чтобы представить место, куда игрок (черепаха) не может 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()

Любая помощь будет удивительно - спасибо !!

...