class Character:
def __init__(self, x, y):
self.image = pygame.image.load("Player.gif").convert_alpha()
self.rect = self.image.get_rect()
self.topleft = (x, y)
self.mask = pygame.mask.from_surface(self.image)
def draw(self, screen):
screen.blit(self.image, self.rect)
class Guard:
def __init__(self):
self.image = pygame.image.load("Guard.png").convert_alpha()
self.rect = self.image.get_rect()
self.mask = pygame.mask.from_surface(self.image)
def draw(self, screen):
screen.blit(self.image, self.rect)
# def bounce(self, speed):
def main():
pygame.init()
screen_size = width, height = 1200, 800
screen = pygame.display.set_mode(screen_size)
map = pygame.image.load("background.png").convert_alpha()
map_mask = pygame.mask.from_surface(map)
mask_image = map_mask.to_surface()
character = Character(350, 250)
guard1 = Guard()
guard2 = Guard()
character = Character(50, 50)
character_mask = character.mask.to_surface()
guard1 = Guard()
guard2 = Guard()
clock = pygame.time.Clock()
is_playing = True
while is_playing:# while is_playing is True, repeat
for event in pygame.event.get():
if event.type == pygame.QUIT:
is_playing = False
keys = pygame.key.get_pressed()
if keys[pygame.K_d]:
character.rect.move_ip(7,0)
if keys[pygame.K_a]:
character.rect.move_ip(-7,0)
if keys[pygame.K_w]:
character.rect.move_ip(0,-7)
if keys[pygame.K_s]:
character.rect.move_ip(0,7)
if map_mask.overlap(character.mask, character.topleft ):
print("colliding")
screen.fill((255,255,255))
screen.blit(mask_image, (0,0))
screen.blit(character_mask, (100, 200))
character.draw(screen)
# guard1.draw(screen)
# guard2.draw(screen)
# character.draw(screen)
pygame.display.update()
clock.tick(50)
pygame.quit()
sys.exit()
if __name__=="__main__":
main()
Здравствуйте, я работаю над небольшой игрой/программой, в которой моему персонажу нужно перемещаться по пещере. Если персонаж сталкивается со стенами пещеры, его положение сбрасывается. Я сделал маску макета пещеры, оставив основной путь прозрачным. Я включу изображение. Когда я проверяю, конфликтуют ли маска персонажа и маска карты, он говорит, что это так, даже если мой персонаж находится на правильном пути. Это определенно может быть проблемой со смещением, которую мне трудно понять. Любая помощь приветствуется!
is_playing = True while is_playing:# while is_playing is True, repeat
for event in pygame.event.get(): if event.type == pygame.QUIT: is_playing = False
keys = pygame.key.get_pressed() if keys[pygame.K_d]: character.rect.move_ip(7,0) if keys[pygame.K_a]: character.rect.move_ip(-7,0) if keys[pygame.K_w]: character.rect.move_ip(0,-7) if keys[pygame.K_s]: character.rect.move_ip(0,7)
if map_mask.overlap(character.mask, character.topleft ): print("colliding") screen.fill((255,255,255))
if __name__=="__main__": main() [/code] Здравствуйте, я работаю над небольшой игрой/программой, в которой моему персонажу нужно перемещаться по пещере. Если персонаж сталкивается со стенами пещеры, его положение сбрасывается. Я сделал маску макета пещеры, оставив основной путь прозрачным. Я включу изображение. Когда я проверяю, конфликтуют ли маска персонажа и маска карты, он говорит, что это так, даже если мой персонаж находится на правильном пути. Это определенно может быть проблемой со смещением, которую мне трудно понять. Любая помощь приветствуется! [img]https://i.sstatic.net/Z4tq36ym.png[/img]