Answer the question
In order to leave comments, you need to log in
I am writing a platformer in python on windows 10, I want to make the character turn around (change the picture when pressed), but for some reason it doesn’t work for me?
At startup and during error checking, it does not issue, but does not change the image,
the code of the main.py file
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()
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
Answer the question
In order to leave comments, you need to log in
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question