日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

pygame学习笔记——检测鼠标碰到、点击图片

發布時間:2023/12/3 综合教程 30 生活家
生活随笔 收集整理的這篇文章主要介紹了 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学习笔记——检测鼠标碰到、点击图片的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。