#小龟快跑游戏 输入难度(1-5),蛇追到龟,游戏结束 #分析问题:从局部==>整体 #游戏画面:创建画笔(海龟+蛇)==>1.海龟移动(键盘控制)==>2.蛇(自动追踪,海龟位置)==>3.海龟(限定范围,防止跑出画布之外)==>4.游戏(得分、难度)
1.海龟移动(键盘控制)
2.蛇(自动追踪,海龟位置)
(1)坐标方位角
坐标方位角:坐标系中的某一直线与x轴正方向之间的夹角。
(2)setheading()方法
改变画笔朝向,的坐标方位角。setheading(90)
(3)towards() 方法
当画布上有两只画笔时,它可以获取两个画笔之间相邻的直线,与x轴形成的角度。
就是能获取这条直线的“坐标方位角"。
snake.towards(t) #蛇朝向海龟
towards方法可以获取2只画笔连成直线,与x轴围成的坐标方位角,范围0~360度。
3.海龟(限定范围,防止跑出画布之外)
海龟的x<200,如何获取x的移动坐标呢?
xcor()方法---------获取x坐标
ycor()方法---------获取y坐标
海龟在画布上:(t.xcor(),t.ycor())
若海龟在图上位置,再前进“按下Up键”,就会超出200范围,是不允许的。在函数up里,添加限定条件:
右边界线:
if t.xcor()>200:
t.goto(200,t.ycor())
(1)边界线:(上、下、左、右)
def up():checkbound() #调用分装好的函数(边界:上下左右)
def down():t.backward(10)checkbound()
def left():t.left(45)
def right():t.right(45)def checkbound(): #函数封装(边界:上下左右)t.forward(10)if t.xcor()>200:t.goto(200,t.ycor())if t.ycor()>200:t.goto(t.xcor(),200)if t.xcor()<-200:t.goto(-200,t.ycor())if t.ycor()<-200:t.goto(t.xcor(),-200)
(2)画出边界线:(上、下、左、右)
#画出边界线
turtle.penup()
turtle.goto(200,200)
turtle.pendown()
turtle.color("red")
turtle.pensize(3)
for i in range (4):turtle.right(90)turtle.forward(400)
(3)变量修改 边界线大小:(上、下、左、右) 等比例变大变小
boxsize=300def checkbound(): #函数封装(边界:上下左右)t.forward(10)if t.xcor()>boxsize:t.goto(boxsize,t.ycor())if t.ycor()>boxsize:t.goto(t.xcor(),boxsize)if t.xcor()<-boxsize:t.goto(-boxsize,t.ycor())if t.ycor()<-boxsize:t.goto(t.xcor(),-boxsize)#画出边界线
turtle.penup()
turtle.goto(boxsize,boxsize)
turtle.pendown()
turtle.color("red")
turtle.pensize(3)
for i in range (4):turtle.right(90)turtle.forward(boxsize*2)