乐愚社区Beta

 编程语言  >  pygame入门04.03——鼠标拖动物体移动

pygame入门04.03——鼠标拖动物体移动

原来是稀琳  L7  • 2024-10-10 • 回复 1 • 只看楼主举报    


我是一个python入门的小白,做这个系列即是为了巩固pygame的相关知识,也是为了考验自己坚持做一件事。
另外如果以下内容有错误或不规范的请各位大佬积极指出,谢谢大家

效果:在窗口上我会画一个圆,我可以用鼠标拖动它移动。

代码展示:

import pygame
import sys

#初始化pygame
from pygame.locals import*
pygame.init()

#创建游戏窗口
width =640
height = 480
screen = pygame.display.set_mode((width,height))

#给游戏窗口命名
pygame.display.set_caption("拖动圆")

# 定义颜色 
WHITE = (25, 55, 5) 
BLACK = (150, 100, 30) 

# 圆的初始位置和半径 
circle_pos = [400, 300] 
circle_radius = 50 

# 是否在拖动圆 
dragging = False 


runing = True
while runing:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            runing = False

         # 处理鼠标按下事件 
        if event.type  == pygame.MOUSEBUTTONDOWN: 
            # 检查鼠标是否在圆内 
            if (event.pos[0]  - circle_pos[0]) ** 2 + (event.pos[1]  - circle_pos[1]) ** 2 <= circle_radius ** 2: 
                dragging = True 

         # 处理鼠标释放事件 
        if event.type  == pygame.MOUSEBUTTONUP: 
            dragging = False 
 
        # 处理鼠标移动事件 
        if event.type  == pygame.MOUSEMOTION and dragging: 
            circle_pos = list(event.pos)  

        # 填充背景 
    screen.fill(WHITE)  
 
    # 绘制圆 
    pygame.draw.circle(screen,  BLACK, circle_pos, circle_radius) 

    #刷新游戏窗口
    pygame.display.update()

#关闭游戏窗口
pygame.quit()
sys.exit()


思维过程:

其实就是简单的勾股定理逻辑语句的运用

1、勾股定理的运用:我们画的图形必定有一个中点,比如:圆有圆心,正方形有对称点,三角形有重心,将它们对应在X-Y平面直角坐标系中就会有唯一的一个(x,y)坐标。另外我们知道鼠标所经过的每一个位置都是有其对应的(x,y)坐标。
就拿圆作为案例:

#圆的坐标
circle_pos = [400, 300] 
'''
这里用列表的原因是为下面进行勾股定理运用代码更加的美观
event.pos[0]  - circle_pos[0]) ** 2 + (event.pos[1]  - circle_pos[1]) ** 2 <= circle_radius ** 2

都是运用列表的形式,更加统一和美观

'''

接下来我们根据一组图片来看一下为什么需要勾股定理

r^2 = Δx ^2  + Δy^2

接下来就是逻辑语句上的关系:

if r^2 <= R ---->确定鼠标在圆内,接下来我们就可以根据此条件在进行移动圆,详细可以看上面的代码。

总而言之,这是一个很巧妙的方法,通过勾股定理来确定鼠标在圆内,在以此控制圆移动,其他图形也是差不多,先确定鼠标位置在图形中,再根据逻辑移动它。遇到困难,不要怕,像下雨时遇见寒风一样,走过去,不要怕,你有伞,你不是一无所有,你可以挺过去。

与君共勉,下期再见。

 

 

 

 

 

 


1条回帖
原来是稀琳 楼主  L7  评论于
(0)  回复(0) 1#
if r^2 <= R²:
还没注册帐号?快来注册社区帐号,和我们一起嗨起来!
关于本社区

集各类兴趣爱好于一身的轻量化交流社区,在此您可以和他人一起分享交流您觉得有价值的内容,社区鼓励大家发表原创内容,为社区添砖加瓦!

发帖奖励 → 社区版规 → 招聘版主 →
推荐版块
扫描二维码下载社区APP
回到顶部