鱼C论坛

 找回密码
 立即注册
查看: 1405|回复: 1

飞机大战2敌机问题

[复制链接]
发表于 2020-5-20 13:22:29 | 显示全部楼层 |阅读模式

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

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

x
各位,我刚上完小甲鱼飞机大战的第二节课,不知道代码出了什么问题,敌方大小飞机一开始就一起出现,然后就没了
  1. import pygame
  2. import sys
  3. import mine_plane
  4. import mine_enemy
  5. import traceback
  6. from pygame.locals import *


  7. pygame.init()
  8. pygame.mixer.init()


  9. bg_size = width, height = 480, 700
  10. screen = pygame.display.set_mode(bg_size)
  11. pygame.display.set_caption('喜闻乐见的飞机大战')

  12. background = pygame.image.load('images/background.png').convert()

  13. # 载入游戏音乐
  14. pygame.mixer.music.load("sound/game_music.ogg")
  15. pygame.mixer.music.set_volume(0.2)
  16. bullet_sound = pygame.mixer.Sound("sound/bullet.wav")
  17. bullet_sound.set_volume(0.2)
  18. bomb_sound = pygame.mixer.Sound("sound/use_bomb.wav")
  19. bomb_sound.set_volume(0.2)
  20. supply_sound = pygame.mixer.Sound("sound/supply.wav")
  21. supply_sound.set_volume(0.2)
  22. get_bomb_sound = pygame.mixer.Sound("sound/get_bomb.wav")
  23. get_bomb_sound.set_volume(0.2)
  24. get_bullet_sound = pygame.mixer.Sound("sound/get_bullet.wav")
  25. get_bullet_sound.set_volume(0.2)
  26. upgrade_sound = pygame.mixer.Sound("sound/upgrade.wav")
  27. upgrade_sound.set_volume(0.2)
  28. enemy3_fly_sound = pygame.mixer.Sound("sound/enemy3_flying.wav")
  29. enemy3_fly_sound.set_volume(0.2)
  30. enemy1_down_sound = pygame.mixer.Sound("sound/enemy1_down.wav")
  31. enemy1_down_sound.set_volume(0.2)
  32. enemy2_down_sound = pygame.mixer.Sound("sound/enemy2_down.wav")
  33. enemy2_down_sound.set_volume(0.2)
  34. enemy3_down_sound = pygame.mixer.Sound("sound/enemy3_down.wav")
  35. enemy3_down_sound.set_volume(0.5)
  36. me_down_sound = pygame.mixer.Sound("sound/me_down.wav")
  37. me_down_sound.set_volume(0.2)


  38. def add_small_enemies(group1, group2, num):
  39.     for i in range(num):
  40.         e1 = mine_enemy.SmallEnemy(bg_size)
  41.         group1.add(e1)
  42.         group2.add(e1)


  43. def add_big_enemies(group1, group2, num):
  44.     for i in range(num):
  45.         e3 = mine_enemy.BigEnemy(bg_size)
  46.         group1.add(e3)
  47.         group2.add(e3)


  48. def add_mid_enemies(group1, group2, num):
  49.     for i in range(num):
  50.         e2 = mine_enemy.MidEnemy(bg_size)
  51.         group1.add(e2)
  52.         group2.add(e2)


  53. def main():
  54.     pygame.mixer.music.play(-1)

  55.     # 生成我方飞机
  56.     me = mine_plane.MyPlane(bg_size)

  57.     enemies = pygame.sprite.Group()

  58.     # 生成敌方小飞机
  59.     small_enemies = pygame.sprite.Group()
  60.     add_small_enemies(small_enemies, enemies, 15)
  61.     # 生成敌方中飞机
  62.     mid_enemies = pygame.sprite.Group()
  63.     add_mid_enemies(mid_enemies, enemies, 4)
  64.     # 生成敌方大飞机
  65.     big_enemies = pygame.sprite.Group()
  66.     add_big_enemies(big_enemies, enemies, 2)

  67.     clock = pygame.time.Clock()

  68.     # 用于切换图片
  69.     switch_image = True

  70.     # 用于延迟
  71.     delay = 100

  72.     running = True

  73.     while running:
  74.         for event in pygame.event.get():
  75.             if event.type == pygame.QUIT:
  76.                 pygame.quit()
  77.                 sys.exit()

  78.         # 检测用户的键盘操作
  79.         key_pressed = pygame.key.get_pressed()

  80.         if key_pressed[K_w] or key_pressed[K_UP]:
  81.             me.moveUp()
  82.         if key_pressed[K_s] or key_pressed[K_DOWN]:
  83.             me.moveDown()
  84.         if key_pressed[K_a] or key_pressed[K_LEFT]:
  85.             me.moveLeft()
  86.         if key_pressed[K_d] or key_pressed[K_RIGHT]:
  87.             me.moveRight()

  88.         screen.blit(background, (0, 0))

  89.         #绘制敌方大飞机
  90.         for each in big_enemies:
  91.             each.move()
  92.             if switch_image:
  93.                 screen.blit(each.image1, each.rect)
  94.             else:
  95.                 screen.blit(each.image2, each.rect)
  96.             #即将出现在画面中,播放音效
  97.             if each.rect.bottom > -50:
  98.                 enemy3_fly_sound.play()
  99.         #绘制敌方中飞机
  100.         for each in mid_enemies:
  101.             each.move()
  102.             screen.blit(each.image, each.rect)

  103.         #绘制敌方小飞机
  104.         for each in small_enemies:
  105.             each.move()
  106.             screen.blit(each.image, each.rect)

  107.         # 绘制我方飞机
  108.         if switch_image:
  109.             screen.blit(me.image1, me.rect)
  110.         else:
  111.             screen.blit(me.image2, me.rect)

  112.         # 切换图片
  113.         if not (delay % 5):
  114.             switch_image = not switch_image

  115.         delay -= 1
  116.         if not delay:
  117.             delay = 100

  118.         pygame.display.flip()

  119.         clock.tick(60)


  120. if __name__ == '__main__':
  121.     try:
  122.         main()
  123.     except SystemExit:
  124.         pass
  125.     except BaseException:
  126.         traceback.print_exc()
  127.         pygame.quit()
  128.         input()
复制代码

  1. import pygame


  2. class MyPlane(pygame.sprite.Sprite):
  3.     def __init__(self, bg_size):
  4.         pygame.sprite.Sprite.__init__(self)

  5.         self.image1 = pygame.image.load('images/me1.png').convert_alpha()
  6.         self.image2 = pygame.image.load('images/me2.png').convert_alpha()
  7.         self.rect = self.image1.get_rect()
  8.         self.width, self.height = bg_size[0], bg_size[1]
  9.         self.rect.left, self.rect.top = \
  10.             (self.width - self.rect.width) // 2, \
  11.             self.height - self.rect.height - 60
  12.         self.speed = 5
  13.     def moveUp(self):
  14.         if self.rect.top > 0:
  15.             self.rect.top -= self.speed * 1.5
  16.         else:
  17.             self.rect.top = 0

  18.     def moveDown(self):
  19.         if self.rect.bottom < self.height:
  20.             self.rect.top += self.speed * 0.7
  21.         else:
  22.             self.rect.bottom = self.height - 60

  23.     def moveLeft(self):
  24.         if self.rect.left > 0:
  25.             self.rect.left -= self.speed
  26.         else:
  27.             self.rect.left = 0

  28.     def moveRight(self):
  29.         if self.rect.right < self.width:
  30.             self.rect.right += self.speed
  31.         else:
  32.             self.rect.right = self.width
复制代码

  1. import pygame
  2. from random import *


  3. class SmallEnemy(pygame.sprite.Sprite):
  4.     def __init__(self, bg_size):
  5.         pygame.sprite.Sprite.__init__(self)

  6.         self.image = pygame.image.load('images/enemy1.png').convert_alpha()
  7.         self.rect = self.image.get_rect()
  8.         self.width, self.height = bg_size[0], bg_size[1]
  9.         self.speed = 2
  10.         self.rect.left, self.rect.height = \
  11.             randint(0, (self.width - self.rect.width)), \
  12.             randint(-5 * self.height, 0)

  13.     def move(self):
  14.         if self.rect.top < self.height:
  15.             self.rect.top += self.speed
  16.         else:
  17.             self.reset()

  18.     def reset(self):
  19.         self.rect.left, self.rect.height = \
  20.             randint(0, (self.width - self.rect.width)), \
  21.             randint(-5 * self.height, 0)


  22. class MidEnemy(pygame.sprite.Sprite):
  23.     def __init__(self, bg_size):
  24.         pygame.sprite.Sprite.__init__(self)

  25.         self.image = pygame.image.load('images/enemy1.png').convert_alpha()
  26.         self.rect = self.image.get_rect()
  27.         self.width, self.height = bg_size[0], bg_size[1]
  28.         self.speed = 1
  29.         self.rect.left, self.rect.height = \
  30.             randint(0, (self.width - self.rect.width)), \
  31.             randint(-10 * self.height, -self.height)

  32.     def move(self):
  33.         if self.rect.top < self.height:
  34.             self.rect.top += self.speed
  35.         else:
  36.             self.reset()

  37.     def reset(self):
  38.         self.rect.left, self.rect.height = \
  39.             randint(0, (self.width - self.rect.width)), \
  40.             randint(-10 * self.height, -self.height)


  41. class BigEnemy(pygame.sprite.Sprite):
  42.     def __init__(self, bg_size):
  43.         pygame.sprite.Sprite.__init__(self)

  44.         self.image1 = pygame.image.load('images/enemy3_n1.png').convert_alpha()
  45.         self.image2 = pygame.image.load('images/enemy3_n2.png').convert_alpha()
  46.         self.rect = self.image1.get_rect()
  47.         self.width, self.height = bg_size[0], bg_size[1]
  48.         self.speed = 1
  49.         self.rect.left, self.rect.height = \
  50.             randint(0, (self.width - self.rect.width)), \
  51.             randint(-15 * self.height, -5 * self.height)

  52.     def move(self):
  53.         if self.rect.top < self.height:
  54.             self.rect.top += self.speed
  55.         else:
  56.             self.reset()

  57.     def reset(self):
  58.         self.rect.left, self.rect.height = \
  59.             randint(0, (self.width - self.rect.width)), \
  60.             randint(-15 * self.height, -5 * self.height)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-5-20 13:56:42 | 显示全部楼层
哦哦,解决了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-30 04:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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