#python #pygame
Вопрос:
Я делаю шутер сверху вниз pygame
, и я столкнулся с этой ошибкой:
self.screen_rect = screen.get_rect()
Это мой код:
from pygame import *
import pygame
from pygame import surface
from pygame.draw import rect
pygame.init()
(window_width, window_height) = (1000, 500)
window_fill_color = (255, 255, 255)
global screen
screen = pygame.display.set_mode((window_width, window_height))
pygame.display.set_caption('main ludum dare 49 window')
screen.fill(window_fill_color)
pygame.display.flip()
running = True
class player(object):
def __init__(self):
self.rect = pygame.rect.Rect((500, 250, 25, 25))
def show_player(self, surface):
pygame.draw.rect(screen, (0, 255, 251), self.rect)
def move(self):
key = pygame.key.get_pressed()
if key[pygame.K_LEFT]:
self.rect.move_ip(-1, 0)
if key[pygame.K_RIGHT]:
self.rect.move_ip(1, 0)
if key[pygame.K_UP]:
self.rect.move_ip(0, -1)
if key[pygame.K_DOWN]:
self.rect_1.move_ip(0, 1)
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
pygame.display.update()
pygame.key.get_pressed()
player.show_player(surface, screen)
player.move()
Пожалуйста, помогите мне. Я пробовал кучу вещей , таких как добавление a get_rect
, и это не работает.
Ответ №1:
Читайте об Classes
этом . Вы должны создать объект экземпляра класса.
См. Руководство по стилю для кода Python
Имена классов обычно должны использовать соглашение о заглавных словах.
Измените имя класса на Player
:
class Player(object):
def __init__(self):
self.rect = pygame.rect.Rect((500, 250, 25, 25))
def show_player(self, surface):
pygame.draw.rect(screen, (0, 255, 251), self.rect)
def move(self):
key = pygame.key.get_pressed()
if key[pygame.K_LEFT]:
self.rect.move_ip(-1, 0)
if key[pygame.K_RIGHT]:
self.rect.move_ip(1, 0)
if key[pygame.K_UP]:
self.rect.move_ip(0, -1)
if key[pygame.K_DOWN]:
self.rect_1.move_ip(0, 1)
Создайте экземпляр объектов Player
класса:
player = Player()
Полный пример:
import pygame
pygame.init()
window_width, window_height = (1000, 500)
window_fill_color = (255, 255, 255)
screen = pygame.display.set_mode((window_width, window_height))
pygame.display.set_caption('main ludum dare 49 window')
class Player(object):
def __init__(self):
self.rect = pygame.rect.Rect((500, 250, 25, 25))
def show_player(self, surface):
pygame.draw.rect(screen, (0, 255, 251), self.rect)
def move(self):
key = pygame.key.get_pressed()
if key[pygame.K_LEFT]:
self.rect.move_ip(-1, 0)
if key[pygame.K_RIGHT]:
self.rect.move_ip(1, 0)
if key[pygame.K_UP]:
self.rect.move_ip(0, -1)
if key[pygame.K_DOWN]:
self.rect.move_ip(0, 1)
player = Player()
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
pygame.key.get_pressed()
player.move()
screen.fill(window_fill_color)
player.show_player(screen)
pygame.display.update()