Я делаю игру на pygame, в которой в настоящее время персонаж перемещается по экрану. Я хочу, чтобы персонаж мог покупать предметы, когда он стоит на крыше магазина. Я хочу, чтобы экранное меню отображалось, когда персонаж находится наверху магазина. Я также хочу, чтобы остальная часть игры продолжалась в фоновом режиме на случай, если я решу добавить некоторых врагов. shop_items
- это функция, которая должна запускаться для игрового меню и показывать доступные элементы. Я предоставляю весь код ниже. Любая помощь приветствуется, спасибо.
import pygame
pygame.font.init()
width = 800
height = 600
screen = pygame.display.set_mode([width, height])
walkRight = [pygame.image.load('R1.png'), pygame.image.load('R2.png'), pygame.image.load('R3.png'), pygame.image.load('R4.png'), pygame.image.load('R5.png'), pygame.image.load('R6.png'), pygame.image.load('R7.png'), pygame.image.load('R8.png'), pygame.image.load('R9.png')]
walkLeft = [pygame.image.load('L1.png'), pygame.image.load('L2.png'), pygame.image.load('L3.png'), pygame.image.load('L4.png'), pygame.image.load('L5.png'), pygame.image.load('L6.png'), pygame.image.load('L7.png'), pygame.image.load('L8.png'), pygame.image.load('L9.png')]
char = pygame.image.load('standing.png')
x = 50
y = 50
width = 40
height = 60
vel = 5
isJump = False
jumpCount = 10
left = False
right = False
down = False
up = False
walkCount = 0
shop = pygame.transform.scale(pygame.image.load("shop.png"), (60,60))
clock = pygame.time.Clock()
FPS = 60
def shop_items():
if x + char.get_width() < 60 and y + char.get_height() < 60:
screen.fill([0,0,0])
def redrawGameWindow():
global walkCount
screen.fill([166, 166, 166])
screen.blit(shop, (0,0))
if walkCount + 1 >= 27:
walkCount = 0
if left:
screen.blit(walkLeft[walkCount//3], (x,y))
walkCount += 1
elif right:
screen.blit(walkRight[walkCount//3], (x,y))
walkCount += 1
elif down:
screen.blit(char,(x,y))
walkcount = 0
elif up :
screen.blit(char, (x,y))
walkcount = 0
else:
screen.blit(char, (x, y))
walkCount = 0
pygame.display.update()
def main():
run = True
pygame.display.set_caption("bomb-mania")
global x
global y
global width
global height
global vel
global isJump
global jumpCount
global left
global right
global down
global walkCount
while run:
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT] and x > vel-15:
x -= vel
left = True
right = False
down = False
up = False
elif keys[pygame.K_RIGHT] and x < 800 - vel - width:
x += vel
left = False
right = True
down = False
up = False
elif keys[pygame.K_DOWN] and y < 600 - height:
y += vel
left = False
right = False
down = True
up = False
elif keys[pygame.K_UP] and y > vel-15:
y -= vel
left = False
right = False
down = False
up = True
else:
left = False
right = False
down = False
up = False
walkCount = 0
if x + char.get_width() < 60 and y + char.get_height() < 60:
# print("reached")
shop_items()
redrawGameWindow()
clock.tick(FPS)
pygame.display.flip()
main()