鱼C论坛

 找回密码
 立即注册
查看: 1393|回复: 4

[已解决]pygame飞机大战物体移动

[复制链接]
发表于 2021-9-8 00:19:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

以下是主程序
  1. import pygame
  2. import traceback
  3. import sys
  4. import meplane

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

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


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

  14.     while True:
  15.         me = meplane.Myplane(bg_size)
  16.         for event in pygame.event.get():
  17.             if event.type == pygame.QUIT:
  18.                 pygame.quit()
  19.                 sys.exit()

  20.         key_pressed = pygame.key.get_pressed()
  21.         if key_pressed[K_UP]:
  22.             me.moveup()
  23.         if key_pressed[K_DOWN]:
  24.             me.movedown()
  25.         if key_pressed[K_LEFT]:
  26.             me.moveleft()
  27.         if key_pressed[K_RIGHT]:
  28.             me.moveright()

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


  33. if __name__ == "__main__":
  34.     try:
  35.         main()
  36.     except SystemExit:
  37.         pass
  38.     except:
  39.         traceback.print_exc()
  40.         pygame.quit
  41.         input()
复制代码

每次KEYDOWN时飞机并不会持续的位移只会移动一小距离,并且KEYUP后飞机又自动返回了初始位置,看了很久不知道为什么
以及第六行为啥删掉之后程序无法正常运行,进去就黑屏只能强制关闭
最佳答案
2021-9-8 12:25:40
可能是第20行写在了 while 循环里面了, 每次都创建一个Myplane实例,试试把它移到 while 的外面来

  1. me = meplane.Myplane(bg_size)
  2. while True:
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-9-8 01:57:26 | 显示全部楼层
每次KEYDOWN时飞机并不会持续的位移只会移动一小距离,并且KEYUP后飞机又自动返回了初始位置

试试把26到34行写在 for event in pygame.event.get(): 里面。

第六行为啥删掉之后程序无法正常运行

可以用 pygame.K_DOWN , pygame.K_LEFT ... 代替。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-8 12:04:34 | 显示全部楼层
blahblahfc 发表于 2021-9-8 01:57
试试把26到34行写在 for event in pygame.event.get(): 里面。

也还是一样
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-8 12:25:40 | 显示全部楼层    本楼为最佳答案   
可能是第20行写在了 while 循环里面了, 每次都创建一个Myplane实例,试试把它移到 while 的外面来

  1. me = meplane.Myplane(bg_size)
  2. while True:
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

好了,感谢感谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-18 22:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表