【汇智学堂】-python小游戏(弹球游戏之五-场景中应用动画)

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) 

运行这段代码,我们可以看到生成的球,做下落动作,到达底部后,游戏结束。见图3-15、3-16
【汇智学堂】-python小游戏(弹球游戏之五-场景中应用动画)_第1张图片
图3-15
【汇智学堂】-python小游戏(弹球游戏之五-场景中应用动画)_第2张图片
图3-16

你可能感兴趣的:(python小游戏)