import turtle
player = input('Pick square or arrow: ')
if player == "arrow":
turtle.shape("arrow")
turtle.pu()
turtle.goto(-400, 20)
elif player == "square":
turtle.shape("square")
turtle.pu()
turtle.goto(-400, 20)
else:
print ('You did not type square or arrow, so you have been given default.')
turtle.pu()
turtle.goto(-400, 20)
def up():
turtle.forward(45)
def right():
turtle.right(90)
def left():
turtle.left(90)
def down():
turtle.backward(45)
sc=turtle.Screen()
sc.setup(600, 600)
turtle.onkey(up,'w')
turtle.onkey(right,'d')
turtle.onkey(left,'a')
turtle.onkey(down,'s')
turtle.listen()
turtle.penup()
instructions = turtle.Turtle()
instructions.ht()
instructions.pu()
instructions.goto(-600, 200)
instructions.write("Maze Game", font=('Arial', 32, 'normal'))
instructions.goto(-600, 125)
instructions.write("Touch the Green", font=('Arial', 26, 'normal'))
instructions.goto(-580, 100)
instructions.write("And DIE!!!", font=('Arial', 26, 'normal'))
instructions.goto(-620, 50)
instructions.write("Make it Out to Win", font=('Arial', 26, 'normal'))
instructions.goto(-620, -75)
instructions.write("Use w/a/s/d to move", font=('Arial', 26, 'normal'))
#drawing the maze
maze = turtle.Turtle()
maze.ht()
maze.speed(0)
maze.penup()
maze.goto(-310, 300)
maze.pendown()
maze.pensize(40)
maze.color('green')
maze.forward(700)
maze.ht()
maze.speed(0)
maze.penup()
maze.goto(390, 300)
maze.pendown()
maze.right(90)
maze.pensize(40)
maze.color('green')
maze.forward(300)
maze.ht()
maze.speed(0)
maze.penup()
maze.goto(390, 0)
maze.pendown()
maze.left(90)
maze.pensize(40)
maze.color('green')
maze.forward(125)
maze.ht()
maze.speed(0)
maze.penup()
maze.goto(515, 0)
maze.pendown()
maze.right(90)
maze.pensize(40)
maze.color('green')
maze.forward(100)
我正在做一个迷宫游戏,但我不会它,以便当玩家击中迷宫,它会被重置到起始位置,但我不知道如何。
我试过一种方法,用距离法,它没有工作,但可能是因为我做错了。我希望它,以便当球员击中迷宫它得到重置到开始的位置。
1条答案
按热度按时间y53ybaqx1#
一般来说,使用turtle时这是一个难题,但由于您在迷宫中只使用水平线和垂直线(假设您继续这样做),我们可以实现一个简单的墙壁碰撞测试。
首先,你需要明确地将你的行存储在一个数据结构中;其次,为了让简单测试工作,你所有的行都必须从左到右或从上到下描述:
以上只是防止玩家为了测试目的而穿越迷宫线。你可以改变代码来结束游戏。
我需要让玩家的移动更小,因为你原来的步距离大于墙的宽度,所以玩家可以“跨越”一堵墙与我的简单碰撞测试!
这种碰撞逻辑是 * 脆弱的 *(可能在某些地方是不正确的),所以保持你的迷宫简单和宽敞!