我正在制作《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()
请帮帮我。我已经尝试了很多事情,比如添加一个get_rect
,这些东西不起作用。
了解Classes
。你必须创建一个类的实例对象。
参见Python代码风格指南
类名通常应使用CapWords约定。
将类名改为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()