【问题标题】:Pygame Joystick Control - Screen not updating?Pygame 操纵杆控制 - 屏幕不更新?
【发布时间】:2017-06-19 16:08:25
【问题描述】:

我试图在连接了 PS4 控制器的情况下在屏幕上移动给定的球。我能够连接控制器并在移动左模拟摇杆时让它返回不同的值。我觉得好像只需要更新屏幕?我很难弄清楚。

这是我得到的:

谢谢

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()

【问题讨论】:

    标签: python pygame joystick


    【解决方案1】:

    Rect.move 返回一个新的矩形,您必须将其分配给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
    

    【讨论】:

    • 我忘了说如果值不在if x_axis_pos &gt; .5 or x_axis_pos &lt; -.5:范围内,你需要将速度设置为0。只需添加两个 else 子句。
    猜你喜欢
    • 2018-01-13
    • 1970-01-01
    • 2016-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-07
    • 1970-01-01
    相关资源
    最近更新 更多