最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python實現(xiàn)彈跳小球

 更新時間:2019年05月13日 08:42:44   作者:lhm8013  
這篇文章主要為大家詳細介紹了python實現(xiàn)彈跳小球,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

前言

學習Python的過程中,比較喜歡通過實際的小項目進行鞏固學習,決定寫一個彈跳小球的程序。這個實戰(zhàn)例程是在公眾號上看到的,他的編寫過程比較完整,步驟清晰,貼的代碼并不完整,但是我還是決定嘗試一下,在嘗試的過程中由于自己的基礎知識并沒有學到類這里,所以是在摸索的階段,一邊學習基礎知識,一邊編寫這個例程,最終還是把它給完成了,雖然后面在網(wǎng)上看到了代碼,幸好沒有提前看到,這一天中我還是學習到了很多。

創(chuàng)建窗口

 from tkinter import Tk
 import tkinter
 import random
 import time
 def main():
 
 #創(chuàng)建Tk對象
 tk = tkinter.Tk()
 #窗口取名“Ball”
 tk.title ("Ball")
 #.通知窗口管理器調(diào)整布局大小,0,0表示不能被拉升
 tk.resizable (0,0)
 #創(chuàng)建一個長為400*500的界面,背景色為默認
 tk.wm_attributes("-topmost",1)
 canvas = tkinter.Canvas(tk, width=500, height=400, bd=0)
 #通知窗口管理器注冊組件
 canvas.pack()
 #刷新一下界面
 tk.update()

點擊運行就會出現(xiàn)一個Ball的空白窗口

創(chuàng)建Ball的類

在這里的話,暫時不一點一點的貼編寫過程的代碼了,直接把代碼貼出來吧

class Ball():
 #注意:特殊方法“init”前后有兩個下劃線,第一個參數(shù)永遠是self
 #由于類可以起到模板的作用,因此,可以在創(chuàng)建實例的時候,
 #把一些我們認為必須綁定的屬性強制填寫進去。通過定義一個
 #特殊的init方法,在創(chuàng)建實例的時候,就把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: #沒有碰到底部的話執(zhí)行下面的語句
  ball.draw() #調(diào)用ball對象的函數(shù)draw()
  paddle.draw()#調(diào)用paddle對象的函數(shù)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)坐標處創(chuàng)建文本‘...',字號22號
  tk.update() #更新內(nèi)容
 
tk.mainloop()
main()

最終完成就是這樣的了,用鍵盤的左右控制藍色的木板接球就可以了

要是不小心沒接到,游戲就game over 啦!

最后說一下,感覺很多功能不完善,比如沒有點擊再來一次的按鈕什么的,后期會一步步完善,增加游戲開始、分數(shù)、關(guān)卡、難度等等,到時候?qū)懸黄瓿傻木帉戇^程記錄!

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python文本轉(zhuǎn)語音引擎pyttsx3的使用完全指南

    Python文本轉(zhuǎn)語音引擎pyttsx3的使用完全指南

    在開發(fā)需要語音輸出功能的應用時,文本轉(zhuǎn)語音技術(shù)是一個非常有用的工具,Python的pyttsx3庫提供了一個簡單且離線的方式來實現(xiàn)這一功能,下面小編就來和大家介紹一下pyttsx3的具體使用吧
    2025-04-04
  • python禁用鍵鼠與提權(quán)代碼實例

    python禁用鍵鼠與提權(quán)代碼實例

    這篇文章主要介紹了python禁用鍵鼠與提權(quán)代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-08-08
  • 利用OpenCV判斷是否加載圖片的兩種方法

    利用OpenCV判斷是否加載圖片的兩種方法

    這篇文章主要介紹了利用OpenCV判斷是否加載圖片的兩種方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Python繪圖實現(xiàn)顯示中文

    Python繪圖實現(xiàn)顯示中文

    今天小編就為大家分享一篇Python繪圖實現(xiàn)顯示中文,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • python實現(xiàn)有效的括號判斷實例代碼

    python實現(xiàn)有效的括號判斷實例代碼

    這篇文章主要給大家介紹了關(guān)于python實現(xiàn)有效的括號判斷的相關(guān)資料,文中通過實例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2022-01-01
  • Python+Selenium實現(xiàn)瀏覽器標簽頁的切換

    Python+Selenium實現(xiàn)瀏覽器標簽頁的切換

    在實際工作中,我們經(jīng)常會遇到頁面切換的情況。就比如當點擊了某個功能的按鈕后,瀏覽器出現(xiàn)了新的標簽頁,需要在這些標簽頁之間進行切換。本文將利用Selenium實現(xiàn)這一功能,需要的可以參考一下
    2022-06-06
  • 對numpy的array和python中自帶的list之間相互轉(zhuǎn)化詳解

    對numpy的array和python中自帶的list之間相互轉(zhuǎn)化詳解

    下面小編就為大家分享一篇對numpy的array和python中自帶的list之間相互轉(zhuǎn)化詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Python 列表排序方法reverse、sort、sorted詳解

    Python 列表排序方法reverse、sort、sorted詳解

    本文給大家介紹的是Python中列表排序方法中的reverse、sort、sorted操作方法,以及他們直接的區(qū)別介紹,有需要的小伙伴可以參考下。
    2016-01-01
  • Python 多繼承中的一個詭異現(xiàn)象 既是 Father又是grandfather

    Python 多繼承中的一個詭異現(xiàn)象 既是 Father又是grandfather

    我們知道,在面向?qū)ο缶幊汤锩?,繼承是一個很重要的概念。子類可以使用父類的方法和屬性,接下來小編將用舉例的方式為大家講解Python 多繼承中的一個詭異現(xiàn)象 其即是爸爸又是爺爺?shù)钠孑猬F(xiàn)象,感興趣的小伙伴可以看下面文章具體了解
    2021-09-09
  • 詳解Python對某地區(qū)二手房房價數(shù)據(jù)分析

    詳解Python對某地區(qū)二手房房價數(shù)據(jù)分析

    這篇文章主要為大家介紹了Python數(shù)據(jù)分析某地區(qū)二手房房價,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12

最新評論

平邑县| 镇安县| 亚东县| 鱼台县| 张掖市| 富民县| 保山市| 屏东市| 霞浦县| 贵港市| 扎兰屯市| 加查县| 通化县| 临汾市| 山东省| 玛多县| 丰台区| 紫金县| 桐梓县| 广饶县| 鹤壁市| 云浮市| 洱源县| 景泰县| 安义县| 龙井市| 山阴县| 上饶市| 仪征市| 昌黎县| 卓尼县| 石首市| 苏尼特左旗| 德州市| 凌云县| 惠东县| 油尖旺区| 新野县| 平凉市| 连山| 佛山市|