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