2017-08-13 170 views
1

我想在pygame上下移动一个框。
我可以移动使用键a和使用权的关键d离开了包厢。
如何上下移动它?
我的代码:如何在pygame中上下移动一个方框[矩形为正方形]?

import sys 
import pygame as pg 


def main(): 
    screen = pg.display.set_mode((640, 480)) 
    clock = pg.time.Clock() 
    rect = pg.Rect(300, 220, 20, 20) 
    velocity = (0, 0) 
    done = False 

    while not done: 
     for event in pg.event.get(): 
      if event.type == pg.QUIT: 
       done = True 

     keys = pg.key.get_pressed() 
     if keys[pg.K_a]: #to move left 
      rect.x -= 4 
     if keys[pg.K_d]: #to move right 
      rect.x += 4 


     screen.fill((40, 40, 40)) 
     pg.draw.rect(screen, (150, 200, 20), rect) 

     pg.display.flip() 
     clock.tick(30) 


if __name__ == '__main__': 
    pg.init() 
    main() 
    pg.quit() 
    sys.exit() 

回答

1

您可以使用相同的逻辑水平移动,通过改变y坐标:

 y-4 
     | 
x-4 <-- [_] --> x+4 
     | 
     y+4 


if keys[pg.K_w]: # to move up 
    rect.y -= 4 
if keys[pg.K_s]: # to move down 
    rect.y += 4 
+0

我的连接被中断(我无法看到你的答案),我解决我自己,感谢 –

+0

我还有一个问题,**我怎样才能设置它的边界?** –

+0

@ user8455923是否要在游戏画面上设置边界,或者它必须小一点,就像该框只能在特定单元格中移动一样? – PRMoureu

-1

我觉得方向键的按压会更有意义的移动框。

(内部,而没有这样做:循环)

if event.type == pg.KEYDOWN: 
    if event.key == pg.K_LEFT: 
     rect.x -= 4 
    if event.key == pg.K_RIGHT: 
     rect.x += 4 
    if event.key == pg.K_UP: 
     rect.y -= 4 
    if event.key == pg.K_DOWN: 
     rect.y += 4 
+0

我不使用箭头键,因为他们不会让移动盒子不断。 –

+0

不要试一试,它在我的最后。 –

+0

我曾尝试过。 –