|  | 
 
| 
enemy.py
x
马上注册,结交更多好友,享用更多功能^_^您需要 登录 才可以下载或查看,没有账号?立即注册  
 import pygame
 from random import *
 
 class SmallEnemy(pygame.sprite.Sprite):
 def __init__(self,bg_size):
 pygame.sprite.Sprite.__init__(self)
 
 self.image = pygame.image.load('images/enemy1.png').convert_alpha()
 self.rect = self.image.get_rect()
 self.width,self.height=bg_size[0],bg_size[1]
 self.seed = 2
 self.rect.left,self.rect.top = \
 randint(0,self.width - self.rect.width),\
 randint(-5 * self.height,0)
 
 def move(self):
 if self.rect.top < self.height:
 self.rect.top += self.speed
 else:
 reset()
 
 def reset(self):
 self.rect.left,self.rect.top = \
 randint(0,self.width - self.rect.width),\
 randint(-5 * self.height,0)
 
 
 class MidEnemy(pygame.sprite.Sprite):
 def __init__(self,bg_size):
 pygame.sprite.Sprite.__init__(self)
 
 self.image = pygame.image.load('images/enemy2.png').convert_alpha()
 self.rect = self.image.get_rect()
 self.width,self.height=bg_size[0],bg_size[1]
 self.seed = 1
 self.rect.left,self.rect.top = \
 randint(0,self.width - self.rect.width),\
 randint(-10 * self.height, -self.height)
 
 def move(self):
 if self.rect.top < self.height:
 self.rect.top += self.speed
 else:
 reset()
 
 def reset(self):
 self.rect.left,self.rect.top = \
 randint(0,self.width - self.rect.width),\
 randint(-10 * self.height, -self.height)
 
 
 
 
 class BigEnemy(pygame.sprite.Sprite):
 def __init__(self,bg_size):
 pygame.sprite.Sprite.__init__(self)
 
 self.image1 = pygame.image.load('images/enemy3_n1.png').convert_alpha()
 self.image2 = pygame.image.load('images/enemy3_n2.png').convert_alpha()
 self.rect = self.image1.get_rect()
 self.width,self.height=bg_size[0],bg_size[1]
 self.seed = 1
 self.rect.left,self.rect.top = \
 randint(0,self.width - self.rect.width),\
 randint(-15 * self.height, -5 * self.height)
 
 def move(self):
 if self.rect.top < self.height:
 self.rect.top += self.speed
 else:
 reset()
 
 def reset(self):
 self.rect.left,self.rect.top = \
 randint(0,self.width - self.rect.width),\
 randint(-15 * self.height, -5 * self.height)
 
 
 main.py
 
 import pygame
 import sys
 import traceback
 import myplane
 import enemy
 from pygame.locals import *
 from random import *
 
 pygame.init()
 pygame.mixer.init()
 
 bg_size = width,height = 480,700
 screen = pygame.display.set_mode(bg_size)
 pygame.display.set_caption('飞机大战-- FishC Demo')
 
 background = pygame.image.load('images/background.png').convert()
 
 #载入游戏音乐
 pygame.mixer.music.load('sound/game_music.ogg')
 pygame.mixer.music.set_volume(0.2)
 bullet_sound = pygame.mixer.Sound('sound/bullet.wav')
 bullet_sound.set_volume(0.2)
 bomb_sound = pygame.mixer.Sound('sound/use_bomb.wav')
 bomb_sound.set_volume(0.2)
 supply_sound = pygame.mixer.Sound('sound/supply.wav')
 supply_sound.set_volume(0.2)
 get_bomb_sound = pygame.mixer.Sound('sound/get_bomb.wav')
 get_bomb_sound.set_volume(0.2)
 get_bullet_sound = pygame.mixer.Sound('sound/get_bullet.wav')
 get_bomb_sound.set_volume(0.2)
 upgrade_sound = pygame.mixer.Sound('sound/upgrade.wav')
 upgrade_sound.set_volume(0.2)
 enemy3_fly_sound = pygame.mixer.Sound('sound/enemy3_flying.wav')
 enemy3_fly_sound.set_volume(0.2)
 enemy1_down_sound = pygame.mixer.Sound('sound/enemy1_down.wav')
 enemy1_down_sound.set_volume(0.1)
 enemy2_down_sound = pygame.mixer.Sound('sound/enemy2_down.wav')
 enemy2_down_sound.set_volume(0.2)
 enemy3_down_sound = pygame.mixer.Sound('sound/enemy3_down.wav')
 enemy3_down_sound.set_volume(0.5)
 me_down_sound = pygame.mixer.Sound('sound/me_down.wav')
 me_down_sound.set_volume(0.2)
 
 def add_small_enemies(group1,group2,num):
 for i in range(num):
 e1 = enemy.SmallEnemy(bg_size)
 group1.add(e1)
 group1.add(e1)
 
 def add_mid_enemies(group1,group2,num):
 for i in range(num):
 e2 = enemy.MidEnemy(bg_size)
 group1.add(e2)
 group1.add(e2)
 
 def add_big_enemies(group1,group2,num):
 for i in range(num):
 e3 = enemy.BigEnemy(bg_size)
 group1.add(e3)
 group1.add(e3)
 
 
 def main():
 pygame.mixer.music.play(-1)
 
 # 生成我方飞机
 me = myplane.MyPlane(bg_size)
 
 enemies = pygame.sprite.Group()
 
 #生成敌方小型飞机
 small_enemies = pygame.sprite.Group()
 add_small_enemies(small_enemies,enemies,15)
 
 #生成敌方中型飞机
 mid_enemies = pygame.sprite.Group()
 add_mid_enemies(mid_enemies,enemies,4)
 
 #生成敌方大型飞机
 big_enemies = pygame.sprite.Group()
 add_big_enemies(big_enemies,enemies,2)
 
 
 clock = pygame.time.Clock()
 
 #用于切换图片
 switch_image = True
 
 #用于延迟
 delay = 100
 
 running = True
 
 while running:
 for event in pygame.event.get():
 if event.type == QUIT:
 pygame.quit()
 sys.exit()
 
 #检测用户的键盘操作
 key_pressed = pygame.key.get_pressed()
 
 if key_pressed[K_w] or key_pressed[K_UP]:
 me.moveUp()
 if key_pressed[K_s] or key_pressed[K_DOWN]:
 me.moveDown()
 if key_pressed[K_a] or key_pressed[K_LEFT]:
 me.moveLeft()
 if key_pressed[K_d] or key_pressed[K_RIGHT]:
 me.moveRight()
 
 
 screen.blit(background,(0,0))
 
 #绘制大型敌机
 for each in big_enemies:
 each.move()
 if switch_image:
 screen.blit(each,image1,each.rect)
 else:
 screen.blit(each,image2,each.rect)
 #即将出现再画面中,播放音效
 if each.rect.bottom > -50:
 enemy3_fly_sound.play()
 
 #绘制中型敌机
 for each in mid_enemies:
 each.move()
 screen.blit(each.image,each.rect)
 
 #绘制小型敌机
 for each in small_enemies:
 each.move()
 screen.blit(each.image,each.rect)
 
 
 
 #绘制我方飞机
 switch_image = not switch_image
 if switch_image:
 screen.blit(me.image1,me.rect)
 else:
 screen.blit(me.image2,me.rect)
 
 #切换图片
 if not(delay % 5):
 switch_image = not switch_image
 
 delay -=1
 if not delay:
 delay = 100
 
 
 pygame.display.flip()
 
 clock.tick(60)
 
 if __name__ == '__main__':
 try:
 main()
 except SystemExit:
 pass
 except:
 traceback.print_exc()
 pygame.quit()
 input()
 
 
 报错信息
 
 Traceback (most recent call last):
 File "C:\Users\39436\Desktop\python练习\飞机大战\main.py", line 160, in <module>
 main()
 File "C:\Users\39436\Desktop\python练习\飞机大战\main.py", line 117, in main
 each.move()
 File "C:\Users\39436\Desktop\python练习\飞机大战\enemy.py", line 69, in move
 self.rect.top += self.speed
 AttributeError: 'BigEnemy' object has no attribute 'speed'
 
那你就看看小甲鱼的 
我又不能通读一遍你的代码,当然不知道什么意思 
我只是猜测一下,each是一个Enemy对象 | 
 |