亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

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

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

相關(guān)文章

  • python?moviepy?的用法入門(mén)篇

    python?moviepy?的用法入門(mén)篇

    MoviePy(全套文件)是一個(gè)用于視頻編輯Python庫(kù):切割、拼接、標(biāo)題插入,視頻合成(即非線(xiàn)性編輯),視頻處理和自定義效果的創(chuàng)造,本文給大家介紹python?moviepy?的用法詳解,感興趣的朋友跟隨小編一起看看吧
    2022-02-02
  • python爬取微博評(píng)論的實(shí)例講解

    python爬取微博評(píng)論的實(shí)例講解

    在本篇文章里小編給大家整理的是一篇關(guān)于python爬取微博評(píng)論的實(shí)例講解,有興趣的朋友們可以學(xué)習(xí)下。
    2021-01-01
  • Python的Flask框架中集成CKeditor富文本編輯器的教程

    Python的Flask框架中集成CKeditor富文本編輯器的教程

    在用Flask搭建網(wǎng)站時(shí)的后臺(tái)文章編輯器可以使用CKeditor,CKeditor所支持的文本樣式較多且開(kāi)源,這里我們就來(lái)看一下Python的Flask框架中集成CKeditor富文本編輯器的教程
    2016-06-06
  • 在 Python 中如何使用 Re 模塊的正則表達(dá)式通配符

    在 Python 中如何使用 Re 模塊的正則表達(dá)式通配符

    這篇文章主要介紹了在 Python 中如何使用 Re 模塊的正則表達(dá)式通配符,本文詳細(xì)解釋了如何在 Python 中使用帶有通配符的 re.sub() 來(lái)匹配字符串與正則表達(dá)式,需要的朋友可以參考下
    2023-06-06
  • 只用20行Python代碼實(shí)現(xiàn)屏幕錄制功能

    只用20行Python代碼實(shí)現(xiàn)屏幕錄制功能

    python小哥哥發(fā)現(xiàn)女朋友最近總是很忙的樣子,晚上匆匆忙忙道過(guò)晚安就不說(shuō)話(huà)了.可是,QQ頭像卻會(huì)偶爾亮起來(lái).小哥哥非常擔(dān)心,是不是賬號(hào)被盜了呢然后,就想幫女朋友排查一下所以就用python寫(xiě)了一個(gè)錄制腳本,悄悄裝在女友電腦上,需要的朋友可以參考下
    2021-06-06
  • python列表推導(dǎo)和生成器表達(dá)式知識(shí)點(diǎn)總結(jié)

    python列表推導(dǎo)和生成器表達(dá)式知識(shí)點(diǎn)總結(jié)

    在本篇文章里小編給大家整理的是關(guān)于python列表推導(dǎo)和生成器表達(dá)式的相關(guān)知識(shí)點(diǎn)內(nèi)容,需要的朋友們可以參考下。
    2020-01-01
  • 3個(gè)適合新手練習(xí)的python小游戲

    3個(gè)適合新手練習(xí)的python小游戲

    這篇文章主要分析的是3個(gè)適合新手練習(xí)的python小游戲,初學(xué)者嘛就應(yīng)該多練手,下文分享的python小游戲歡迎大家來(lái)玩,需要的小伙伴也可以參考一下
    2022-01-01
  • 詳解pytorch tensor和ndarray轉(zhuǎn)換相關(guān)總結(jié)

    詳解pytorch tensor和ndarray轉(zhuǎn)換相關(guān)總結(jié)

    這篇文章主要介紹了詳解pytorch tensor和ndarray轉(zhuǎn)換相關(guān)總結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Python二叉搜索樹(shù)與雙向鏈表轉(zhuǎn)換算法示例

    Python二叉搜索樹(shù)與雙向鏈表轉(zhuǎn)換算法示例

    這篇文章主要介紹了Python二叉搜索樹(shù)與雙向鏈表轉(zhuǎn)換算法,涉及Python二叉樹(shù)構(gòu)建、遍歷及鏈表構(gòu)造等相關(guān)操作技巧,需要的朋友可以參考下
    2019-03-03
  • Python socket模塊ftp傳輸文件過(guò)程解析

    Python socket模塊ftp傳輸文件過(guò)程解析

    這篇文章主要介紹了Python socket模塊ftp傳輸文件過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11

最新評(píng)論