我正在尝试为学校项目制作一款游戏。我决定用python来做,因为我以前用过它,但是我已经从编码中休息了一下,不记得太多了,我不知道为什么我的代码不能工作。我想做一个类似于恐龙游戏的游戏(就像chrome上的那个),我的恐龙在我认为它应该跳的时候不会跳,我尝试了我能想到的一切,并搜索了几个小时来修复它。
下面是我的代码:import pygame, sys, random
from pygame.locals import QUIT
#variables
x=241
class Player(pygame.sprite.Sprite):
def __init__(self, picture_path, pos_x, pos_y):
super().__init__()
self.image = pygame.image.load(picture_path)
self.rect = self.image.get_rect()
self.rect.center = [pos_x,pos_y]
class Weed(pygame.sprite.Sprite):
def __init__(self, picture_path, pos_x, pos_y):
super().__init__()
self.image = pygame.image.load(picture_path)
self.rect = self.image.get_rect()
self.rect.center = [pos_x,pos_y]
#general setup
pygame.init()
clock = pygame.time.Clock()
#game screen
screen = pygame.display.set_mode((400, 300))
pygame.display.set_caption('game')
second_surface = pygame.Surface((400, 100))
second_surface.fill((4, 130, 40))
player = Player('DinoSprites - tard.png', 40, x)
player_group = pygame.sprite.Group()
player_group.add(player)
weed_group = pygame.sprite.Group()
for weed in range(3):
new_weed = Weed('tumble_weed.png', random.randrange(80,400), 241)
weed_group.add(new_weed)
while True:
screen.fill((168, 202, 255))
screen.blit(second_surface, (0, 250))
player_group.draw(screen)
weed_group.draw(screen)
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_SPACE:
x+=5
pygame.display.update()
clock.tick(15)
如果玩家按下空格键,恐龙就会跳起来。(我不知道它后来会怎么掉下来,但我想让他上去。)我试过了,但没有用。代码运行,但当我按空格键时,精灵停留在同一个地方。我不确定这是因为精灵不会更新,还是因为改变恐龙高度的代码是错误的。
您必须更改player.rect.x
而不是x
。x
只是在创建玩家时使用的一个变量。然而,当你改变x
时,玩家的内部属性不会神奇地改变。x
和player.rect.x
不绑定:
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_SPACE:
player.rect.x += 5
也可以参考
按住键时如何让精灵移动