C++太极门小弟子 发表于 2021-9-8 00:19:14

pygame飞机大战物体移动

本帖最后由 C++太极门小弟子 于 2021-9-8 00:20 编辑

以下是主程序
import pygame
import traceback
import sys
import meplane

from pygame.constants import K_DOWN, K_LEFT, K_RIGHT, K_UP

pygame.init()
bg_size = width, height = 480, 700
screen = pygame.display.set_mode(bg_size)
pygame.display.set_caption("飞机大战")
background = pygame.image.load("D:\Microsoft VS Code\project\我编的飞机大战 - 副本\images/background.png").convert()


def main():
    fps = 60
    fclock = pygame.time.Clock()

    while True:
      me = meplane.Myplane(bg_size)
      for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()

      key_pressed = pygame.key.get_pressed()
      if key_pressed:
            me.moveup()
      if key_pressed:
            me.movedown()
      if key_pressed:
            me.moveleft()
      if key_pressed:
            me.moveright()

      screen.blit(background, (0, 0))
      screen.blit(me.image, me.rect)
      pygame.display.flip()
      fclock.tick(fps)


if __name__ == "__main__":
    try:
      main()
    except SystemExit:
      pass
    except:
      traceback.print_exc()
      pygame.quit
      input()
每次KEYDOWN时飞机并不会持续的位移只会移动一小距离,并且KEYUP后飞机又自动返回了初始位置,看了很久不知道为什么
以及第六行为啥删掉之后程序无法正常运行,进去就黑屏只能强制关闭

blahblahfc 发表于 2021-9-8 01:57:26

每次KEYDOWN时飞机并不会持续的位移只会移动一小距离,并且KEYUP后飞机又自动返回了初始位置
试试把26到34行写在 for event in pygame.event.get(): 里面。

第六行为啥删掉之后程序无法正常运行
可以用 pygame.K_DOWN , pygame.K_LEFT ... 代替。

C++太极门小弟子 发表于 2021-9-8 12:04:34

blahblahfc 发表于 2021-9-8 01:57
试试把26到34行写在 for event in pygame.event.get(): 里面。




{:10_262:}也还是一样

blahblahfc 发表于 2021-9-8 12:25:40

可能是第20行写在了 while 循环里面了, 每次都创建一个Myplane实例,试试把它移到 while 的外面来

me = meplane.Myplane(bg_size)
while True:

C++太极门小弟子 发表于 2021-9-8 13:10:58

blahblahfc 发表于 2021-9-8 12:25
可能是第20行写在了 while 循环里面了, 每次都创建一个Myplane实例,试试把它移到 while 的外面来

{:10_275:}好了,感谢感谢
页: [1]
查看完整版本: pygame飞机大战物体移动