你好晴天 发表于 2020-7-16 13:17:32

跟着小甲鱼做飞机大战的游戏,可是总是开不了,希望有大佬能进来指点指点!

每次运行就会显示这个

================== RESTART: C:\Users\zou\Desktop\飞机大战\main.py ==================

pygame 1.9.6
Hello from the pygame community. https://www.pygame.org/contribute.html
Traceback (most recent call last):
File "C:\Users\zou\Desktop\飞机大战\main.py", line 154, in <module>
    main()
File "C:\Users\zou\Desktop\飞机大战\main.py", line 69, in main
    me = myplane.MyPlane(bg_size)
File "C:\Users\zou\Desktop\飞机大战\myplane.py", line 9, in __init__
    self.rect = self.image.get_rect()
AttributeError: 'MyPlane' object has no attribute 'image'

这是我做的main模块
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("飞机大战")
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/get_bomb.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")
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)
      group2.add(e1)
def add_mid_enemies(group1, group2, num):
    for i in range(num):
      e2 = enemy.MidEnemy(bg_size)
      group1.add(e2)
      group2.add(e2)
def add_big_enemies(group1, group2, num):
    for i in range(num):
      e3 = enemy.SmallBigEnemy(bg_size)
      group1.add(e3)
      group2.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, 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_pressed()
      if key_pressed or key_pressed:
            me.moveUp()
      if key_pressed or key_pressed:
            me.moveDown()
      if key_pressed or key_pressed:
            me.moveLeft()
      if key_pressed or key_pressed:
            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(wach.image, each.rect)
                           
   
      #绘制我方飞机
      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()


这是我做的myplane模块
import pygame
class MyPlane(pygame.sprite.Sprite):
    def __init__(self, bg_size):
      pygame.sprite.Sprite.__init__(self)
      self.me1 = pygame.image.load("images/me1.png").convert_alpha()
      self.me2 = pygame.image.load("images/me2.png").convert_alpha()
      self.rect = self.me1.get_size()------------------------------------------------------------------在这里出问题了。
      self.width, self.height = bg_size, bg_size
      self.rect.left, self.rect.top = \
                        (self.width - self.rect.width) //2, \
                        self.height - self.rect.height - 60
      self.speed = 10
    def moveUp(self):
      if self.rect.top > 0:
            self.rect.top -= self .speed
      else:
            self.rect.top = 0
    def moveDown(self):
      if self.rect.bottom < self.height - 60:
            self.rect.top += self.speed
      else:
            self.rect.bottom = self.height - 60
    def moveLeft(self):
      if self.rectleft > 0:
            self.rect.left -= self.speed
      else:
            self.rect.left = 0
    def moveRight(self):
      if self.rect.right < self.width:
            self.rect.left += self.speed
      else:
            self.rect.tight = self.width

xiaofeiyu 发表于 2020-7-16 20:38:55

不是get_size是get_rect
页: [1]
查看完整版本: 跟着小甲鱼做飞机大战的游戏,可是总是开不了,希望有大佬能进来指点指点!