【发布时间】:2016-03-01 16:29:01
【问题描述】:
如果我有一个可以四处移动的精灵(见下文),屏幕上的箭头键。 (Up and Down 前后移动,左转和右转。) 我想知道当它熄灭时是否可以移动到屏幕的另一侧?但是无论角度如何,它都可以工作,因此如果将其一半驱动到边缘,则一半会出现在一侧。 (有点像蛇)有没有办法做到这一点?
到目前为止,这是我的代码:
import sys, pygame, math
from pygame.locals import *
pygame.init()
SCREEN = pygame.display.set_mode((800, 600))
car = pygame.transform.scale(pygame.image.load('Car.png').convert_alpha(), (64, 64))
pygame.display.set_caption('Car Game')
pygame.display.set_icon(car)
FPS = pygame.time.Clock()
carX = 400
carY = 100
angle = 90
speed = 0
while True:
if angle == 360: angle = 0
if angle == -1: angle = 359
SCREEN.fill((0,0,0))
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
keys = pygame.key.get_pressed()
if keys[K_a] or keys[K_LEFT]:
angle += speed
elif keys[K_d] or keys[K_RIGHT]:
angle -= speed
if keys[K_w] or keys[K_UP]:
speed += 1
elif keys[K_s] or keys[K_DOWN]:
speed -= 0.5
carX += speed*math.cos(math.radians(angle))
carY -= speed*math.sin(math.radians(angle))
speed *= 0.95
rotcar = pygame.transform.rotate(car, angle)
position = rotcar.get_rect(center = (carX,carY))
SCREEN.blit(rotcar, position)
pygame.display.update()
FPS.tick(24)
【问题讨论】:
-
我对pygame不熟悉,所以这里是你的起点。您正在寻找描述您想要实现的目标的 term 是 wrapping 或 wraparound 因为随着您的对象 off 屏幕,它会从另一侧返回,而不是 侧滚动。要实现这一点,首先要在汽车离开屏幕时改变它的位置;在这里可以看到一个简单的 pygame 示例screen wrap boundaries。看看
def checkBounds(self)函数。 -
@JonathonOgden 有没有让一半的车出现在两边?
-
我会为你调查。如果您将其放置在屏幕上/屏幕外,我假设 pygame 不会处理两侧汽车每个部分的绘图?
标签: python python-3.x pygame