怎样用pygame在代码里加入音效?要安装pygame吗?
1.安装pygame模块,执行代码: pip install pyagme 如下所示
2.导入模块 import pygame, pygame.mixer.music.load('./plane/fight.mp3')# 添加背景音乐,路径一定要正确
pygame.mixer.music.set_volume(0.5)#设置背景音乐大小
下面是我不久前做的飞机大战,可参考一下
import pygame#导入游戏库
import random#随机产生数据的对象
import time#延迟子弹发射速度
from pygame.locals import *
class BasePlane(object):#抽象一个飞机的基类
def __init__(self,screen,imagepath):
'''
初始化基类函数
:param screen: 主窗体对象
:param imageName:加载的图片
'''
self.screen=screen
self.image=pygame.image.load(imagepath)
self.bulletList=[]#存储所有的子弹
self.x = 150
self.y = 450
pass
def display(self):
self.screen.blit(self.image,(self.x,self.y))
needDellist = [] # 完善子弹的展示逻辑
for item in self.bulletList:
if item.cross():
needDellist.append(item)
pass
pass
# 重新遍历一下
for i in needDellist:
self.bulletList.remove(i)
pass
for Bullet in self.bulletList:
Bullet.display() # 显示子弹的位置
Bullet.move() # 子弹的移动,再显示会出现修改后的位置
pass
class BaseBullet(object):
'''
公共的子弹类
'''
def __init__(self,x,y,screen,bullettype):
self.type=bullettype
self.screen=screen
if self.type=='Me':
self.x=x+20
self.y=y-13
self.imagepath='./plane/bullet2.png'
pass
elif self.type=='enemy':
self.x=x
self.y=y+50
self.imagepath='./plane/bomb.png'
pass
self.image = pygame.image.load(self.imagepath)
pass
def move(self):
'''
子弹的移动
:return:
'''
if self.type=='Me':
self.y-=5
elif self.type=='enemy':
self.x+=6
pass
def display(self):
self.screen.blit(self.image,(self.x,self.y))
pass
def cross(self):
'''
判断子弹是否越界
:return:
'''
if self.y>500 or self.y<0:
return True
else:
return False
pass
pass
class MePlane(BasePlane):
def __init__(self,screen):
'''
初始化函数
::param screen: 主窗体对象
'''
super().__init__(screen,'./plane/life.png')#调用父类的构造方法
#飞机的默认位置
pass
def Moveleft(self):
'''
左移动
:return:
'''
if self.x>0:
self.x-=10
pass
def Moveright(self):
'''
右移动
:return:
'''
if self.x<310:
self.x+=10
pass
# 发射子弹
def FaBullet(self):
# 创建一个新的子弹对象
newBullet = BaseBullet(self.x, self.y, self.screen,'Me')
self.bulletList.append(newBullet)
pass
class enemy(BasePlane):
'''
#创建敌机类
'''
def __init__(self,screen):
super().__init__(screen,'./plane/enemy1.png')
self.x = 0
self.y = 0 # 飞机的默认位置
#为敌机默认设置一个方向
self.direction='right'
pass
def faBullet(self):
'''
敌机随机发射子弹
:return:
'''
num=random.randint(1,50)
if num==3:
NewBullet = BaseBullet(self.x, self.y, self.screen,'enemy')
self.bulletList.append(NewBullet)
pass
def mov(self):
'''
敌机进行随机移动
:return:
'''
if self.direction=='right':
self.x+=5
elif self.direction=='left':
self.x-=5
pass
if self.x>350-60:
self.direction='left'
pass
elif self.x<0:
self.direction='right'
pass
pass
def Key_control(Meobject):
'''
定义普通的函数实现键盘的检测
:return:
'''
eventlist = pygame.event.get()
for event in eventlist:
if event.type == QUIT:
print('退出游戏')
exit()
pass
elif event.type == KEYDOWN:
if event.key == K_a or event.key == K_LEFT:
print('left')
Meobject.Moveleft()#调用函数实现
pass
elif event.key == K_d or event.key == K_RIGHT:
print('right')
Meobject.Moveright()#调用函数实现
pass
elif event.key == K_SPACE:
print('按下SPACE 发射子弹')
Meobject.FaBullet()
pass
def main():
screen=pygame.display.set_mode((350,500),depth=20)#创建窗口
background=pygame.image.load('./plane/fight_picture.jpg')#设定背景
pygame.display.set_caption('飞机小游戏')#设置标题
pygame.mixer.init()# 初始化函数/注释作用
pygame.mixer.music.load('./plane/fight.mp3')# 添加背景音乐
pygame.mixer.music.set_volume(0.5)#设置背景音乐大小
pygame.mixer.music.play(-1,0,0) # 背景音乐循环次数,-1表示无限循环
#创建一个飞机对象
Me=MePlane(screen)
#创建一个敌机对象
En=enemy(screen)
#设定要显示的内容
while True:
screen.blit(background,(0,0))#设定要显示的游戏内容
Me.display() # 设定要显示的我方飞机
Key_control(Me)#检测键盘实现
En.display()#显示敌机
En.mov()#敌机移动
En.faBullet()#敌机随机发射子弹
pygame.display.update()#更新现实的内容
time.sleep(0.1) #休眠一秒钟
# pygame.time.Clock().tick(5)
pass
pass
if __name__=='__main__':
main()