3.5场景中应用动画
现在我们回到我们的游戏场景中,将我们刚才学到的动画知识应用一下,达到球从指定范围内的任意位置,垂直下落到游戏场景的底部。下面是我们要做的事情。
1、获得球的id号。
2、根据球的id获得画圆时的第四个参数position[3]。
3、比较该参数与屏幕底部纵坐标a的关系,如果>=a,说明到达底部,游戏结束。
实现代码如下:
a=random.randint(50,600)
b=random.randint(50,200)
id1=canvas.create_oval(a, b, a+20, b+20, fill ="red" )
id2=canvas.create_rectangle(510,510,610,530,fill="green")
while 1:
position=canvas.coords(id1)
if position[3]<800:
canvas.move(1,0,5)
else:
canvas.create_text(400,420,text="游戏结束",fill='red',font=('Times',110))
position=canvas.coords(id1)中,coords函数的作用,是得到id号为id1的物体的坐标值。
将代码整合起来,整合后完整代码如下:
#-*- coding:GBK -*-
from tkinter import *
import time
import random
import tkinter.messagebox #messagebox
closeornot=1
position=[1,1,1,1]
tk = Tk()
tk.title("雷雷的弹球游戏")
tk.resizable(0, 0)
tk.wm_attributes("-topmost", 1)
canvas = Canvas(tk, width=800, height=800, bd=0, highlightthickness=0)
canvas.pack()
tk.update()
#starts=[50,70,90,110,130,150,170,190,210]
a=random.randint(50,600)
b=random.randint(50,200)
id1=canvas.create_oval(a, b, a+20, b+20, fill ="red" )
id2=canvas.create_rectangle(510,510,610,530,fill="green")
while 1:
position=canvas.coords(id1)
if position[3]<800:
canvas.move(1,0,5)
else:
canvas.create_text(400,420,text="游戏结束",fill='red',font=('Times',110))
tk.update_idletasks()
tk.update()
time.sleep(0.05)