python學習筆記--趣學Python編程第十三章的例子

彈球

由反彈球和球拍構成的遊戲。球會在屏幕上飛過來,玩家要用球拍把它彈回去

畫布和畫彈球

  • 引入模塊
    #Tkinter -- Python的標準GUI庫,Tk 接口,是python 內置的安裝包
    from tkinter import *
    import random
    import time
  • 創建窗體
    #創建tk對象
    tk = Tk()
    #設置窗體標題
    tk.title("Game")
    #設置窗口不能調整,0,0 水平垂直方面都不能改變
    tk.resizable(0, 0)
    #窗口置頂
    tk.wm_attributes("-topmost",1)
    # Canvas提供可以用來進行繪圖的Container,支持基本的幾何元素,使用Canvas進行繪圖時,
    #所有的操作都是通過Canvas,不是通過它的元素
    canvas = Canvas(tk,width=500, height=400, bd=0, highlightthickness=0)
    #根據上面定的屬性來調整自己
    canvas.pack()
    #初始化
    tk.update()

    創建Ball類

    創建Ball類,它有兩個參數,一個是畫布,另一個是球的顏色
    把畫布保存到一個對象變量中,因爲我們會在它上面畫球
    在畫布上畫一個用顏色參數作爲填充色的小球
    把tkinter畫小球時所返回的ID保存起來,因爲我們要用它移動屏幕上的小球

#創建Ball
class Ball:
    def __init__(self, canvas,color):
        self.canvas = canvas 
        self.id = canvas.create_oval(10,10,25,25,fill=color)
        self.canvas.move(self.id,245,100)
        #
        starts = [-3,-2,-1,1,2,3]
        random.shuffle(starts)
        self.x = starts[0]
        self.y = -3
        #取得當前畫布的大小
        self.canvas_height = self.canvas.winfo_height()
        self.canvas_width  = self.canvas.winfo_width()

    def draw(self):
      #添加移動:  move(id-物體,水平移動,垂直移動)
        self.canvas.move(self.id,self.x,self.y)
        pos = self.canvas.coords(self.id)
        if pos[1] <= 0:
            self.y = 3
        if pos[3] >= self.canvas_height:
            self.y = -3
        if pos[0] <= 0:
            self.x =3
        if pos[2] >= self.canvas_width:
            self.x = -3

主程序的代碼分析:

while 1:
    ball.draw() #引入移動操作
    tk.update_idletasks() #和update 合作 讓tkinter快點把物體畫出來
    tk.update()
    time.sleep(0.05)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章