2016-08-29 3 views
-1

私はヘビのゲームを作っているが、実際にはヘビではなく四角形を使っている。私はそれを押すと1つ移動するので、私はそれを行う方法を移動し続けるようにしたい。私が彼に与える方向に向かって矩形を動かし続ける

コードです:

def keys(): 

    pressed = pygame.key.get_pressed() 
    for i in range(2): 
     if pressed[pygame.K_UP]: 
      # rect.move_ip(0,-3) 
      rect2.move_ip(0, -3) 
     if pressed[pygame.K_DOWN]: 
      # rect.move_ip(0,3) 
      rect2.move_ip(0, 3) 
     if pressed[pygame.K_LEFT]: 
      # rect.move_ip(-3,0) 
      rect2.move_ip(-3, 0) 
     if pressed[pygame.K_RIGHT]: 
      # rect.move_ip(3,0) 
      rect2.move_ip(3, 0) 
+0

新しいキーを入力すると、動きの中にしばらくの間追加してください。 – Raskayu

+0

@Raskayuどうすればいいですか? –

+0

whileループを置くと何もウィンドウに表示されません –

答えて

0

あなたは長方形の移動を続行したい場合は[いいえ]ボタンが押されていない場合でも、私はspeed変数をお勧めします。 2つは、実際にはx_speedy_speedが必要です。 x_speedy_speedを使用することにより

x_speed = y_speed = 0 
x_location = y_location = 0 

def keys(): 
    global x_speed 
    global y_speed 
    pressed = pygame.key.get_pressed() 
    for i in range(2): 
     if pressed[pygame.K_UP]: 
      y_speed = 3 
     if pressed[pygame.K_DOWN]: 
      y_speed = -3 
     if pressed[pygame.K_LEFT]: 
      x_speed = -3 
     if pressed[pygame.K_RIGHT]: 
      x_speed = 3 

while True: 
    keys() 
    x_location += x_speed 
    y_location += y_speed 
    pygame.draw.rect(SCREEN, COLOR, (x_location, y_location, WIDTH, HEIGHT)) 

、メインループは、それが動いていることを「記憶」し、それが入力を認識したときのみ、停止または変更されます。メインループは、繰り返しごとにを単に*_locationに追加し、次の反復の速度を計算します。

関連する問題