大致效果图:
1.导入所需模块
import turtle
import time
import random
2.创建游戏开场文字画面
#创建画图对象
writer = turtle.Turtle()
writer.color('brown')
writer.hideturtle() #隐藏画图线路
writer.penup()
writer.home()
writer.write("Tom & JERRY", align='center', font=("Comic sans MS", 50, "bold"))
writer.goto(0, -50)
writer.write("READY?3,2,1,GO", align='center', font=("Comic sans MS", 20, "bold"))
time.sleep(1)
writer.clear()
3.定义猫和老鼠移动上下左右的方法
#键盘控制向上的方法,设置90度方向向上
def up():
jerry.setheading(90)
jerry.forward(10)
over() #计算猫和老鼠之间的距离,下面会有定义
#键盘控制向下的方法,设置270度方向向上
def down():
jerry.setheading(270)
jerry.forward(10)
over()
#键盘控制向左的方法,设置180度方向向上
def left():
jerry.setheading(180)
jerry.forward(10)
over()
#键盘控制向右的方法,设置0度方向向上
def right():
jerry.setheading(0)
jerry.forward(10)
over()
def up2():
tom.setheading(90)
tom.forward(10)
over()
#键盘控制向下的方法,设置270度方向向上
def down2():
tom.setheading(270)
tom.forward(10)
over()
#键盘控制向左的方法,设置180度方向向上
def left2():
tom.setheading(180)
tom.forward(10)
over()
#键盘控制向右的方法,设置0度方向向上
def right2():
tom.setheading(0)
tom.forward(10)
over()
4.创建屏幕找把猫和老鼠显示上去并绑定事件
猫和老鼠其实就是小海龟,并且把海龟的形状改成了猫和老鼠
猫使用w、s、a、d按键, 老鼠使用上、下、左、右按键
playground = turtle.Screen()
playground.register_shape('cat.gif')
playground.register_shape('mouse.gif')
playground.onkey(up, 'Up')
playground.onkey(down, 'Down')
playground.onkey(left, 'Left')
playground.onkey(right, 'Right')
playground.onkey(up2, 'w')
playground.onkey(down2, 's')
playground.onkey(left2, 'a')
playground.onkey(right2, 'd')
# 监听
playground.listen()
5.随机显示猫的位置
tom = turtle.Turtle()
tom.shape('cat.gif')
tom.penup()
tom.goto(random.randint(-200, 200), random.randint(-200, 200))
6.随机显示老鼠的位置
jerry = turtle.Turtle()
jerry.shape('mouse.gif')
jerry.speed(0)
jerry.penup()
jerry.goto(random.randint(-200, 200), random.randint(-200, 200))
7.定义函数计算猫和老鼠的距离并判断
def over():
# print(tom.distance(jerry)) #计算tom和jerry之间的距离
if tom.distance(jerry) < 15: #当它们距离小于15时,则结束
end = time.time()
playground.clear()
jerry.goto(0, 0)
#写入game over文本
jerry.write("GAME OVER", align='center', font=("Comic sans MS", 50, "bold"))
jerry.goto(0, -50)
jerry.write("YOU SURVIVED {:.1f} SECONDS".format(end - start), align='center', font=("Comic sans MS", 20, "bold"))
tom.pu()
tom.goto(-50, -70)
tom.stamp()
jerry.pu()
jerry.goto(50, -70)
jerry.stamp()