【汇智学堂】-python小游戏(太空阻击之九-添加游戏声音与积分)
5.9添加游戏声音与积分
最后,我们将游戏的声音及用户积分添加进来。下面是我们要做的事情:
1、为游戏添加声音
2、为游戏添加积分
添加声音的代码
pygame.mixer.music.load(‘resources/audio/moonlight.wav’)
pygame.mixer.music.play(-1, 0.0)
pygame.mixer.music.set_volume(0.25)
每次打中飞碟,就加100分。更新分数。代码如下:
score=0
if enemyrect.colliderect(bulletrect):
score+=100
font1 = pygame.font.SysFont(‘simsunnsimsun’, 16, True)
surface1 = font1.render(u’当前得分:’+str(score), True, [255, 0, 0])
screen.blit(surface1, [20, 20])
将代码整合起来,整合后完整代码如下:
import pygame
from pygame.locals import *
from sys import exit
import math
import random
#添加背景音乐与得分
screen_width, screen_height = 480, 700
screen=pygame.display.set_mode((screen_width, screen_height))
background=pygame.image.load(“resources/images/background2.png”)
pygame.display.set_caption(‘雷雷的太空大战’)
pygame.init()
running=1
flyingsaucers=[]
enemy = pygame.image.load(“resources/images/flyingsaucer.png”)
b=0
bullet = pygame.image.load(“resources/images/bullet1.png”)
player = pygame.image.load(“resources/images/hero1.png”)
positionPlayer=[100,400]
positionBullet=[positionPlayer[0]+50,positionPlayer[1]+40]
bullets=[]
keys = [False, False, False, False]
position=[]
pygame.mixer.music.load(‘resources/audio/moonlight.wav’)
pygame.mixer.music.play(-1, 0.0)
pygame.mixer.music.set_volume(0.25)
score=0
while running:
screen.blit(background,(0,0))
#screen.blit(player,positionPlayer)
for event in pygame.event.get():if event.type == pygame.KEYDOWN:if event.key==K_w:keys[0]=Trueelif event.key==K_a:keys[1]=Trueelif event.key==K_s:keys[2]=Trueelif event.key==K_d:keys[3]=Trueif event.type == pygame.KEYUP:if event.key==pygame.K_w:keys[0]=Falseelif event.key==pygame.K_a:keys[1]=Falseelif event.key==pygame.K_s:keys[2]=Falseelif event.key==pygame.K_d:keys[3]=False if event.type == pygame.QUIT:pygame.quit()exit()if event.type==pygame.MOUSEBUTTONDOWN:position = pygame.mouse.get_pos()angle = math.atan2(position[1]-(positionPlayer[1]+50),\
position[0]-(positionPlayer[0]+40))
bullets.append([angle,positionPlayer[0]+50,positionPlayer[1]+40])
if keys[0]:positionPlayer[1]-=10if positionPlayer[1]<=10:positionPlayer[1]=10
elif keys[2]:positionPlayer[1]+=10if positionPlayer[1]>=600:positionPlayer[1]=600
if keys[1]:positionPlayer[0]-=10if positionPlayer[0]<=10:positionPlayer[0]=10
elif keys[3]:positionPlayer[0]+=10if positionPlayer[0]>=380:positionPlayer[0]=380#screen.blit(player,positionPlayer)#旋转飞机
position = pygame.mouse.get_pos()
angle = math.atan2(position[1]-(positionPlayer[1]+50),position[0]-(positionPlayer[0]+40))
#print(angle*57.29)
playerrot = pygame.transform.rotate(player,360-angle*57.29)
screen.blit(playerrot, positionPlayer)#射出子弹
for bulletx in bullets: velx=math.cos(bulletx[0])*20vely=math.sin(bulletx[0])*20#print(velx)#print(vely)bulletx[1]+=velxbulletx[2]+=velyindex=0if bulletx[1]<0 or bulletx[1]>480 or bulletx[2]<0 or bulletx[2]>700:bullets.pop(index)index+=1bulletrot = pygame.transform.rotate(bullet,360-bulletx[0]*57.29)screen.blit(bulletrot,(bulletx[1],bulletx[2]))bulletrect=pygame.Rect(bulletrot.get_rect())bulletrect.left=bulletx[1]bulletrect.top=bulletx[2]#if enemyrect.colliderect(bulletrect):#print('打中飞碟')if b<5:flyingsaucers.append([random.randint(0,400),random.randint(20,100)])
b+=1#击落飞碟index=0 for flyingsaucer in flyingsaucers:if flyingsaucer[1]<610:flyingsaucer[1]+=0.5screen.blit(enemy,flyingsaucer)enemyrect=pygame.Rect(enemy.get_rect())enemyrect.left=flyingsaucer[0]enemyrect.top=flyingsaucer[1]indexbull=0for bulletx in bullets:#print(len(bullets))bulletrot = pygame.transform.rotate(bullet,360-bulletx[0]*57.29)bulletrect=pygame.Rect(bulletrot.get_rect())bulletrect.left=bulletx[1]bulletrect.top=bulletx[2] if enemyrect.colliderect(bulletrect):print('打中飞碟')print(len(bullets))print(len(flyingsaucers))print(index)print(indexbull)bullets.pop(indexbull)flyingsaucers.pop(index)print(index)print(indexbull)score+=100if(len(flyingsaucers)==0):b=0#重新生成飞碟indexbull+=1index+=1font1 = pygame.font.SysFont('simsunnsimsun', 16, True)surface1 = font1.render(u'当前得分:'+str(score), True, [255, 0, 0]) screen.blit(surface1, [20, 20]) pygame.display.update()#pygame.display.flip()
运行这段代码,游戏运行,音乐响起。在画布上的左上角,随时有更新的分数。见下图5-18、5-19、5-20。
图5-18
图5-19
图5-20
【汇智学堂】-python小游戏(太空阻击之九-添加游戏声音与积分)相关推荐
- 游戏开发入门(九)游戏同步技术
视频链接:游戏开发入门(九)游戏同步技术(3节课 时常:约1小时07分钟) 第三个视频后9分钟没有声音,不过核心内容都已涉及到 笔记与总结(请先学习视频内容): 1.网络同步的概念与意义 概念:任何一 ...
- 【汇智学堂】-python小游戏(太空阻击之一-浅谈游戏开发)
第五章:太空阻击 本章将通过一个太空射击游戏实例来介绍python中pygame的基本使用方法,包括创建游戏体,键盘.鼠标操作,基本的物理碰撞.UI显示和逻辑处理等. 5.1浅谈游戏开发 游戏开发是一 ...
- 【Unity3D】游戏物体操作 ① ( 场景简介 | 添加游戏物体 | 操作游戏物体 | 选中游戏物体 | 场景显示效果缩放 | 重命名游戏物体 | 复制游戏物体 | 删除游戏物体 | 移动物体 )
文章目录 一.Scene 场景简介 二.添加游戏物体 三.操作游戏物体 1.选中游戏物体 2.场景显示效果缩放 3.重命名游戏物体 4.复制游戏物体 5.删除游戏物体 6.Inspector 检查器窗 ...
- 【汇智学堂】-python小游戏(太空阻击之七-旋转战机发射子弹)
5.7旋转战机发射子弹 我们在5.5节时,按一定方向发射了子弹.在游戏场景中,要求飞机能够在不同角度,发射出去子弹.本节我们来解决旋转战机和按一定角度发射子弹的问题. 1.理解三角知识中的角度.反正切 ...
- 【汇智学堂】-python小游戏(太空阻击之三-场景创建)
5.3场景创建 现在我们来设定一下我们的游戏场景:480*700像素的画布.下面是我们要做的事情. 1.设置游戏标题.导入游戏资源. 2.更新屏幕,将游戏背景显示出来. 我们先来看代码段一: impo ...
- python场景建立_【汇智学堂】-python小游戏(太空阻击之三-场景建立)
5.3场景建立 如今咱们来设定一下咱们的游戏场景:480*700像素的画布.下面是咱们要作的事情. 一.设置游戏标题.导入游戏资源. 二.更新屏幕,将游戏背景显示出来.web 咱们先来看代码段一:sv ...
- 【汇智学堂】-python小游戏(太空阻击之二-准备工作)
5.2准备工作 5.2.1导入美术资源 我们将准备好的图片放置在resources\images文件夹中,并将该文件夹和PYTHON文件放在同一目录下. 5.2.2 准备工作:pygame的安装 Py ...
- 【汇智学堂】-python小游戏(太空阻击之六-上下左右移动战机)
5.6上下左右移动战机 我们制作的战机,只能在固定的位置,这一节我们来让它上下左右移动.下面是我们要做的事情. 1.理解键盘按键. 2.我们用WASD四个按键来控制战机的上左下右四个方向. 3.根据按 ...
- 【汇智学堂】-python小游戏(太空阻击之五-无敌战机出现,横向射出子弹)
5.5无敌战机出现,横向射出子弹 飞碟入侵,战机出征.下面是我们要做的事情. 1.在固定坐标位置生成战机. 2.根据战机位置,修改后生成子弹的位置. 3.鼠标每次单击时,生成新子弹. 4.update ...
最新文章
- GitHub五万星登顶,程序员命令行最全技巧宝典!
- SQL获取某个时间段的数据
- input驱动12种事件类型Event types的含义
- 超图iServer版本安装和使用入门图解
- 删除linux内核多余架构,删除多余Linux内核方法
- Flutter AnimatedContainer 动画使用解析
- java 清单文件 生成,使用批处理文件生成文件列表清单
- 苹果修复 Gatekeeper 绕过漏洞
- poj2240 Floyd
- MySQL的基础操作
- html浮动提示框,JavaScript浮动提示框Tooltip效果
- 一行html代码微信透明头像,微信透明头像,微信空白名,立刻消失
- Python编程通过出生日期判断星座
- 技术总监岗位职责和要求
- aka名字_想给Aka征集一个中文名字
- 写给XJTU计算机系大一大二的童鞋
- 使用JavaReport制作Web报表与图形 入门示例
- 互联网电商平台运营模式
- 【Cplex】IBM ILOG Concert: Impossible to create an instance of Excel.
- 单端反激式变换器开关稳压电源原理图 此博文包含图片	(2009-02-24 12:17:53)转载▼ 标签: 单端反激式 变换器 高频变压器 原理图 磁滞回线 磁心 杂谈	分类: technical
热门文章
- 如何购买腾讯云服务器?腾讯云服务器购买帮助文档
- Pat刷题真题乙级(4)
- 点菜系统 毕设 服务器,安卓240点菜系统app+server
- 简约黄历日历网站源码分享 上传空间就能打开
- Filed to convert property value of type ‘java.lang.String‘ to required type ‘java.util.Date‘ for XX
- Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day51】—— tomcat
- Kotlin中Int和 Int? 以及 IntArray 和 Array的问题
- 微信小程序实现物流信息(进度展示)
- Scrot HowtoForge截图工具
- java string转map_Java string类型转换成map代码实例