我编写此代码是因为我想使用键箭头移动精灵。我想没什么特别的。
我花了很多时间寻找显示和移动简单图片的教程。
下面是我的代码:
第一部分比较标准,导入库并定义程序的特征值:
import sys
import pygame
pygame.init()
#refer value
border_X=800
border_Y=600
FPS=30
POS_X=300
POS_Y=300
INCREASE_X=0
INCREASE_Y=0
screen=pygame.display.set_mode((border_X,border_Y))
clock=pygame.time.Clock()
这里我定义了sprite类,可能是对类的定义有误解,可能是我使用rect.center
不当。
class Ship(pygame.sprite.Sprite):
image = pygame.image.load("fighter_0.png")
image = image.convert_alpha()
def __init__(self, X_INIT, Y_INIT):
super(Ship, self).__init__()
self.image = Ship.image
self.rect = self.image.get_rect()
self.rect.center = (X_INIT, Y_INIT)
def update(self,x,y):
self.rect.center = (x,y)
这里我创建了精灵组,单个精灵可能不需要,但是这个程序的主要目的是学习。
在任何情况下,我都尝试在不创建组“角色”的情况下显示精灵
character = pygame.sprite.Group()
Ship.groups=character
ship=Ship(POS_X,POS_Y)
ship.add(character)
最后是循环循环,更新方式可能有错误
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
if event.type == pygame.KEYDOWN:
if event.type == pygame.KEYUP:
'''i've removed the if cycle of event.type
because it's long and unnecessary to
explain why the sprite doesn't appear'''
POS_X+=INCREASE_X
POS_Y+=INCREASE_Y
ship.update(POS_X,POS_Y)
clock.tick(FPS)
#i've tried both, flip and update
pygame.display.flip()
pygame.display.update()
pygame.quit()
如果我完全错误地计算了类精灵的模式,有人可以解释如何为这种情况设置类船吗?