qin_yin 发表于 2020-12-23 00:23:20

pygame获得矩形位置

import pygame
import sys

pygame.init()

size = width, height = 600, 400
speed = [-2, 1]
bg = (11, 242, 215)

clock = pygame.time.Clock()

# 创建指定大小窗口
screen = pygame.display.set_mode(size)

#设置窗口标题
pygame.display.set_caption('This is my frst GAME')

#加载素材
turle = pygame.image.load(r'C:\Users\Admin\Desktop\注册.jpg')

# 获取图像的矩形位置
position = turle.get_rect()
print(position)
position = position.move(100, 50)
print(position)



while True:
    # 事件迭代
    for event in pygame.event.get():

      if event.type == pygame.QUIT:
            sys.exit()

      elif event.type == pygame.MOUSEBUTTONDOWN:
            p = str(position)
            ind_bag = p.index('(')
            ind_end = p.index(')')
            p = p
            x1, y1, x2, y2 = p.split(',')
            print(x1, y1, x2, y2)
            print(event.pos)
            if int(x1) <= event.pos <= int(x2) and int(y1) <= event.pos <= int(y2):
                print('在里面')



    # 移动图像

    # 边缘检测
    if position.left < 0 or position.right > width:
      turle = pygame.transform.flip(turle, True, False)

      speed = -speed
    # 边缘检测
    if position.top < 0 or position.bottom > height:
      speed = -speed

    # 填充背景
    screen.fill(bg)
    #更新图像
    screen.blit(turle, position)
    #更新界面
    pygame.display.flip()
    # 延迟10毫秒
    pygame.time.delay(30)


以上代码目标是:当发现鼠标点击事件,判断鼠标位置是否在图像内坐标范围内
疑惑代码块:
position = turle.get_rect()   
print(position)
position = position.move(100, 50)
print(position)

输出结果:
<rect(0, 0, 160, 160)>
<rect(100, 50, 160, 160)>
我很疑惑,x2,y2,的值竟然没有变动,我的理解是矩形是由两个平面坐标点(x1:100,y1:50,   x2:160,y2:160) 当矩形的位置进行了移动,比如向x移动30,那么x1和x2分别需要+30
而这里x轴移动100,y轴移动50,但是x2,y2的值并没有发生任何变动,这是为什么

ljb209204 发表于 2020-12-23 08:25:23

我的理解是从上往下运行,下面一大段函数自然就是没有触发了。不知对你有帮助不?
页: [1]
查看完整版本: pygame获得矩形位置