Python 如何在Pygame中创建边框,使我的角色不';你不会走过一个图像吗?

Python 如何在Pygame中创建边框,使我的角色不';你不会走过一个图像吗?,python,pygame,Python,Pygame,我需要一个矩形边框围绕着一个图像,这样我的角色就不会再穿过它了。如果我的角色停在某个坐标处而不是在图像上行走,那就太好了 我试图用我的“x”和“y”坐标创建一个边框,但边框似乎在屏幕上延伸 import pygame from pygame.locals import * pygame.init() SCREEN_WIDTH = 800 SCREEN_HEIGHT = 700 screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIG

我需要一个矩形边框围绕着一个图像,这样我的角色就不会再穿过它了。如果我的角色停在某个坐标处而不是在图像上行走,那就太好了

我试图用我的“x”和“y”坐标创建一个边框,但边框似乎在屏幕上延伸

import pygame
from pygame.locals import *
pygame.init()

SCREEN_WIDTH = 800
SCREEN_HEIGHT = 700
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT,))
pygame.display.set_caption("Zombie Hunters")

background = pygame.image.load("background.jpg").convert()
background = pygame.transform.scale(background, (SCREEN_WIDTH,SCREEN_HEIGHT))

player = pygame.image.load("character no gun.png").convert_alpha()
player = pygame.transform.scale(player, (270, 270))

# these are the coordinates to move the player
x, y = 0, 0
MOVE_RIGHT = 1
MOVE_LEFT = 2
MOVE_UP = 3
MOVE_DOWN = 4
direction = 0
speed = 1

#House barrier
barrier_xlocation = 345
barrier_ylocation = 80
barrier_width = 190
barrier_height = 260

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

        if event.type == KEYDOWN:
            if event.key == ord('q'):
                pygame.quit()
                exit()

            if event.key == K_LEFT:
                direction = MOVE_LEFT

            if event.key == K_RIGHT:
                direction = MOVE_RIGHT

            if event.key == K_UP:
                direction = MOVE_UP

            if event.key == K_DOWN:
                direction = MOVE_DOWN

        elif event.type == KEYUP:

            if event.key == K_LEFT:
                direction = 0

            if event.key == K_RIGHT:
                direction = 0

            if event.key == K_UP:
                direction = 0

            if event.key == K_DOWN:
                direction = 0

    if(direction == MOVE_LEFT):

        x-= speed

    if(direction == MOVE_RIGHT):

        x+= speed

    if(direction == MOVE_UP):

        y-= speed

    if(direction == MOVE_DOWN):

        y += speed


    #Background
    screen.blit(background, (0, 0))

    #House border
    pygame.draw.rect(screen, (255,0,0), (barrier_xlocation,barrier_ylocation,barrier_width,barrier_height), 2)

    #Player hitbox
    pygame.draw.rect(screen, (255,0,0), (x + 117,y + 105, 50,50),2)
    screen.blit(player, (x,y))
    pygame.display.update()
我没有收到任何错误消息,但我需要在房子周围创建一个边框。

使用对象并检查两个矩形的碰撞

存储播放器的当前位置。球员位置改变后,检查是否与障碍物发生碰撞。当玩家和障碍物发生碰撞时,重置玩家的位置

as[
pygame.Surface
]对象的大小可以通过以下方式获得:

#存储当前位置
px,py=x,y
#换位
如果(方向==向左移动):
x-=速度
如果(方向==向右移动):
x+=速度
如果(方向==向上移动):
y-=速度
如果(方向==向下移动):
y+=速度
#设置玩家和障碍矩形
playerRect=pygame.Rect(x,y,*player.get_size())
barrierRect=pygame.Rect(
屏障位置、屏障位置、屏障宽度、屏障高度)
#检查有无碰撞
如果playerRect.colliderect(barrierRect):
#复位位置
x、 y=px,py