Пишу платформер на python на windows 10, хочу сделать что бы персонаж поварачивался(смену картинки при нажатии), но у меня почему то не выходит?

При запуске и во время проверки ошибок не выдает, но и не меняет изображение

код файла main.py
from pygame import *
import sys
import os

# Инициализируем загруженную библиотеку.
init()


pictures_folder = os.path.join('p1_jump.png')
player_left = image.load(os.path.join('p1_walk_l.png'))
player_right = image.load(os.path.join('p1_walk_r.png'))


# Создаем окно разрешением 640х480
screen = display.set_mode((640, 480))

# Устанавливаем название окна
display.set_caption('example')

# Загружаем фоновый рисунок, в формате:
# jpg, png, gif(без анимации), bmp, pcx, tga(без сжатия), tif.
background = image.load('bg.png')


######
images = ['p1_walk_l.png']
######


# Отрисовываем рисунок в нашем окне
screen.blit(background, (0, 0))

# Создаем игровой объект
class GameObj:
    def __init__(self, img, x, y, step):
        self.img = img # Картинка объекта
        self.x = x # x, y - коодинаты начального положения
        self.y = y
        self.step = step # Шаг, на который будет смещаться объкт
        self.pos = img.get_rect().move(x, y)
    def _move(self, event):
        if event.key == K_UP: #273 код клавиши вверх
            self.pos = self.pos.move(0, -self.step)
        if event.key == K_DOWN:
            self.pos = self.pos.move(0, self.step)
        if event.key == K_LEFT:
            self.image = player_left
            self.pos = self.pos.move(-self.step, 0)
        if event.key == K_RIGHT:
            self.image = player_left
            self.pos = self.pos.move(self.step, 0)

       
avatar = image.load('p1_jump.png')

# Инициируем игровой объект
x = GameObj(avatar, 320, 220, 10)

# Рисуем картинку объекта, в его координатах
screen.blit(x.img, x.pos)

# Запускаем бесконечный цикл, чтобы окно не схлопнулось после появления :)
while 1:
    for i in event.get(): # Перебор в списке событий
        if i.type == QUIT: # Обрабатываем событие шечка по крестику закрытия окна
            sys.exit()
        if i.type == KEYDOWN:
            screen.blit(background, x.pos, x.pos)
            x._move(i)
            screen.blit(x.img, x.pos)
    # Обновляем изображение в окне, чтобы изменения в нем стали видны
    display.flip()


код файла pl.py
import pygame
import random
import os


class Player(pygame.sprite.Sprite):
    def __init__(self, player_img, color, w, h):
        pygame.sprite.Sprite.__init__(self)
        self.image = player_img
        self.image.set_colorkey(color)
        self.rect = self.image.get_rect()
        self.w = w
        self.h = h
        self.rect.center = (self.w / 2, self.h / 2)

    def update(self):
        self.rect.x += 5
        if self.rect.left > self.w:
          self.rect.right = 0
  • Вопрос задан
  • 77 просмотров
Решения вопроса 1
SoreMix
@SoreMix Куратор тега Python
yellow
У вас в редакторе кода не подсвечиваются неиспользуемые переменные?

Одинаковые
if event.key == K_LEFT:
  self.image = player_left
  self.pos = self.pos.move(-self.step, 0)
if event.key == K_RIGHT:
  self.image = player_left
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы