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

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

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

前言

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

創(chuàng)建窗口

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

點(diǎn)擊運(yùn)行就會(huì)出現(xiàn)一個(gè)Ball的空白窗口

創(chuàng)建Ball的類

在這里的話,暫時(shí)不一點(diǎn)一點(diǎn)的貼編寫過程的代碼了,直接把代碼貼出來吧

class Ball():
 #注意:特殊方法“init”前后有兩個(gè)下劃線,第一個(gè)參數(shù)永遠(yuǎn)是self
 #由于類可以起到模板的作用,因此,可以在創(chuàng)建實(shí)例的時(shí)候,
 #把一些我們認(rèn)為必須綁定的屬性強(qiáng)制填寫進(jìn)去。通過定義一個(gè)
 #特殊的init方法,在創(chuàng)建實(shí)例的時(shí)候,就把canvas,color等屬性綁上去
 def __init__(self,canvas,paddle,color):  
  self.canvas = canvas
  #少了這句話,一直報(bào)錯(cuò)'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里面隨機(jī)取一個(gè)
  self.y = -2#-2表示y軸運(yùn)動(dòng)的速度
  self.canvas_height = self.canvas.winfo_height()
  self.canvas_width = self.canvas.winfo_width()
  self.hit_bottom = False #設(shè)定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) #表示向上運(yùn)動(dòng)
  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個(gè)像素
  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

木板

#如何增加按一下鍵盤木板動(dòng)一下的功能?
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對(duì)象的函數(shù)draw()
  paddle.draw()#調(diào)用paddle對(duì)象的函數(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)坐標(biāo)處創(chuàng)建文本‘...',字號(hào)22號(hào)
  tk.update() #更新內(nèi)容
 
tk.mainloop()
main()

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

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

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

    Python+Selenium實(shí)現(xiàn)瀏覽器標(biāo)簽頁的切換

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

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

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

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

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

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

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

    詳解Python對(duì)某地區(qū)二手房房?jī)r(jià)數(shù)據(jù)分析

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

最新評(píng)論

绵竹市| 那坡县| 聊城市| 应城市| 时尚| 信宜市| 米脂县| 河源市| 四子王旗| 苍梧县| 辽宁省| 淳安县| 金门县| 高安市| 道孚县| 玛沁县| 丹东市| 青冈县| 石楼县| 靖宇县| 睢宁县| 泰州市| 五寨县| 尼木县| 怀化市| 无为县| 甘德县| 淮滨县| 鄱阳县| 青冈县| 铜川市| 洱源县| 宜宾县| 广丰县| 甘肃省| 桃江县| 台东市| 盖州市| 微山县| 清水河县| 潼关县|