手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

python飞机大战添加音效和计分源代码

时间:2024-10-19 22:15:39

1、首先,这里把飞机大战小游戏分为了两个py文件,一个为:plane_sprites.py一个为:zcx.py。先新建这样命名的py文件即可。

python飞机大战添加音效和计分源代码

2、然后,将下面代码复制到zcx.py中。import pygameimport timeimport osfrom plane_sprites import *class PlaneGame(object): def __init__(self): print("游戏初始化") #1.创建游戏的窗口 self.screen=pygame.display.set_mode(SCREEN_RECT.size) #2.创建游戏的时钟 self.clock=pygame.time.Clock() #3.精灵和精灵组的创建 self.__create_sprites() #4.设置定时器 pygame.time.set_timer(CREATE_ENEMY_EVENT,100) pygame.time.set_timer(HERO_FIRE_EVENT,80) #keys_pressed=pygame.key.get_pressed() #if keys_pressed[pygame.K_SPACE]: pygame.display.set_caption("唐铭瑶打妈妈游戏") pygame.mixer.init() pygame.mixer.music.load("./5170.mp3") pygame.mixer.music.play() self.score = 0 def __create_sprites(self): bg1=Background() bg2=Background(True) self.back_group=pygame.sprite.Group(bg1,bg2) self.enemy_group=pygame.sprite.Group() self.hero=Hero() self.hero_group=pygame.sprite.Group(self.hero) def start_game(self): pygame.init() print("游戏开始……") while True: #1.设置刷新帧率 self.clock.tick(FRAME_PER_SEC) #2.事件监听 self.__event_handler() #3.碰撞检测 self.__check_collide() #4.更新/绘制精灵组 self.__update_sprites() #5.更新屏幕显示 pygame.display.update() pass def __event_handler(self): for event in pygame.event.get(): if event.type==pygame.QUIT: PlaneGame.__game_over() elif event.type==CREATE_ENEMY_EVENT: enemy=Enemy() self.enemy_group.add(enemy) elif event.type==HERO_FIRE_EVENT: #elif event.type==pygame.K_i: self.hero.fire() keys_pressed=pygame.key.get_pressed() if keys_pressed[pygame.K_RIGHT]: self.hero.speed = 5 elif keys_pressed[pygame.K_LEFT]: self.hero.speed = -5 elif keys_pressed[pygame.K_UP]: self.hero.speed1 = -5 elif keys_pressed[pygame.K_DOWN]: self.hero.speed1 = 5 elif keys_pressed[pygame.K_o]: os.system("pause") else: self.hero.speed = 0 self.hero.speed1 = 0 def __check_collide(self): if pygame.sprite.groupcollide(self.hero.bullets,self.enemy_group,True,True):#难点撞击次数,两个组的撞击次数 self.score+=1 pygame.mixer.music.load("./bao.mp3") pygame.mixer.music.play() enemies=pygame.sprite.spritecollide(self.hero,self.enemy_group,True) if len(enemies)<0: #让英雄牺牲 self.hero.kill() #结束游戏 pygame.mixer.music.load("./baoza.mp3") pygame.mixer.music.play() time.sleep(3) PlaneGame.__game_over() def __update_sprites(self): self.back_group.update() self.back_group.draw(self.screen) self.enemy_group.update() self.enemy_group.draw(self.screen) self.hero_group.update() self.hero_group.draw(self.screen) self.hero.bullets.update() self.hero.bullets.draw(self.screen) self.drawText("计分:"+str(self.score),SCREEN_RECT.width - 500,30) @staticmethod def __game_over(): print("游戏结束") pygame.quit() exit() def drawText(self,text,posx,posy,textHeight=45,fontColor=(1,1,1),backgroundColor=(255,255,255)): fontObj = pygame.font.Font('simsun.ttc',textHeight) textSurfaceObj = fontObj.render(text,13,fontColor,backgroundColor) textRectObj = textSurfaceObj.get_rect() textRectObj.center = (posx,posy) self.screen.blit(textSurfaceObj,textRectObj)if __name__ == '__main__': game = PlaneGame() game.start_game()

python飞机大战添加音效和计分源代码

3、再将下面代码复制到plane_sprites.py中import randomimport pygameSCREEN_RECT=p烤恤鹇灭ygame.Rect(0,0,660,909)#定义屏幕大小FRAME_PER_SEC=60#帧率CREATE_ENEMY_EVENT=pygame.USEREVENT#创建敌机的定时器HERO_FIRE_EVENT=pygame.USEREVENT+1#英雄发射子弹class GameSprite (pygame.sprite.Sprite): def __init__(self,image_name,speed=1,speed1=1): super().__init__() #定义对象的属性 self.image = pygame.image.load(image_name) self.rect = self.image.get_rect() self.speed = speed self.speed1 = speed1 def update(self): self.rect.y += self.speed #在屏幕的垂直方向上移动class Background(GameSprite): def __init__(self,is_alt=False): super().__init__("./ditu.jpg")#1.调用父类 if is_alt: self.rect.y=-self.rect.height def update(self): #1.调用父类的方法实现 super().update() if self.rect.y>=SCREEN_RECT.height: self.rect.y=-self.rect.heightclass Enemy(GameSprite): def __init__(self): #1.调用父类方法,创建敌机精灵 if random.random()<0.21: super().__init__("./zfeiji.png") elif random.random()>0.81: super().__init__("./l1feiji.png") elif random.random()>0.21 and random.random()<0.4 : super().__init__("./diji1.png") else: super().__init__("./h1feiji.png") self.speed=random.randint(2,6) self.rect.bottom=0 max_x=SCREEN_RECT.width-self.rect.width self.rect.x=random.randint(0,max_x) pass def update(self): super().update() if self.rect.y>=SCREEN_RECT.height: self.kill() def __del__(self): passclass Hero(GameSprite): def __init__(self): super().__init__("./hongfeiji.png",0) self.rect.centerx=SCREEN_RECT.centerx self.rect.bottom=SCREEN_RECT.bottom-50 self.bullets=pygame.sprite.Group() def update(self): #英雄在水平方向移动 self.rect.x += self.speed self.rect.y += self.speed1 #控制英雄不能离开屏幕 if self.rect.x<0: self.rect.x=0 elif self.rect.right>SCREEN_RECT.right: self.rect.right=SCREEN_RECT.right elif self.rect.y>800: self.rect.y=800 elif self.rect.y<SCREEN_RECT.top: self.rect.y=SCREEN_RECT.top def fire(self): keys_pressed=pygame.key.get_pressed() if keys_pressed[pygame.K_SPACE]: pygame.mixer.music.load("./5823.mp3") pygame.mixer.music.play() for i in range(-0,1): #1.创建子弹精灵 bullet=BUllet() bullet.rect.bottom=self.rect.y #bullet.rect.bottom = self.rect.y - i * 20 bullet.rect.centerx=self.rect.centerx+i*20 self.bullets.add(bullet)class BUllet(GameSprite): def __init__(self): super().__init__("./zidan.png",-4) def update(self): super().update() #判断子弹是否飞出屏幕 if self.rect.bottom<0: self.kill() def __del__(self): pass

python飞机大战添加音效和计分源代码

4、然后,制作对应的png,如代码中的:super().__init__("./l1feiji.png")

python飞机大战添加音效和计分源代码
python飞机大战添加音效和计分源代码

5、制作对应的音效,如代码中的:pygame.mixer.music.load("./baoza.mp3")

python飞机大战添加音效和计分源代码

6、最后,将py文件、音效文件MP3、图片png、字体文件放在同一个文件夹中,运行游戏zcx.py即可。

python飞机大战添加音效和计分源代码
© 手抄报圈