python游戏开发:键盘打字小游戏的改进

既然是游戏,离不开音乐。在键盘小游戏中,需要有背景音乐,除此,敲击键盘成功的声音也是一个很好的陪伴。这样我们需要提前准备两段声音,大家把这两段声音下载下来,建议下载到与代码同文件夹。

背景音乐:

音效:

这节课我们就研究一下背景音乐的基本的实现方法,Pygame使用mixer模块处理声音。

2.3.3.1 mixer模块与初始化

pygame.mixer -pygame module for loading and playing sounds

函数

功能

声道

>>>Channel(id)  -> Channel

Create a Channel  object for controlling playback

>>>get_num_channels()  -> count

get the total  number of playback channels

初始化

>>>init(frequency=22050,  size=-16, channels=2, buffer=4096, devicename=None, allowedchanges=AUDIO_ALLOW_FREQUENCY_CHANGE  | AUDIO_ALLOW_CHANNELS_CHANGE) -> None

initialize the  mixer module

>>>pre_init(frequency=22050,  size=-16, channels=2, buffersize=4096, devicename=None) -> None

preset the mixer  init arguments

>>>quit()  -> None

uninitialize the mixer

停止

暂停

>>>pause()  -> None

Temporarilystop playback of all sound channels

>>>stop()  -> None          

stop playback of  all sound channels

>>>unpause()  -> None     

resume paused playback of sound channels

Sound类

SoundType类

>music模块

导入pygame库,并且初始化声音播放模块

 `import pygame` `pygame.mixer.init()` 
2.3.3.2加载音乐的两种方式

一般游戏来说,声音主要分为两种,一种是背景音乐,一种是音效。

背景音乐就是时刻伴随着游戏存在的,往往就是重复播放的一首曲子或者歌曲;音效就是在某种条件下被触发产生的,比如两个小球碰撞在一起就会发出“啪啪啪” 的声音。

相应的pygame也提供了两种加载音乐的方法。

pygame提供了两个加载音乐文件的方法

pygame.mixer.Sound,主要加载ogg和wav音频文件。

pygame.mixer.music,主要加载mp3音频文件。

下面我们首先熟悉一下两个函数。

pygame.mixer_music- pygame module for controlling streamed audio

>>>Pygame.mixer.music模块的相关函数

函数

功能

>>>load(filename)  -> None

load(object) -> None

>>>get_pos()  -> time   

get the music play time

>>>set_pos(pos)  -> None

set position to play from

>>>get_volume()  -> value

get the music volume

>>>set_volume(value)  -> None

set the music volume

>>>play(loops=0,  start=0.0) -> None

Start the  playback of the music stream

>>>pause()  -> None

temporarily stop  music playback

>>>unpause()  -> None

resume paused music

>>>stop() -> None

  stop the music playback

   #开启背景音乐``pygame.mixer.init()``pygame.mixer.music.load("./audios/DasBeste(背景).mp3")``pygame.mixer.music.set_volume(0.3)``pygame.mixer.music.play(-1)

音效我们使用Sound函数

          >>>Pygame.mixer.Sound类的相关函数

函数

功能

创建

Sound(filename)  -> Sound

 Sound(file=filename) -> Sound

 Sound(buffer) -> Sound

 Sound(buffer=buffer) -> Sound

 Sound(object) -> Sound

 Sound(file=object) -> Sound

 Sound(array=object) -> Sound

Create a new  Sound object from a file or buffer object

 

>>>get_length()  -> seconds

 

get the length  of the Sound

>>>get_num_channels()  -> count

count how many  times this Sound is playing

>>>get_volume()  -> value

>>>get  the playback volume

>>>set_volume(value)  -> None

 

set the playback  volume for this Sound

播放

控制

>>>play(loops=0,  maxtime=0, fade_ms=0) -> Channel

 begin sound playback

 

>>>stop()  -> None

 stop sound playback

音效开始的代码如下:

hit_sound = pygame.mixer.Sound("./audios/get(击中).wav")``hit_sound.set_volume(6)` `#击中之后hit_sound发声``hit_sound.play()
2.3.3.3 改进的逻辑

主程序中开启背景音乐,音效也初始化。在循环部分,则是在击中的情况下,播放音效。

2.3.3.4改进的代码
import sys,random,time,pygame``from pygame.locals import *``   ``def print_text(font,x,y,text,color=(255,255,255)):`    `imgText = font.render(text,True,color)`    `screen.blit(imgText,(x,y))``   ``#main program begins``pygame.init()``screen=pygame.display.set_mode((660,550))``pygame.display.set_caption("键盘小游戏")``fontChinese = pygame.font.SysFont('华文琥珀',25)#一般不需要输入文件路径``font1=pygame.font.Font(None,24)``font2=pygame.font.Font(None,200)``white=255,255,255``yellow=255,255,0``   ``#预备音乐``pygame.mixer.init()``pygame.mixer.music.load("./DasBeste(背景).mp3")``pygame.mixer.music.set_volume(0.3)``pygame.mixer.music.play(-1)``   ``hit_sound = pygame.mixer.Sound("./get(击中).wav")``hit_sound.set_volume(6)``   ``key_flag=False``correct_answer=97``seconds=61``score=0``clock_start=0``game_over=True``   ``while True:`    `for event in pygame.event.get():`        `if event.type ==QUIT:`            `sys.exit()`        `elif event.type == KEYDOWN:`            `key_flag=True`        `elif event.type == KEYUP:`            `key_flag=False`    `keys=pygame.key.get_pressed()`    `if keys[K_ESCAPE]:`        `sys.exit()`    `if keys[K_RETURN]:`        `if game_over:`            `game_over=False`            `score=0`            `seconds=61`            `clock_start=time.time()``   `    `current=time.time()-clock_start`    `if seconds-current<0:`        `game_over=True`    `elif current<=61:`        `if keys[correct_answer]:`            `score+=1`            `hit_sound.play()`            `correct_answer = random.randint(97, 122)``   `    `#clear the screen`    `screen.fill((0,100,0))`    `print_text(fontChinese,2,0,"测试一下一分钟能打多少字?")`    `print_text(font1,2,35,"Try to keep up for 60 seconds……")``   `    `if key_flag:`        `print_text(font1,500,0,"<key>")`    `if not game_over:`        `print_text(font1,1,80,"Time:"+str(int(seconds-current)))`    `print_text(font1,1,100,"Speed:"+str(score)+"letters/min")`    `if game_over:`        `print_text(font1,1,160,"Press enter to start...")`    `print_text(font2,1,240,chr(correct_answer-32),yellow)``   `    `pygame.display.update()``pygame.quit()

编程实践拓展

使用pygame编写简单的音乐播放器。

(1)简单的就是直接播放。

(2)也可以增加键盘控制音乐的播放、暂停,音量调节。

(3)如果要使用图片显示,可以尝试image模块,以及鼠标事件的模块

点击下方安全链接前往获取

CSDN大礼包:《Python入门&进阶学习资源包》免费分享

👉Python实战案例👈

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

图片

图片

👉Python书籍和视频合集👈

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

图片

👉Python副业创收路线👈

图片

这些资料都是非常不错的,朋友们如果有需要《Python学习路线&学习资料》,点击下方安全链接前往获取

CSDN大礼包:《Python入门&进阶学习资源包》免费分享

本文转自网络,如有侵权,请联系删除。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇

)">
下一篇>>