有时,你用pygame写的游戏也许需要播放一些背景音乐,该怎么做呢,直接上代码:

下面的代码,有关于:

1>设置对话框图标、大小、标题

2>播放音乐

3>设置背景图片,以及获取背景图片的矩形(通过这个矩形可以获得大小等信息)

4>获取按键事件

# -*- coding: cp936 -*-
filename='Colbie Caillat - Break Through.mp3'
link='http://en.wikipedia.org/wiki/Colbie_Caillat'
bg='CB.jpg'
bg2='CB2.jpg'
bg3='CB3.jpg'
bg4='CB4.jpg'
b='C.jpg' import pygame,sys,os
from pygame.locals import *
import webbrowser
def yep():
rect=(0,0)
n=1
m=4
p=1
pygame.init()
screen = pygame.display.set_mode((251, 201), 0, 32) #创建了一个窗口
#设置窗口标题
pygame.display.set_caption("Break Through!")
background = pygame.image.load(bg).convert()
#设置窗口图标
icon = pygame.image.load(b)
pygame.display.set_icon(icon)
#加载、播放音乐
pygame.mixer.music.load(filename)
pygame.mixer.music.play()
while True:#游戏主循环
for event in pygame.event.get():
if event.type ==QUIT:
pygame.quit()
sys.exit()
pressed_keys = pygame.key.get_pressed()
if event.type==KEYDOWN:
#如果按下空格键,则暂停音乐,再按则继续
if pressed_keys[K_SPACE]:
if p==1:
pygame.mixer.music.pause()
p=0
else:
pygame.mixer.music.unpause()
p=1
else:
#按下其他键则打开链接
webbrowser.open_new_tab(link)
#如果按下鼠标左键,则变换背景图片,并且对话框的大小随着背景图片的大小而改变
if event.type == pygame.MOUSEBUTTONDOWN:
n+=1
if n%m==0:
#screen = pygame.display.set_mode((251, 201), 0, 32)
background = pygame.image.load(bg).convert()
#获取背景图的矩形
rect = background.get_rect()
screen = pygame.display.set_mode((rect.width, rect.height))
if n%m==1:
#screen = pygame.display.set_mode((315, 275), 0, 32)
background = pygame.image.load(bg2).convert()
rect = background.get_rect()
screen = pygame.display.set_mode((rect.width, rect.height))
if n%m==2:
#screen = pygame.display.set_mode((284, 177), 0, 32)
background = pygame.image.load(bg3).convert()
rect = background.get_rect()
screen = pygame.display.set_mode((rect.width, rect.height))
if n%m==3:
#screen = pygame.display.set_mode((284, 177), 0, 32)
background = pygame.image.load(bg4).convert()
rect = background.get_rect()
screen = pygame.display.set_mode((rect.width, rect.height))
screen.blit(background,rect)
pygame.display.update()
if __name__ == "__main__":
yep()

看代码注释,就差不多了。

运行结果截图

点击对话框,可以看到

可以明显的看到,对话框大小改变了。代码资源下载链接:

http://download.csdn.net/detail/kamsau/6705279

版权声明:本文为博主原创文章,未经博主允许不得转载。

pygame “音乐盒”---- 播放一首歌& 点击对话框后背景以及对话框大小改变的更多相关文章

  1. Android之通过网络播放一首简单的音乐

    首先,附上程序执行后的效果.例如以下图所看到的: 一.部署一个web项目到tomcatserver上: 1.这个小程序是结合网络来播放一首音乐的,首先,把我们搞好的一个web项目放置在tomcat安装 ...

  2. [zt]给你的Mp4大换血,精选Touch里3年收集的900多首歌,"经典不忍去的""最新近流行的",与你共享~~

    如果你是音乐爱好者: 这些歌, 请戴上耳机, 调大音量, 一个人听 ,全世界 都是你的!!!!! (一)这些歌很温暖,没有金属味,适合有阳光的午后,很悠闲... [Anaesthesia]Maximi ...

  3. Python使用Pygame.mixer播放音乐

    Python使用Pygame.mixer播放音乐 frequency这里是调频率... 播放网络中的音频: #!/usr/bin/env python # -*- coding: utf-8 -*- ...

  4. mciSendString 多线程播放多首音乐 & 注意事项

    昨天晚上遇到一个问题: 使用 mciSendString  控制播放多首音乐的时候,出现最后一次播放的音乐无法通过 mciSendString ("close mp3") 关闭音乐 ...

  5. 09、 在QQ音乐中查找七里香这首歌的精彩评论

       找到七里香这首歌的精彩评论      URL https://c.y.qq.com/base/fcgi-bin/fcg_global_comment_h5.fcg?g_tk=5381&l ...

  6. SICAU-OJ:要我唱几首歌才能够将你捕捉

    要我唱几首歌才能够将你捕捉 题意: 有N种颜色的牛,现在可以执行以下两种操作: 1.抓捕一只牛,代价为ai: 2.花费x的代价使用魔法,让所有颜色加1,N会变为1. 求得到N种颜色的牛最少花费的代价. ...

  7. BUUCTF-来首歌吧

    来首歌吧 歌曲题目一般就是整个摩斯电码 看上面的样子应该就是摩斯电码解密一下 ..... -... -.-. ----. ..--- ..... -.... ....- ----. -.-. -... ...

  8. 让超链接点击后不跳转,可以用href = "#",但是这个#就会锚点到页面最上边 点击链接后不跳转可以设置成

    让超链接点击后不跳转,可以用href = "#",但是这个#就会锚点到页面最上边     点击链接后不跳转可以设置成     1.<a href="javascri ...

  9. Android实现点击通知栏后,先启动应用再打开目标Activity ,极光推送等推送的也可以参考一下(转)

    我因为项目中集成了极光推送,推送的通知栏点开需要确定进入哪个界面就参考了这边文章,感谢作者的无私. 标签: 情况简述 在开发Android app的过程中,遇到这样一个需求:app中启动一个Servi ...

随机推荐

  1. asp.net 使用JQuery 调用Ashx 后面直接写方法名,通过反射找到对应的方法

    using System.Reflection; public class Industry_Manager : IHttpHandler { HttpRequest gRequest = null; ...

  2. AspNet WebApi OData 学习

    OData介绍:是一个查询和更新数据的Web协议.OData应用了web技术如HTTP.Atom发布协议(AtomPub)和JSON等来提供对不同应用程序,服务 和存储的信息访问.除了提供一些基本的操 ...

  3. LeetCode Find Minimum in Rotated Sorted Array 旋转序列找最小值(二分查找)

    题意:有一个有序序列A,其内部可能有部分被旋转了,比如A[1...n]被转成A[mid...n]+A[1...mid-1],如果被旋转,只有这种形式.问最小元素是?(假设没有重复元素) 思路:如果是序 ...

  4. 物联网操作系统HelloX应用编程指南

    HelloX操作系统应用编程指南 HelloX应用开发概述 可以通过三种方式,在HelloX操作系统基础上开发应用: 1.        以内部命令方式实现应用,直接编译链接到HelloX的内核she ...

  5. asp.net输出docx文档出现【文件已损坏 无法打开】问题的解决方案

    在某个项目中,有个需求需要将一些附件文档以字节流的形式直接存储在数据库中. 功能实现后,尝试过很多格式文件的上传下载处理,均未发现问题, 唯独在下载docx格式文件后,一打开文件就提示: “无法打开文 ...

  6. TCP协议的一些问题

    1 连接握手三次 解释1:已失效的连接请求报文段 情况下如下:client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server.本 ...

  7. H.264中NAL、Slice与frame意思及相互关系

    H.264中NAL.Slice与frame意思及相互关系 NAL nal_unit_type中的1(非IDR图像的编码条带).2(编码条带数据分割块A).3(编码条带数据分割块B).4(编码条带数据分 ...

  8. 最简单的视音频播放示例6:OpenGL播放YUV420P(通过Texture,使用Shader)

    本文记录OpenGL播放视频的技术.上一篇文章中,介绍了一种简单的使用OpenGL显示视频的方式.但是那还不是OpenGL显示视频技术的精髓.和Direct3D一样,OpenGL更好的显示视频的方式也 ...

  9. poj 1742 Coins

    // v给出N种硬币和个数,问可以取到1->M中的多少个值.// 背包 完全背包 或多 重背包(二进制优化)都可以做// #include <iostream> #include & ...

  10. 使用ffmpeg实现转码样例(代码实现)

    分类: C/C++ 使用ffmpeg实现转码样例(代码实现) 使用ffmpeg转码主要工作如下: Demux -> Decoding -> Encoding -> Muxing 其中 ...