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小游戏(太空阻击之九-添加游戏声音与积分)相关推荐

  1. 游戏开发入门(九)游戏同步技术

    视频链接:游戏开发入门(九)游戏同步技术(3节课 时常:约1小时07分钟) 第三个视频后9分钟没有声音,不过核心内容都已涉及到 笔记与总结(请先学习视频内容): 1.网络同步的概念与意义 概念:任何一 ...

  2. 【汇智学堂】-python小游戏(太空阻击之一-浅谈游戏开发)

    第五章:太空阻击 本章将通过一个太空射击游戏实例来介绍python中pygame的基本使用方法,包括创建游戏体,键盘.鼠标操作,基本的物理碰撞.UI显示和逻辑处理等. 5.1浅谈游戏开发 游戏开发是一 ...

  3. 【Unity3D】游戏物体操作 ① ( 场景简介 | 添加游戏物体 | 操作游戏物体 | 选中游戏物体 | 场景显示效果缩放 | 重命名游戏物体 | 复制游戏物体 | 删除游戏物体 | 移动物体 )

    文章目录 一.Scene 场景简介 二.添加游戏物体 三.操作游戏物体 1.选中游戏物体 2.场景显示效果缩放 3.重命名游戏物体 4.复制游戏物体 5.删除游戏物体 6.Inspector 检查器窗 ...

  4. 【汇智学堂】-python小游戏(太空阻击之七-旋转战机发射子弹)

    5.7旋转战机发射子弹 我们在5.5节时,按一定方向发射了子弹.在游戏场景中,要求飞机能够在不同角度,发射出去子弹.本节我们来解决旋转战机和按一定角度发射子弹的问题. 1.理解三角知识中的角度.反正切 ...

  5. 【汇智学堂】-python小游戏(太空阻击之三-场景创建)

    5.3场景创建 现在我们来设定一下我们的游戏场景:480*700像素的画布.下面是我们要做的事情. 1.设置游戏标题.导入游戏资源. 2.更新屏幕,将游戏背景显示出来. 我们先来看代码段一: impo ...

  6. python场景建立_【汇智学堂】-python小游戏(太空阻击之三-场景建立)

    5.3场景建立 如今咱们来设定一下咱们的游戏场景:480*700像素的画布.下面是咱们要作的事情. 一.设置游戏标题.导入游戏资源. 二.更新屏幕,将游戏背景显示出来.web 咱们先来看代码段一:sv ...

  7. 【汇智学堂】-python小游戏(太空阻击之二-准备工作)

    5.2准备工作 5.2.1导入美术资源 我们将准备好的图片放置在resources\images文件夹中,并将该文件夹和PYTHON文件放在同一目录下. 5.2.2 准备工作:pygame的安装 Py ...

  8. 【汇智学堂】-python小游戏(太空阻击之六-上下左右移动战机)

    5.6上下左右移动战机 我们制作的战机,只能在固定的位置,这一节我们来让它上下左右移动.下面是我们要做的事情. 1.理解键盘按键. 2.我们用WASD四个按键来控制战机的上左下右四个方向. 3.根据按 ...

  9. 【汇智学堂】-python小游戏(太空阻击之五-无敌战机出现,横向射出子弹)

    5.5无敌战机出现,横向射出子弹 飞碟入侵,战机出征.下面是我们要做的事情. 1.在固定坐标位置生成战机. 2.根据战机位置,修改后生成子弹的位置. 3.鼠标每次单击时,生成新子弹. 4.update ...

最新文章

  1. GitHub五万星登顶,程序员命令行最全技巧宝典!
  2. SQL获取某个时间段的数据
  3. input驱动12种事件类型Event types的含义
  4. 超图iServer版本安装和使用入门图解
  5. 删除linux内核多余架构,删除多余Linux内核方法
  6. Flutter AnimatedContainer 动画使用解析
  7. java 清单文件 生成,使用批处理文件生成文件列表清单
  8. 苹果修复 Gatekeeper 绕过漏洞
  9. poj2240 Floyd
  10. MySQL的基础操作
  11. html浮动提示框,JavaScript浮动提示框Tooltip效果
  12. 一行html代码微信透明头像,微信透明头像,微信空白名,立刻消失
  13. Python编程通过出生日期判断星座
  14. 技术总监岗位职责和要求
  15. aka名字_想给Aka征集一个中文名字
  16. 写给XJTU计算机系大一大二的童鞋
  17. 使用JavaReport制作Web报表与图形 入门示例
  18. 互联网电商平台运营模式
  19. 【Cplex】IBM ILOG Concert: Impossible to create an instance of Excel.
  20. 单端反激式变换器开关稳压电源原理图 此博文包含图片 (2009-02-24 12:17:53)转载▼ 标签: 单端反激式 变换器 高频变压器 原理图 磁滞回线 磁心 杂谈 分类: technical

热门文章

  1. 如何购买腾讯云服务器?腾讯云服务器购买帮助文档
  2. Pat刷题真题乙级(4)
  3. 点菜系统 毕设 服务器,安卓240点菜系统app+server
  4. 简约黄历日历网站源码分享 上传空间就能打开
  5. Filed to convert property value of type ‘java.lang.String‘ to required type ‘java.util.Date‘ for XX
  6. Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day51】—— tomcat
  7. Kotlin中Int和 Int? 以及 IntArray 和 Array的问题
  8. 微信小程序实现物流信息(进度展示)
  9. Scrot HowtoForge截图工具
  10. java string转map_Java string类型转换成map代码实例