我的 Pygame 精灵不会出现。我的代码有什么问题?



我一直在尝试使用Pygame制作一个小游戏。这是我第一次使用Pygame,我看了很多教程,但我的精灵仍然不会出现。它只显示了一条黑线。我该怎么修?

Xcord = 0
grey = (192,192,192)
import pygame, random, time
pygame.init()
import time
Color_line=(0,0,0)
screen = pygame.display.set_mode([1000, 500])
all_sprites_list = pygame.sprite.Group()
import pygame
grey = (192,192,192)
playerWidth = 50
playerHeight = 50
all_sprites_list = pygame.sprite.Group()
class Player(pygame.sprite.Sprite):
def __init__(self, grey, playerWidth, playerHeight):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.Surface([50, 50])
self.image.fill(grey)
self.image.set_colorkey(grey)
pygame.draw.rect(self.image, grey, [0, 0, playerWidth, playerHeight])
self.rect = self.image.get_rect()
player = Player(grey, 50, 50)
player.rect.x = Xcord
player.rect.y = 400
def update(Player):
pygame.sprite.Sprite.update(Player)
player.rect.x = Xcord
player.rect.y = 400
all_sprites_list.add(player)
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
screen.fill((255, 255, 255))
all_sprites_list.update()
pygame.draw.line(screen,Color_line,(0,500),(1000,500), 75)
all_sprites_list.draw(screen)
pygame.display.flip()
Xcord =+ 50
if Xcord == 400:
Xcord == 0
pygame.quit()

我正在尝试制作类似于谷歌Chrome的无Wi-Fi恐龙游戏。

您有一些错误。

第一:您使用GRAYfill精灵,而在GRAY上使用set_key,因此精灵是透明的,您根本看不到精灵。

第二:代码运行非常快,精灵离开窗口,您看不到精灵。

第三:在代码if Xcord == 400: Xcord == 0中,您需要= 0而不是== 0,这就是为什么精灵离开窗口,永远不会回到(0, 400)的位置


另一个问题是代码中的大混乱——有些代码甚至运行了两次。


我的版本有很多变化。

# PEP8: all imports at start.
# PEP8: every module on a separate line
import pygame
import random
import time
# --- constants ---  # PEP8: `UPPER_CAS_NAMES`
GRAY = (192, 192, 192)
RED  = (255,   0,   0)
# --- classes ---  # PEP8: `CamelCaseName`
class Player(pygame.sprite.Sprite):
def __init__(self, color, x, y, width, weight):  # you don't need prefix `player` in variables in class `Player`
super().__init__()   # Python 3 method for running a function from the original class
self.color = color
self.image = pygame.Surface([width, weight])
self.image.fill(color)
#self.image.set_colorkey(color)
self.rect = self.image.get_rect()
self.rect.x = x
self.rect.y = y
def update(self):
self.rect.x += 5
if self.rect.x >= 400:
self.rect.x = 0
# --- main ---
color_line = (0,0,0)  # PEP8: spaces around `=`, space after `,`
pygame.init()
screen = pygame.display.set_mode([1000, 500])
all_sprites_list = pygame.sprite.Group()
player_width  = 50
player_weight = 50
player = Player(RED, 50, 400, 50, 50)  # color, x, y, width, height
all_sprites_list.add(player)
clock = pygame.time.Clock()
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# - only updates -
all_sprites_list.update()
# - only draws -
screen.fill((255, 255, 255))
pygame.draw.line(screen, color_line, (0, 500), (1000, 500), 75)
all_sprites_list.draw(screen)
pygame.display.flip()
clock.tick(30)  # Slow down to 30 FPS (frames per seconds)
pygame.quit()

PEP8——Python代码的样式指南

最新更新