本程序为简单的猜数游戏添加了笔者所能想象到的所有功能。
包括如下:背景音乐,胜利音乐,设定猜数范围,猜数中途退出,重复游玩,游玩时间,猜数次数限制
具体功能实现参见代码
# 导入必要的库
import pygame
import random
import time
# 背景音乐和完成音乐
Music1 = r'D:\XX\XXXX_XXXX.ogg'
Music2 = r'掌声.wav'
pygame.init() # 初始化模块
pygame.mixer.init()
pygame.mixer.music.load(Music1) # 背景音乐
Wave_win = pygame.mixer.Sound(Music2) # 完成音乐
pygame.mixer.music.set_volume(0.2) # 背景音乐音量
Wave_win.set_volume(0.05) # 完成掌声音量
pygame.mixer.music.play(-1) # 设置背景音乐循环播放
startTime = time.time() # 记录开始时间
"""程序主体"""
again = True
print('欢迎来到猜数游戏。')
# 游戏循环
while True:
NumberRight = True
"""随机数生成"""
while NumberRight:
# 输入随机数取值范围,并判断是否为整型
RangeS = input('\n请设置被猜测数字范围的开始值:\t')
if not RangeS.isdigit():
print('输入的不是整数,请重新输入。')
continue
else:
RangeS = int(RangeS)
RangeE = input('\n请设置被猜测数字范围的结束值:\t')
if not RangeE.isdigit():
print('输入的不是整数,请重新输入。')
continue
else:
RangeE = int(RangeE)
# 确保随机数取值成功
if RangeS > RangeE:
print('开始值不能大于结束值,请重新设置')
else:
NumberRight = False
# 生成随机数
TargetNumber = int(random.randint(RangeS, RangeE))
print(f'我现在已从{RangeS}-{RangeE}中选取了一个数。')
Right = False
count = 0 # 猜数计数
Continue = 'yes' # 定义游戏中断
# 核心部分
while not Right:
print('现在开始第%s次猜数' % (count+1))
GuessNumber = input('请输入你猜的数?\t')
if not GuessNumber.isdigit(): # 确保输入的数为整数
print('输入的不是整数,请重新输入。')
continue
else:
GuessNumber = int(GuessNumber)
if GuessNumber > RangeS: # 确保输入的数在随机数范围内
print('输入的数应在', RangeS, '到', RangeE, '之间')
continue
elif GuessNumber < RangeE:
print('输入的数应在', RangeS, '到', RangeE, '之间')
continue
else: # 猜数次数加1,定义一个变量用以帮助判断猜数次数是否是三的整数倍
count += 1
thrice = count / 3
Right = (TargetNumber == GuessNumber) # 退出循环条件
if Right: # 判断是否胜利
print('恭喜你,经过'+str(count)+'次猜对了!!')
Wave_win.play() # 播放完成音乐
break # 跳出循环
elif GuessNumber > TargetNumber:
print('往小点想!')
else:
print('往大点想!')
"""
如果要限制猜数次数加入如下代码
if count >= 9:
print('游戏失败')
break
"""
if thrice.is_integer(): # 提供退出猜数的途径(每猜数三次询问一次)
print('你已经猜了', count, '次', end=',')
Continue = input('是否继续? yes/no?\t')
if Continue == 'no':
GuessNumber = TargetNumber
Right = (TargetNumber == GuessNumber)
endTime = time.time() # 记录完成时间
useTime = int(endTime - startTime) # 游玩时间
print('已游玩'+str(useTime)+'秒')
again = input('是否再来一次? tes/no?\t') # 是否再玩
if again.upper() == 'no': # 退出游戏
break
print('再见!')
pygame.time.wait(3000)