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

python3.6使用tkinter實(shí)現(xiàn)彈跳小球游戲

 更新時間:2019年05月09日 11:39:00   作者:K_caesura  
這篇文章主要為大家詳細(xì)介紹了python3.6使用tkinter實(shí)現(xiàn)彈跳小球游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了python3.6實(shí)現(xiàn)彈跳小球游戲的具體代碼,供大家參考,具體內(nèi)容如下

import random
import time
from tkinter import *
 
 
#下面定義一個球的類,有canvas和color兩個對象
class Ball: #定義一個Ball類的函數(shù)
 def __init__(self,canvas,paddle,color):#這是Ball類的屬性函數(shù),Ball類下的函數(shù)都有這些性質(zhì)
 self.canvas=canvas
 self.paddle=paddle
 self.id=canvas.create_oval(10,10,25,25,fill=color)#返回所繪小球的調(diào)用值放入對象self.id
 self.canvas.move(self.id,245,100) #移動小球到(245,100)坐標(biāo)處,
 starts=[-3,-2,-1,1,2,3] 
 random.shuffle(starts)
 self.x=starts[0] #使得小球左右方向運(yùn)動隨機(jī)
 self.y=-3  #默認(rèn)開始的小球向上方運(yùn)動
 self.canvas_height=self.canvas.winfo_height()#畫布高度函數(shù)winfo_height()返回值放入canvas_height對象中
 self.canvas_width=self.canvas.winfo_width() #winfo_width()返回畫布寬度放入canvas_width對象中
 self.hit_bottom=False #設(shè)定hit_bottom初始值為false
 
 
 def hit_paddle(self,pos): #聲明函數(shù),以供調(diào)用
 paddle_pos=self.canvas.coords(self.paddle.id) #將球拍的(x1,y1)(x2,y2)的坐標(biāo)放到paddle_pos中
 if pos[2]>=paddle_pos[0] and pos[0]<=paddle_pos[2]: #
  if pos[3]>=paddle_pos[1] and pos[3]<=paddle_pos[3]: #比較小球y軸是否在球拍y軸內(nèi)
  return True #表示小球碰到了球拍
 return False #表示小球沒有碰到球拍
 
 
 def draw(self): #聲明draw函數(shù),
 self.canvas.move(self.id,self.x,self.y) #移動小球,移動速度為(self.x,self.y),在init中的屬性可以直接用
 pos=self.canvas.coords(self.id)#把小球的左上角和右下角的坐標(biāo)以列表形式(可能元組)放入pos對象中
 if pos[1]<=0: #如果小球碰到畫布上方
  self.y=3 #則改變移動方向向下方
 if pos[3]>=self.canvas_height: #如果小球碰到畫布底端 則返回hit_bottom為True
  self.hit_bottom=True
 if self.hit_paddle(pos)==True: #小球碰到了球拍,則改變Y軸方向向上運(yùn)動
  self.y=-3
 if pos[0]<=0: #如果小球碰到了畫布左邊,則把X軸速度改成每次向右3個像素
  self.x=3
 if pos[2]>=self.canvas_width: #如果小球碰到了畫布右邊,則把速度改成每次向左3個像素
  self.x=-3
 
class Paddle: #定義一個paddle類
 def __init__(self,canvas,color): #paddle類的屬性函數(shù),默認(rèn)有兩個變量畫布和顏色
 self.canvas=canvas #將canvas對象賦給self.canvas
 self.id=canvas.create_rectangle(0,0,100,10,fill=color) #創(chuàng)建球拍,將球拍的調(diào)用編號存入self.id
 self.canvas.move(self.id,200,300) #將球拍移動到(200,300)處
 self.x=0 #
 self.canvas_width=self.canvas.winfo_width() #將畫布的寬度放入canvas_width對象
 self.canvas.bind_all('<KeyPress-Left>',self.turn_left) #用bind_all()函數(shù)綁定鍵盤左鍵與tun_left函數(shù)
 self.canvas.bind_all('<KeyPress-Right>',self.turn_right) #綁定鍵盤右鍵與turn_right函數(shù)
 
 
 def draw(self): #聲明一個draw函數(shù)
 self.canvas.move(self.id,self.x,0) #左右移動球拍的速度為self.x,默認(rèn)不動
 pos=self.canvas.coords(self.id) #將球拍的左上角和右下角的坐標(biāo)存入pos對象中
 if pos[0]<=0: #如果球拍x軸小于0,則不再向右移動
  self.x=0
 elif pos[2]>=self.canvas_width: #如果球拍要超過畫布右側(cè)了,則球拍的移動速度變?yōu)?
  self.x=0
 
 def turn_left(self,evt):#這里的evt是調(diào)用方傳過來的參數(shù),改變球拍的移動速度向左,
 self.x=-5
 
 def turn_right(self,evt): #改變球拍的移動速度向右每次5個像素
 self.x=5
 
 
 
#創(chuàng)建框架并且命名和固定,然后創(chuàng)建該框架的畫布
tk=Tk() #創(chuàng)建框架對象tk
tk.title('Game') #框架對象tk顯示的名字為'game'
tk.resizable(0,0) #固定框架
tk.wm_attributes('-topmost',1) #顯示在最外層
canvas=Canvas(tk,width=500,height=400,bd=0,highlightthickness=0) #創(chuàng)建畫布canvas,屬于tk框架對象,
canvas.pack() #顯示畫布的變化
tk.update() #顯示框架的變化
 
 
#把類賦值給對象ball,如果調(diào)用了ball就可以實(shí)現(xiàn)該類的作用
paddle=Paddle(canvas,"blue") #調(diào)用拍的類給對象paddle用
ball=Ball(canvas,paddle,'green') #調(diào)用球的類給對象ball用
 
while True: #要注意while語句以防止死循環(huán),先設(shè)置為真
 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)坐標(biāo)處創(chuàng)建文本‘...',字號22號
 tk.update() #更新內(nèi)容

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

相關(guān)文章

  • Python如何利用struct進(jìn)行二進(jìn)制文件或數(shù)據(jù)流

    Python如何利用struct進(jìn)行二進(jìn)制文件或數(shù)據(jù)流

    這篇文章主要介紹了Python如何利用struct進(jìn)行二進(jìn)制文件或數(shù)據(jù)流問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • 一文詳解Python中實(shí)現(xiàn)單例模式的幾種常見方式

    一文詳解Python中實(shí)現(xiàn)單例模式的幾種常見方式

    這篇文章主要為大家介紹了Python中實(shí)現(xiàn)單例模式的幾種常見方式示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • 使用Python生成詞云圖的詳細(xì)指南

    使用Python生成詞云圖的詳細(xì)指南

    在數(shù)據(jù)可視化領(lǐng)域,詞云圖是一種非常直觀且受歡迎的展示文本數(shù)據(jù)中關(guān)鍵詞頻率的方式,Python 中的wordcloud庫提供了一種簡單而強(qiáng)大的方法來生成詞云圖,本文就給大家介紹了使用Python生成詞云圖的詳細(xì)指南,需要的朋友可以參考下
    2024-12-12
  • python 遞歸遍歷文件夾,并打印滿足條件的文件路徑實(shí)例

    python 遞歸遍歷文件夾,并打印滿足條件的文件路徑實(shí)例

    下面小編就為大家?guī)硪黄猵ython 遞歸遍歷文件夾,并打印滿足條件的文件路徑實(shí)例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • Requests什么的通通爬不了的Python超強(qiáng)反爬蟲方案!

    Requests什么的通通爬不了的Python超強(qiáng)反爬蟲方案!

    今天帶大家學(xué)習(xí)Requests什么的通通爬不了的Python超強(qiáng)反爬蟲方案,文中有非常詳細(xì)的圖文介紹及代碼示例,對正在學(xué)習(xí)python的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-05-05
  • Python中的pprint打印模塊

    Python中的pprint打印模塊

    這篇文章主要介紹了Python中的pprint打印模塊,??pprint()??采用分行打印輸出,下文關(guān)于其相關(guān)介紹,需要的小伙伴可以參考一下
    2022-05-05
  • Python lambda和Python def區(qū)別分析

    Python lambda和Python def區(qū)別分析

    Python支持一種有趣的語法,它允許你快速定義單行的最小函數(shù)。這些叫做lambda的函數(shù),是從Lisp借用來的,可以用在任何需要函數(shù)的地方
    2014-11-11
  • Python入門教程(四十一)Python的NumPy數(shù)組索引

    Python入門教程(四十一)Python的NumPy數(shù)組索引

    這篇文章主要介紹了Python入門教程(四十一)Python的NumPy數(shù)組索引,數(shù)組索引是指使用方括號([])來索引數(shù)組值,numpy提供了比常規(guī)的python序列更多的索引工具,除了按整數(shù)和切片索引之外,數(shù)組可以由整數(shù)數(shù)組索引、布爾索引及花式索引,需要的朋友可以參考下
    2023-05-05
  • PyQt5每天必學(xué)之組合框

    PyQt5每天必學(xué)之組合框

    這篇文章主要為大家詳細(xì)介紹了PyQt5每天必學(xué)之組合框,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • Python實(shí)現(xiàn)處理Excel數(shù)據(jù)并生成只讀模式

    Python實(shí)現(xiàn)處理Excel數(shù)據(jù)并生成只讀模式

    這篇文章主要為大家詳細(xì)介紹了如何使用 Python 處理 Excel 數(shù)據(jù),并生成只讀模式的 Excel 文檔,文中的示例代碼簡潔易懂,有需要的小伙伴可以參考下
    2023-11-11

最新評論

襄汾县| 綦江县| 年辖:市辖区| 永济市| 偃师市| 三河市| 绥中县| 石狮市| 娄底市| 永吉县| 蒙自县| 钟祥市| 阿勒泰市| 桃园市| 淮阳县| 稻城县| 莱阳市| 双柏县| 买车| 石城县| 张掖市| 栾城县| 昌乐县| 平顺县| 奉贤区| 黎川县| 石台县| 绥棱县| 蒙城县| 西乌珠穆沁旗| 呼图壁县| 周宁县| 湘西| 务川| 思茅市| 龙州县| 惠东县| 抚宁县| 临高县| 黎平县| 东至县|