Pygame 操纵杆控制 - 屏幕未更新?
Pygame Joystick Control - Screen not updating?
我正在尝试在连接了 PS4 控制器的情况下在屏幕上移动给定的球。我能够连接控制器并在移动左模拟摇杆时让它具有 return 个不同的值。我觉得好像只是需要更新屏幕?我很难弄明白。
这是我得到的:
谢谢
import pygame
def main():
pygame.init()
size = width, height = 800, 800
black = 0, 0, 0
speed = [5,5]
screen = pygame.display.set_mode(size)
ball = pygame.image.load("ball1.jpg")
ballrect = ball.get_rect()
pygame.joystick.init()
joysticks = [pygame.joystick.Joystick(x) for x in
range(pygame.joystick.get_count())]
for joystick in joysticks:
joystick.init()
controller = joysticks[0]
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT: sys.exit()
ballrect.move(speed)
if controller.get_axis(0) < -.5:
speed[0] = -speed[0]
if controller.get_axis(0) > .5:
speed[0] = speed[0]
if controller.get_axis(1) < -.5:
speed[1] = speed[1]
if controller.get_axis(1) > .5:
speed[1] = -speed[1]
screen.fill(black)
screen.blit(ball, ballrect)
pygame.display.flip()
Rect.move returns 您必须分配给 ballrect
变量的新矩形,例如ballrect = ballrect.move(speed)
。或者使用 ballrect.move_ip(speed)
修改现有的矩形而不创建新的矩形。
控制器代码似乎也被破坏了。尝试做这样的事情:
# x and y axis positions of the stick (between -1.0 and 1.0).
x_axis_pos = controller.get_axis(0)
y_axis_pos = controller.get_axis(1)
# Set the speed to a multiple of the axis positions.
if x_axis_pos > .5 or x_axis_pos < -.5:
speed[0] = int(x_axis_pos * 5)
else:
speed[0] = 0
if y_axis_pos > .5 or y_axis_pos < -.5:
speed[1] = int(y_axis_pos * 5)
else:
speed[1] = 0
我正在尝试在连接了 PS4 控制器的情况下在屏幕上移动给定的球。我能够连接控制器并在移动左模拟摇杆时让它具有 return 个不同的值。我觉得好像只是需要更新屏幕?我很难弄明白。
这是我得到的:
谢谢
import pygame
def main():
pygame.init()
size = width, height = 800, 800
black = 0, 0, 0
speed = [5,5]
screen = pygame.display.set_mode(size)
ball = pygame.image.load("ball1.jpg")
ballrect = ball.get_rect()
pygame.joystick.init()
joysticks = [pygame.joystick.Joystick(x) for x in
range(pygame.joystick.get_count())]
for joystick in joysticks:
joystick.init()
controller = joysticks[0]
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT: sys.exit()
ballrect.move(speed)
if controller.get_axis(0) < -.5:
speed[0] = -speed[0]
if controller.get_axis(0) > .5:
speed[0] = speed[0]
if controller.get_axis(1) < -.5:
speed[1] = speed[1]
if controller.get_axis(1) > .5:
speed[1] = -speed[1]
screen.fill(black)
screen.blit(ball, ballrect)
pygame.display.flip()
Rect.move returns 您必须分配给 ballrect
变量的新矩形,例如ballrect = ballrect.move(speed)
。或者使用 ballrect.move_ip(speed)
修改现有的矩形而不创建新的矩形。
控制器代码似乎也被破坏了。尝试做这样的事情:
# x and y axis positions of the stick (between -1.0 and 1.0).
x_axis_pos = controller.get_axis(0)
y_axis_pos = controller.get_axis(1)
# Set the speed to a multiple of the axis positions.
if x_axis_pos > .5 or x_axis_pos < -.5:
speed[0] = int(x_axis_pos * 5)
else:
speed[0] = 0
if y_axis_pos > .5 or y_axis_pos < -.5:
speed[1] = int(y_axis_pos * 5)
else:
speed[1] = 0