Anonymous
Как мне создать рамку в Pygame, чтобы мой персонаж не ходил по изображению?
Сообщение
Anonymous » 28 дек 2024, 05:59
Мне нужна прямоугольная рамка вокруг изображения, чтобы мой персонаж перестал проходить по ней. Было бы неплохо, если бы мой персонаж останавливался в определенных координатах, а не ходил по изображению.
Я пытался создать границу с помощью моих «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()
Я не получаю никаких сообщений об ошибках, но мне нужно создать границу вокруг дома.
Подробнее здесь:
https://stackoverflow.com/questions/568 ... r-an-image
1735354784
Anonymous
Мне нужна прямоугольная рамка вокруг изображения, чтобы мой персонаж перестал проходить по ней. Было бы неплохо, если бы мой персонаж останавливался в определенных координатах, а не ходил по изображению. Я пытался создать границу с помощью моих «x» и «y». координаты, но граница кажется растянутой по всему экрану. [code]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() [/code] Я не получаю никаких сообщений об ошибках, но мне нужно создать границу вокруг дома. Подробнее здесь: [url]https://stackoverflow.com/questions/56845134/how-do-i-create-a-border-in-pygame-so-my-character-doesnt-walk-over-an-image[/url]