if not character.get_rect() in screen.get_rect():
print("error")
我看到你在这里尝试什么。如果要检查 aRect
是否在另一个内部,请使用contains()
:
contains()
测试一个矩形是否在另一个矩形内
contains(Rect) -> bool
当参数完全在矩形内时返回 true。
如果您只是想停止屏幕边缘的移动,一个简单的解决方案是使用clamp_ip()
:
clamp_ip()
将矩形移动到另一个矩形内
clamp_ip(Rect) -> None
与 Rect.clamp() 相同 [返回一个新矩形,该矩形被移动到完全位于参数 Rect 内。如果矩形太大而无法放入其中,则它在参数 Rect 内居中,但其大小不会改变。] 方法,而是在原地操作。
这是一个简单的示例,您不能将黑色矩形移到屏幕外:
import pygame
pygame.init()
screen=pygame.display.set_mode((400, 400))
screen_rect=screen.get_rect()
player=pygame.Rect(180, 180, 20, 20)
run=True
while run:
for e in pygame.event.get():
if e.type == pygame.QUIT: run = False
keys = pygame.key.get_pressed()
if keys[pygame.K_w]: player.move_ip(0, -1)
if keys[pygame.K_a]: player.move_ip(-1, 0)
if keys[pygame.K_s]: player.move_ip(0, 1)
if keys[pygame.K_d]: player.move_ip(1, 0)
player.clamp_ip(screen_rect) # ensure player is inside screen
screen.fill((255,255,255))
pygame.draw.rect(screen, (0,0,0), player)
pygame.display.flip()