python弹球游戏绑定鼠标事件_用python和pygame游戏编程入门-弹球[鼠标控制]
本節(jié)我們再將鼠標(biāo)的事件引入到這個動畫中,要做什么呢?就是在動畫中,如果按下鼠標(biāo)左鍵,小球會停止移動,如果松開左鍵,小球會移動到鼠標(biāo)的位置,然后繼續(xù)剛才的運動;如果按下鼠標(biāo)左鍵不放,移動鼠標(biāo),小球就會跟隨鼠標(biāo)移動,感覺是鼠標(biāo)在拖動小球一樣,鼠標(biāo)松開,小球繼續(xù)之前的運動。
分解:
一、如果按下鼠標(biāo)左鍵,小球會停止移動
(1)判斷鼠標(biāo)按下事件:event.type == pygame.MOUSEBUTTONDOWN
怎么知道是左鍵還是右鍵?event.button = 鼠標(biāo)按下鍵編號 (取值為整數(shù),左鍵為1,右鍵為3)
(2)讓小球停止運動,這個怎么做,其實很簡單,我們需要新建一個變量isstop=False,在主循環(huán)中,如果isstop==true我們就停止執(zhí)行小球?qū)ο蟮膍ove()方法即可。
二、如果松開左鍵,小球會移動到鼠標(biāo)的位置,然后繼續(xù)剛才的運動
(1)鼠標(biāo)松開事件;event.type == pygame.MOUSEBUTTONUP
(2)小球移動到鼠標(biāo),繼續(xù)運動。繼續(xù)運動很簡單,只要將我們上一步的變量isstop設(shè)置為false。
(3)怎么移動到鼠標(biāo)呢?這里需要通過一個簡單的計算,如圖。
小球的坐標(biāo)x、y也就是它距左邊和頂部的距離( ballrect.left,ballrect.top),鼠標(biāo)的當(dāng)前坐標(biāo)(event.pos[0],event.pos[1]),因此小球要到鼠標(biāo)的位置就要在x方向上移動event.pos[0] - ballrect.left;y周方向移動event.pos[1] - ballrect.top。
三、如果按下鼠標(biāo)左鍵不放,移動鼠標(biāo),小球就會跟隨鼠標(biāo)移動
(1)判斷鼠標(biāo)移動移動事件event.type == pygame.MOUSEMOTION
(2)進一步判斷是哪個鍵被按下,event.buttons[0,0,0] 對應(yīng)鼠標(biāo)的三個鍵,鼠標(biāo)移動時,這三個件處于按下狀態(tài),對應(yīng)的位置值為1
(3)小球移動到鼠標(biāo)位置,跟第二部完全相同。
四、控制小球暫停還是運動
在監(jiān)視顯示器是否是活動狀態(tài)來控制游戲是否暫停還是繼續(xù)的代碼處,增加一個監(jiān)視isstop是否暫停的條件,找到if pygame.display.get_active(),修改為:if pygame.display.get_active() and not isstop:
完整的程序代碼:
本站內(nèi)容未經(jīng)許可,禁止任何網(wǎng)站及個人進行轉(zhuǎn)載。
總結(jié)
以上是生活随笔為你收集整理的python弹球游戏绑定鼠标事件_用python和pygame游戏编程入门-弹球[鼠标控制]的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 花呗分期了无力还款怎么办 花呗分期后还不
- 下一篇: python自动发邮件运行正常就是收不到