我是pygame的新手,我正在制作一个侧面滚动游戏,它使用一只鸟作为角色而且飞得很快,但我试图让它在屏幕上上下移动,但我无法弄清楚如何。
import pygame
from pygame.locals import *
import os
import sys
import time
pygame.init()
class Fly:
def __init__(self):
self.last_update = time.clock()
self.screen = pygame.display.set_mode((700, 400), 0, 32)
#Load bird
self.bird_state = 1
self.bird_frames = []
for r in xrange(1, 5):
self.bird_frames.append(pygame.image.load('bird%s.png' % r))
self.bg = pygame.image.load('bg.png').convert()
self.Loop()
def eventLoop(self):
'Take and process input from perephirals'
for event in pygame.event.get():
if event.type == QUIT:
sys.exit()
def Update(self):
self.bird_state += 1
if self.bird_state > 4:
self.bird_state = 1
def Draw(self):
self.screen.blit(self.bg, [0, 0])
self.screen.blit(self.bird_frames[self.bird_state - 1], (150, 150))
def Loop(self):
while 1:
self.eventLoop()
if time.clock() - self.last_update > 0.15:
self.Update()
self.last_update = time.clock()
self.Draw()
pygame.display.update()
Fly()
答案 0 :(得分:2)
import pygame
from pygame.locals import *
import os
import sys
import time
pygame.init()
class Fly:
def __init__(self):
self.last_update = time.clock()
self.screen = pygame.display.set_mode((700, 400), 0, 32)
#Load bird
self.bird_state = 1
self.bird_frames = []
for r in xrange(1, 5):
self.bird_frames.append(pygame.image.load('bird%s.png' % r))
self.bg = pygame.image.load('bg.png').convert()
self.Loop()
def eventLoop(self):
'Take and process input from perephirals'
for event in pygame.event.get():
if event.type == QUIT:
sys.exit()
def Update(self):
self.bird_state += 1
if self.bird_state > 4:
self.bird_state = 1
def Draw(self):
self.screen.blit(self.bg, [0, 0])
self.screen.blit(self.bird_frames[self.bird_state - 1], (150, 150))
def Loop(self):
while 1:
self.eventLoop()
k = pygame.key.get_pressed()
if k[K_DOWN]:
# Do something with your bird
if k[K_UP]:
# Do something with your bird
if time.clock() - self.last_update > 0.15:
self.Update()
self.last_update = time.clock()
self.Draw()
pygame.display.update()
Fly()
pygame.key.get_pressed
将检查您是否按下按钮。检查参考,了解您的选项。 http://www.pygame.org/docs/ref/key.html
将其置于循环中,因为它是“实时”。
k = pygame.key.get_pressed()
if k[K_DOWN]:
# Do somthing with your bird
if k[K_UP]:
# Do somthing with your bird
答案 1 :(得分:0)
如果您认为您的播放器是一个矩形(这可能适用于您游戏中的所有精灵),那么您所要做的就是为您的矩形设置两个参数self.speedx和self.speedy。由于您只需要向上和向下移动,因此speedx不会改变,但您可以根据按下的按钮快速调整。这是我的一款游戏的代码片段。它是我的播放器类的更新def的一部分。不幸的是,在这个游戏中我只想要横向(左和右)运动,但你会明白这一点。如果您需要帮助,请告诉我。这是代码:
def update(self):
# Ensures default motion is 0
self.speedx = 0
self.speedy = 0
# This checks to see what key's are pressed
keystate = pygame.key.get_pressed()
# This gives control for movement (Can use WASD or arrow keys)
if keystate[pygame.K_a] or keystate[pygame.K_LEFT]:
self.speedx = -5
if keystate[pygame.K_d] or keystate[pygame.K_RIGHT]:
self.speedx = 5
if keystate[pygame.K_SPACE]:
self.shoot(bullet_img)
# Gives movement based on keys that are pressed
self.rect.x += self.speedx
self.rect.y += self.speedy