鱼C论坛

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

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

[复制链接]
发表于 2020-7-16 13:17:32 | 显示全部楼层 |阅读模式

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

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

x
每次运行就会显示这个

================== 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[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(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[0], bg_size[1]
        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

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-16 20:38:55 | 显示全部楼层
不是get_size是get_rect
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-19 23:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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