您好,登錄后才能下訂單哦!
這篇文章主要介紹如何使用python實現彈跳小球,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
創建窗口
from tkinter import Tk import tkinter import random import time def main(): #創建Tk對象 tk = tkinter.Tk() #窗口取名“Ball” tk.title ("Ball") #.通知窗口管理器調整布局大小,0,0表示不能被拉升 tk.resizable (0,0) #創建一個長為400*500的界面,背景色為默認 tk.wm_attributes("-topmost",1) canvas = tkinter.Canvas(tk, width=500, height=400, bd=0) #通知窗口管理器注冊組件 canvas.pack() #刷新一下界面 tk.update()
點擊運行就會出現一個Ball的空白窗口
創建Ball的類
在這里的話,暫時不一點一點的貼編寫過程的代碼了,直接把代碼貼出來吧
class Ball(): #注意:特殊方法“init”前后有兩個下劃線,第一個參數永遠是self #由于類可以起到模板的作用,因此,可以在創建實例的時候, #把一些我們認為必須綁定的屬性強制填寫進去。通過定義一個 #特殊的init方法,在創建實例的時候,就把canvas,color等屬性綁上去 def __init__(self,canvas,paddle,color): self.canvas = canvas #少了這句話,一直報錯'Ball' object has no attribute 'paddle' self.paddle = paddle self.id = canvas.create_oval(10,10,25,25,fill=color) self.canvas.move(self.id,245,100) starts=[-3,-2,-1,-1,1,1,2,3] random.shuffle(starts) self.x = starts[0]#從list里面隨機取一個 self.y = -2#-2表示y軸運動的速度 self.canvas_height = self.canvas.winfo_height() self.canvas_width = self.canvas.winfo_width() self.hit_bottom = False #設定hit_bottom初始值為false def hit_paddle(self,pos): paddle_pos = self.canvas.coords(self.paddle.id) if pos[2] >= paddle_pos[0] and pos[0] <= paddle_pos[2]: if pos[3] >= paddle_pos[1] and pos[3] <= paddle_pos[3]: return True return False def draw(self): # self.canvas.move(self.id,0,-1) #表示向上運動 self.canvas.move(self.id,self.x,self.y)#,self.r,self.l pos = self.canvas.coords(self.id) if pos[0]<=0: self.x = 2 if pos[1]<=0: self.y = 2 #如果小球碰到了畫布右邊,則把速度改成每次向左2個像素 if pos[2]>=self.canvas_width: self.x = -2 #如果小球碰到畫布底端 則返回hit_bottom為True if pos[3]>=self.canvas_height: self.hit_bottom = True #判斷球是否撞到了木板 if self.hit_paddle(pos) == True: self.y = -3
木板
#如何增加按一下鍵盤木板動一下的功能? class Paddle: def turn_left(self, evt): self.x = -2 def turn_right(self, evt): self.x = 2 def __init__(self,canvas,color): self.canvas = canvas self.id = canvas.create_rectangle(0,0,150,10,fill=color) self.canvas.move(self.id,200,300) self.x = 0 self.canvas_width = self.canvas.winfo_width() self.canvas.bind_all('<KeyPress-Left>',self.turn_left) self.canvas.bind_all('<KeyPress-Right>',self.turn_right) def draw(self): self.canvas.move(self.id,self.x,0) pos = self.canvas.coords(self.id) if pos[0] <= 0: self.x = 0 if pos[2] >= self.canvas_width: self.x = 0 paddle = Paddle(canvas,"blue") ball = Ball(canvas,paddle,"red") while 1: if ball.hit_bottom==False: #沒有碰到底部的話執行下面的語句 ball.draw() #調用ball對象的函數draw() paddle.draw()#調用paddle對象的函數draw() tk.update_idletasks() tk.update() #更新框架 time.sleep(0.01) #睡眠0.01秒 elif ball.hit_bottom==True: #要是小球接觸了底部 canvas.create_text(200,100,text='Aha,you lose it,\nHow about try again?',font=('Times',22)) #在(200,100)坐標處創建文本‘...',字號22號 tk.update() #更新內容 tk.mainloop() main()
最終完成就是這樣的了,用鍵盤的左右控制藍色的木板接球就可以了
要是不小心沒接到,游戲就game over 啦!
以上是“如何使用python實現彈跳小球”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。