栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

帮忙看一下,救救我

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

帮忙看一下,救救我

子弹碰到飞机不会爆炸

 代码:

import pygame as pa
import time
import sys
import random
CREAT_ENEMY_EVENT=pa.USEREVENT
class plane(pa.sprite.Sprite):                 #玩家飞机类
    planebullets1=pa.sprite.Group()
    def __init__(self,screen):
        pa.sprite.Sprite.__init__(self)                #pygame 精灵类初始化必须调用
        self.x=240
        self.y=852/2
        self.screen=screen  #窗口
        self.image=pa.image.load("hero1.png")  #102x126
        self.speed=10
        self.planebullets1=pa.sprite.Group() #精灵类装子弹的列表
        self.bulletslist=[]   #装子弹的列表
    def key_control(self):
        key_pressed =pa.key.get_pressed() #获取按下的事件

        if key_pressed[pa.K_w] or key_pressed[pa.K_UP]:
            self.y=self.y-self.speed
        if key_pressed[pa.K_s] or key_pressed[pa.K_DOWN]:
            self.y=self.y+self.speed
        if key_pressed[pa.K_a] or key_pressed[pa.K_LEFT]:
            self.x=self.x-self.speed
        if key_pressed[pa.K_d] or key_pressed[pa.K_RIGHT]:
            self.x=self.x+self.speed                        #键盘控制
        if self.x<=0:
            self.x=0
        if (self.x+102)>=480:
            self.x=480-102
        if self.y<=0:
            self.y=0
        if (self.y+126)>=852:
            self.y=852-126
        if key_pressed[pa.K_SPACE]:
            bullet=Bullet(self.screen,self.x,self.y)
            self.bulletslist.append(bullet)
            self.planebullets1.add(bullet)  #添加子弹到精灵组
            bullet.planebullets.add(bullet)
    def display(self):
        self.screen.blit(self.image,(self.x,self.y))
        for bullet in self.bulletslist:
            bullet.move()
            bullet.display()
            if self.y<0:
                bullet.kill() #防止占用内存
    def check(self):
        pa.sprite.groupcollide(Bullet.planebullets,enemymove.enemies,True,True)
class Bullet(pa.sprite.Sprite):                   #子弹类
    planebullets=pa.sprite.Group()
    def __init__(self,screen,x,y):
        pa.sprite.Sprite.__init__(self)  
        self.x=x+(106/2)-10/2
        self.y=y-5/2
        self.screen=screen
        self.bullets=pa.image.load("bullet1.png")
        self.bulletspeed=10
        self.planebullets=pa.sprite.Group()
    def display(self):
        self.screen.blit(self.bullets,(self.x,self.y))
    def move(self):
        self.y-=self.bulletspeed
class Enemy(pa.sprite.Sprite):                               #敌方飞机类
    def __init__(self,screen):
        pa.sprite.Sprite.__init__(self)  
        self.x=random.randint(0,480-57)         #防止敌机出现在界外
        self.y=0
        self.screen=screen 
        self.image=pa.image.load("enemy1.png")  #57x43
        self.speed=random.randint(1,3)
    def display(self):
        self.screen.blit(self.image,(self.x,self.y))
    def move(self):
        self.y+=self.speed
class enemymove(pa.sprite.Sprite):
    enemies=pa.sprite.Group()
    def __init__(self,screen):
        pa.sprite.Sprite.__init__(self)  
        self.enemyslist=[] #装敌机的列表
        self.screen=screen
        self.enemies=pa.sprite.Group()
    def add(self):
        enemys=Enemy(self.screen)
        self.enemyslist.append(enemys)
        self.enemies.add(enemys)  
    def display(self):
        for enemys in self.enemyslist:
            enemys.move()
            enemys.display()
            if enemys.y>852:
                enemys.kill() #防止占用内存
def main():
    pa.init()  #初始化窗口  
    screen=pa.display.set_mode((480,852))
    hero=plane(screen)
    enemy=Enemy(screen)
    pa.time.set_timer(CREAT_ENEMY_EVENT,1000)         #定时器
    enemys_1=enemymove(screen)
    while True:
        background=pa.image.load("background.png") #创建游戏背景
        screen.blit(background,(0,0))  
        hero.display()
        for event in pa.event.get():   #防止程序未响应
            if event.type == pa.QUIT:
                pa.quit()
                sys.exit()
            elif event.type== CREAT_ENEMY_EVENT:
                enemys_1.add()
        enemys_1.display()  #遍历列表
        hero.check()
        hero.key_control()
        pa.display.update()
        time.sleep(0.01)  #防止键盘读取过快
main()
        
        
 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/938266.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号