Я относительно новичок в pygame и python в целом, и сейчас я работаю над школьным проектом. Я пытаюсь сделать так, что, когда мой спрайт Марио перекрывается с эскизом лестницы, он может двигаться вверх, а когда он не перекрывается, впоследствии не может двигаться вверх. Вот мой код:Лестница подъема в pygame
import pygame
import sys
from pygame.locals import*
from Mario import Mario
from Ladder import Ladder
pygame.init()
game_over = False
dispwidth = 600
dispheight = 800
cellsize = 10
white = (255, 255, 255)
black = (0, 0, 0)
bg = white
mario = Mario([0, 800])
ladder = Ladder([600, 800])
mario2 = Mario.image
ladder2 = Ladder.image
mario_rect = mario2.get_rect()
ladder_rect = ladder2.get_rect()
'''def detectcollisions(x1, y1, w1, h1, x2, y2, w2, h2):
if x2 + w2 >= x1 >= x2 and y2 + h2 >= y1 >= y2:
return True
elif x2 + w2 >= x1 + w1 >= x2 and y2 + h2 >= y1 >= y2:
return True
elif x2 + w2 >= x1 >= x2 and y2 + h2 >= y1 + h1 >= y2:
return True
elif x2 + w2 >= x1 + w1 >= x2 and y2 + h2 >= y1 + h1 >= y2:
return True
else:
return False
'''
class Ladder(pygame.sprite.Sprite):
image = None
def __init__(self, location):
pygame.sprite.Sprite.__init__(self)
if Ladder.image is None:
Ladder.image = pygame.image.load('Wood-ladder.png')
self.image = Ladder.image
self.rect = self.image.get_rect()
self.rect.bottomright = location
self.x = 499
self.y = 420
def draw(self, surface):
surface.blit(self.image, (self.x, self.y))
class Mario(pygame.sprite.Sprite):
image = None
def __init__(self, location):
pygame.sprite.Sprite.__init__(self)
if Mario.image is None:
Mario.image = pygame.image.load('mario3.png')
self.image = Mario.image
self.rect = self.image.get_rect()
self.rect.bottomleft = location
self.x = 0
self.y = 736
def handle_keys(self):
keys_pressed = pygame.key.get_pressed()
if keys_pressed[K_LEFT]:
self.x -= 5
if keys_pressed[K_RIGHT]:
self.x += 5
while self.collide_rect(ladder):
if keys_pressed[K_UP]:
self.y -= 5
def draw(self, surface):
surface.blit(self.image, (self.x, self.y))
def main():
FPS = 30
while not game_over:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
keys_pressed = pygame.key.get_pressed()
if keys_pressed[K_LEFT]:
mario.x -= 1
if keys_pressed[K_RIGHT]:
mario.x += 1
if mario_rect.colliderect(ladder_rect):
if keys_pressed[K_UP]:
mario.y -= 5
mario.handle_keys()
screen.fill(bg)
ladder.draw(screen)
mario.draw(screen)
pygame.display.update()
fpstime.tick(FPS)
while True:
global fpstime
global screen
fpstime = pygame.time.Clock()
screen = pygame.display.set_mode((dispwidth, dispheight))
pygame.display.set_caption('Donkey Kong')
main()
Каковы ваши ошибки или что не работает? –