Pygame – 创建精灵
Sprite是对象,具有高度、宽度、颜色等不同属性,以及向右、向左、向上和向下移动、跳跃等方法。在本文中,我们希望创建一个用户可以控制的对象对象并使用箭头键向前、向后、向上和向下移动它。
首先看看我们的第一类,即定义我们的精灵的类,我们将称该类为精灵。这个 Sprite 类定义了它的位置(x 和 y 坐标)、对象的尺寸、颜色等。首先,我们将调用我们的__init__()方法。它被称为类的构造函数。
示例:创建 Sprite 类
Python3
import pygame
# GLOBAL VARIABLES
COLOR = (255, 100, 98)
SURFACE_COLOR = (167, 255, 100)
WIDTH = 500
HEIGHT = 500
# Object class
class Sprite(pygame.sprite.Sprite):
def __init__(self, color, height, width):
super().__init__()
self.image = pygame.Surface([width, height])
self.image.fill(SURFACE_COLOR)
self.image.set_colorkey(COLOR)
pygame.draw.rect(self.image,
color,
pygame.Rect(0, 0, width, height))
self.rect = self.image.get_rect()
Python3
import pygame
import random
# GLOBAL VARIABLES
COLOR = (255, 100, 98)
SURFACE_COLOR = (167, 255, 100)
WIDTH = 500
HEIGHT = 500
# Object class
class Sprite(pygame.sprite.Sprite):
def __init__(self, color, height, width):
super().__init__()
self.image = pygame.Surface([width, height])
self.image.fill(SURFACE_COLOR)
self.image.set_colorkey(COLOR)
pygame.draw.rect(self.image,color,pygame.Rect(0, 0, width, height))
self.rect = self.image.get_rect()
pygame.init()
RED = (255, 0, 0)
size = (WIDTH, HEIGHT)
screen = pygame.display.set_mode(size)
pygame.display.set_caption("Creating Sprite")
all_sprites_list = pygame.sprite.Group()
object_ = Sprite(RED, 20, 30)
object_.rect.x = 200
object_.rect.y = 300
all_sprites_list.add(object_)
exit = True
clock = pygame.time.Clock()
while exit:
for event in pygame.event.get():
if event.type == pygame.QUIT:
exit = False
all_sprites_list.update()
screen.fill(SURFACE_COLOR)
all_sprites_list.draw(screen)
pygame.display.flip()
clock.tick(60)
pygame.quit()
现在,已经创建了类,我们可以从类中创建对象。它使我们能够使用相同的类创建所需数量的对象。现在我们将使用我们的类 Sprite 创建一个对象。
句法:
object = Sprite(RED,WIDTH,HEIGHT)
默认情况下,对象将位于 (0,0) 位置,即屏幕的左上角。我们可以更改对象的 x 和 y 属性。
句法:
object.rect.x = value
object.rect.y = value
我们可以定义 n 个想要创建的精灵,但为了便于理解,让我们简化一下。在这里,我们创建了一个特定尺寸的矩形精灵,我们可以在其上执行不同的操作来对精灵执行前进、后退、跳跃、慢速、加速等。
示例:创建精灵
蟒蛇3
import pygame
import random
# GLOBAL VARIABLES
COLOR = (255, 100, 98)
SURFACE_COLOR = (167, 255, 100)
WIDTH = 500
HEIGHT = 500
# Object class
class Sprite(pygame.sprite.Sprite):
def __init__(self, color, height, width):
super().__init__()
self.image = pygame.Surface([width, height])
self.image.fill(SURFACE_COLOR)
self.image.set_colorkey(COLOR)
pygame.draw.rect(self.image,color,pygame.Rect(0, 0, width, height))
self.rect = self.image.get_rect()
pygame.init()
RED = (255, 0, 0)
size = (WIDTH, HEIGHT)
screen = pygame.display.set_mode(size)
pygame.display.set_caption("Creating Sprite")
all_sprites_list = pygame.sprite.Group()
object_ = Sprite(RED, 20, 30)
object_.rect.x = 200
object_.rect.y = 300
all_sprites_list.add(object_)
exit = True
clock = pygame.time.Clock()
while exit:
for event in pygame.event.get():
if event.type == pygame.QUIT:
exit = False
all_sprites_list.update()
screen.fill(SURFACE_COLOR)
all_sprites_list.draw(screen)
pygame.display.flip()
clock.tick(60)
pygame.quit()
输出: