【发布时间】:2015-02-15 11:48:39
【问题描述】:
这是我的程序源代码。必要时略读:
import pygame, sys
import time
pygame.init()
screen = pygame.display.set_mode([1500,750])
background = pygame.Surface(screen.get_size())
background.fill([255, 255, 255])
class Attacker(pygame.sprite.Sprite):
def __init__(self, image_file, location):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.image.load(image_file)
self.rect = self.image.get_rect()
self.x_pos, self.y_pos = location
self.rect.x, self.rect.y = location
self.jumping = False
self.falling = False
self.direction = 1
def jump(self):
if self.y_pos > CEILING:
self.x_pos += 1*self.direction
self.y_pos -= 5
else:
self.jumping = False
self.falling = True
self.update_pos()
def fall(self):
if self.y_pos < FLOOR:
self.x_pos += 1*self.direction
self.y_pos += 5
else:
self.falling = False
self.update_pos()
def InvisWalls(self):
if self.rect.left < 0:
self.direction = -self.direction
if self.rect.right > screen.get_width():
self.direction = -self.direction
self.update_pos()
def update_pos(self):
self.rect.x = self.x_pos
self.rect.y = self.y_pos
FLOOR = 700
CEILING = 10
my_ball = Attacker('wackyball.bmp',[300, FLOOR])
delay = 100
interval = 50
pygame.key.set_repeat(delay, interval)
running = True
while running:
if my_ball.jumping:
my_ball.jump()
if my_ball.falling:
my_ball.fall()
else:
my_ball.InvisWalls()
screen.blit(my_ball.image, my_ball.rect)
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_UP:
my_ball.y_pos -= 25
elif event.key == pygame.K_DOWN:
my_ball.y_pos += 25
elif event.key == pygame.K_RIGHT:
my_ball.direction = 1
my_ball.x_pos += 25
elif event.key == pygame.K_LEFT:
my_ball.direction = -1
my_ball.x_pos -= 25
elif event.key == pygame.K_SPACE:
if not my_ball.falling:
my_ball.jumping = True
my_ball.update_pos()
screen.blit(background, (0, 0))
screen.blit(my_ball.image, my_ball.rect)
pygame.display.flip()
pygame.quit()
我的问题是,当我的球跳跃时,它会直线上升,也会直线下降。我试图让球在曲线上跳跃的尝试只是失败了,只是让跳跃更快了。怎样才能让球像真球一样在连续的曲线上上下运动?
【问题讨论】:
标签: python-2.7 pygame pycharm