python飞机大战创建多个敌机_python飞机大战敌机爆炸怎么编写?

问题描述

python开发飞机大战时出现以下错误:

Traceback (most recent call last):

File “D:/python/飞机大战.py”, line 53, in

main()

File “D:/python/飞机大战.py”, line 33, in main

bomb.draw(screen)

AttributeError: ‘Bomb’ object has no attribute ‘draw’

在编程敌机爆炸的时候出现的

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

import pygame

import sys

from plane_sprites import *

bomb_flag = 0

import time

pygame.init()

pygame.mixer.init()

def main():

SCREEN = (1024,768)

screen = pygame.display.set_mode(SCREEN,0,32)

timg = pygame.image.load("./feiji/timg.png")

enemy_group = pygame.sprite.Group()

hero = Hero()

hero_group = pygame.sprite.Group(hero)

bomb = Bomb()

pygame.time.set_timer(CREAT_ENEMY_EVENT,1000)

pygame.time.set_timer(HERO_FIRE_EVENT,200)

pygame.mixer.music.load("./feiji/bgm.mp3")

#bombs = [Bomb() for _ in range(5)]

while True:

if pygame.mixer.music.get_busy() == False:

pygame.mixer.music.play()

keys_pressed = pygame.key.get_pressed()

screen.blit(timg,(0,0))

enemy_group.update()

enemy_group.draw(screen)

hero_group.update()

hero_group.draw(screen)

hero.bullets.update()

hero.bullets.draw(screen)

bomb.update()

bomb.draw(screen)

for event in pygame.event.get():

if event.type == QUIT:

print("exit")

exit()

elif event.type == CREAT_ENEMY_EVENT:

enemy = Enemy()

enemy_group.add(enemy)

elif event.type == HERO_FIRE_EVENT:

if keys_pressed[pygame.K_SPACE]:

hero.fire()

pygame.display.update()

enemies1 = pygame.sprite.groupcollide(hero.bullets, enemy_group, 1,1)

enemies = pygame.sprite.spritecollide(hero,enemy_group,1)

enemies2 = tuple(enemies1)

if len(enemies) > 0:

hero.kill()

exit()

time.sleep(0.01)   #延时,防卡顿

if __name__==’__main__’:

main()

import random

import pygame

from pygame.locals import *

import time

CREAT_ENEMY_EVENT = pygame.USEREVENT

HERO_FIRE_EVENT = pygame.USEREVENT + 1

SCREEN =(1024,768)

class GameSprite(pygame.sprite.Sprite):

def __init__(self,image_name,speed=1):

super().__init__()

self.image = pygame.image.load(image_name)

self.rect = self.image.get_rect()

self.speed = speed

def update(self):

self.rect.y += self.speed

class Enemy(GameSprite):

def __init__(self):

super(Enemy, self).__init__("./feiji/enemy.png")

self.speed = random.randint(1,4)

self.rect.bottom = 0

max_x = 929

self.rect.x = random.randint(0,max_x)

def update(self):

super(Enemy, self).update()

if self.rect.y >= 863:

self.kill()

def __del__(self):

pass

class Hero(GameSprite):

def __init__(self):

super(Hero, self).__init__("./feiji/hero.png",0)

self.rect.x = 462

self.rect.y = 610

self.bullets = pygame.sprite.Group()

def update(self):

keys_pressed = pygame.key.get_pressed()

if keys_pressed[pygame.K_RIGHT] or keys_pressed[pygame.K_d]:

self.rect.x += 5

if keys_pressed[pygame.K_UP] or keys_pressed[pygame.K_w]:

self.rect.y -= 5

elif keys_pressed[pygame.K_DOWN] or keys_pressed[pygame.K_s]:

self.rect.y += 5

elif keys_pressed[pygame.K_LEFT] or keys_pressed[pygame.K_a]:

self.rect.x -= 5

if keys_pressed[pygame.K_UP] or keys_pressed[pygame.K_w]:

self.rect.y -= 5

elif keys_pressed[pygame.K_DOWN] or keys_pressed[pygame.K_s]:

self.rect.y += 5

elif keys_pressed[pygame.K_UP] or keys_pressed[pygame.K_w]:

self.rect.y -= 5

elif keys_pressed[pygame.K_DOWN] or keys_pressed[pygame.K_s]:

self.rect.y += 5

if self.rect.x < -15:

self.rect.x = -15

elif self.rect.x > 940:

self.rect.x = 940

elif self.rect.y < -20:

self.rect.y = -20

elif self.rect.y > 685:

self.rect.y = 685

def fire(self):

bullet = Bullet()

bullet.rect.bottom = self.rect.y + 20

bullet.rect.x = self.rect.x + 47

self.bullets.add(bullet)

class Bullet(GameSprite):

def __init__(self):

super(Bullet, self).__init__("./feiji/bullet.png",-5)

def update(self):

super(Bullet, self).update()

if self.rect.bottom < 0:

self.kill()

def __del__(self):

pass

class Bomb(GameSprite):

def __init__(self):

super(Bomb, self).__init__("./feiji/res/boom1.png")

self.rect .x = 0

self.rect.y = 0

def update(self):

super(Bomb,self).update()

你期待的结果是什么?实际看到的错误信息又是什么?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值