pygame学习笔记——检测鼠标碰到、点击图片
生活随笔
收集整理的這篇文章主要介紹了
pygame学习笔记——检测鼠标碰到、点击图片
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、碰到效果實現思路
1.坐標檢測
時刻檢測鼠標的坐標,有沒有移到目標圖片的坐標范圍內,此方法無法準確描述不規則圖像的坐標范圍。
2.精靈碰撞檢測
創建一個鼠標精靈類,創建鼠標對象,一直跟著鼠標移動,鼠標對象==鼠標指針
檢測鼠標對象精靈,有沒有和其他精靈碰撞即可。
二、碰到效果代碼實現
1.案例說明
一個飛機精靈 (方向鍵可控制移動).
一個鼠標精靈,鼠標精靈跟隨鼠標。
檢測兩個精靈對象有無碰撞,碰撞就退出。
2.代碼
import pygame,syspygame.init()#pygame庫的初始化root_sf = pygame.display.set_mode((480,600))#創建窗口,設置大小'''
1.初始化 __init__
2.重寫update
3.image、rect屬性或變量
'''
#戰斗機
class Plane(pygame.sprite.Sprite):def __init__(self):pygame.sprite.Sprite.__init__(self)self.image = pygame.Surface((50,50))self.image.fill('green')self.rect = self.image.get_rect()#rect移動的方式更多self.rect.center = (220,550)#初始化位置,updata方法會將突破移到這個位置def update(self):keys = pygame.key.get_pressed()if keys[pygame.K_LEFT] and self.rect.left > 0:self.rect = self.rect.move((-10,0))elif keys[pygame.K_RIGHT] and self.rect.right < root_sf.get_width():self.rect = self.rect.move((10,0))elif keys[pygame.K_UP] and self.rect.top > 0:self.rect = self.rect.move((0,-10))elif keys[pygame.K_DOWN] and self.rect.bottom < root_sf.get_height():self.rect = self.rect.move((0,10))root_sf.blit(self.image,self.rect)#鼠標類
class Mouse(pygame.sprite.Sprite):def __init__(self):self.image = pygame.Surface((1,1))self.image.fill('red')self.rect = self.image.get_rect()self.rect.center = pygame.mouse.get_pos()#初始位置到鼠標指針def update(self):self.rect.center = pygame.mouse.get_pos()#移到鼠標指針位置root_sf.blit(self.image, self.rect)#創建鼠標精靈
mouse = Mouse()wj_plane = Plane()clock = pygame.time.Clock()
while True:#阻止窗口關閉#事件判斷for event in pygame.event.get():if event.type == pygame.QUIT:sys.exit()#更新畫面root_sf.fill('black')mouse.update()wj_plane.update()#檢測玩家飛機是否碰到鼠標指針if pygame.sprite.collide_mask(mouse, wj_plane):sys.exit()#玩家飛機碰到鼠標指針,就退出#刷新屏幕pygame.display.flip()clock.tick(30)
三、點擊效果
碰到鼠標 且 鼠標點擊 == 圖片被點擊
1.代碼實現
import pygame,syspygame.init()#pygame庫的初始化root_sf = pygame.display.set_mode((480,600))#創建窗口,設置大小'''
1.初始化 __init__
2.重寫update
3.image、rect屬性或變量
'''
#戰斗機
class Plane(pygame.sprite.Sprite):def __init__(self):pygame.sprite.Sprite.__init__(self)self.image = pygame.Surface((50,50))self.image.fill('green')self.rect = self.image.get_rect()#rect移動的方式更多self.rect.center = (220,550)#初始化位置,updata方法會將突破移到這個位置def update(self):keys = pygame.key.get_pressed()if keys[pygame.K_LEFT] and self.rect.left > 0:self.rect = self.rect.move((-10,0))elif keys[pygame.K_RIGHT] and self.rect.right < root_sf.get_width():self.rect = self.rect.move((10,0))elif keys[pygame.K_UP] and self.rect.top > 0:self.rect = self.rect.move((0,-10))elif keys[pygame.K_DOWN] and self.rect.bottom < root_sf.get_height():self.rect = self.rect.move((0,10))root_sf.blit(self.image,self.rect)#鼠標類
class Mouse(pygame.sprite.Sprite):def __init__(self):self.image = pygame.Surface((1,1))self.image.fill('red')self.rect = self.image.get_rect()self.rect.center = pygame.mouse.get_pos()#初始位置到鼠標指針def update(self):self.rect.center = pygame.mouse.get_pos()#移到鼠標指針位置root_sf.blit(self.image, self.rect)#創建鼠標精靈
mouse = Mouse()wj_plane = Plane()clock = pygame.time.Clock()
while True:#阻止窗口關閉#事件判斷for event in pygame.event.get():if event.type == pygame.QUIT:sys.exit()#更新畫面root_sf.fill('black')mouse.update()wj_plane.update()#檢測玩家飛機是否碰到鼠標指針 且 鼠標點擊if pygame.sprite.collide_mask(mouse, wj_plane) and pygame.mouse.get_pressed()[0]:sys.exit()#玩家飛機是否碰到鼠標指針 且 鼠標點擊,就退出#刷新屏幕pygame.display.flip()clock.tick(30)
2.鼠標點擊事件參考
pygame.mouse — pygame v2.1.1 documentation
總結
以上是生活随笔為你收集整理的pygame学习笔记——检测鼠标碰到、点击图片的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中国(北京)国际智能工业与信息安全技术发
- 下一篇: PRML笔记 第一章 Introduct