pygame小游戏——英语单词挑战
使用pygame编的英语单词挑战小游戏,可通过读取单词文件,随机抽取单词,给出中文解释,通过键盘输入,在屏幕上显示单词,若输入正确则显示,可显示得分和进度,可通过Tab键提示,通过Enter键跳过。
1.打开游戏
中间为单词,默认*显示,会逐渐下降,输入正确后显示相应的字母,最底下显示中文解释,右上角显示分值和进度,左上角显示主页和暂停键。
单词输入正确得5分,单词落到最下方未输入正确,扣2分。
游戏带背景音乐,成功和失败有相应的音效。
2. 输入单词页面如下
3.点击主页页面如下
可显示最高分,最高进度,当前分数,当前进度等。
可点击继续游戏,关闭游戏后会保存进度,点击继续游戏可接着上次的游戏进度继续游戏。
可点击重新开始,保留最高分和进度的记录,重新开始游戏。
可点击结束游戏,结束游戏会保存当前得分和当前进度。
3. 游戏胜利页面:
wordfont = pygame.font.SysFont("arial", 36) # 使用系统字体
propfont = pygame.font.Font("source/楷体_GB2312.ttf", 20) # 使用自定义楷体字体
f = open(filename, encoding='utf-8') # 打开文本,定义格式,能够读取中文
for line in f.readlines(): # 读取行
line = line.strip() # 去掉/n换行符
word = line.split(":")[0] # 截取单词
prompt = line.split(":")[1] # 截取中文提示
3.按行读取文件
import linecache
with open(historyfile, mode='r', encoding='utf-8') as f:
record_score = int(linecache.getline(historyfile, 1)) # 读取第一行
record_rate = float(linecache.getline(historyfile, 2)) # 读取第二行
score = int(linecache.getline(historyfile, 3)) # 读取第三行
f.close()
4.鼠标、键盘事件
for event in pygame.event.get():
if event.type == QUIT: # 退出
……
elif event.type == MOUSEBUTTONDOWN: # 鼠标按下
if event.button == 1 and paused_rect.collidepoint(event.pos): # 检测鼠标左键按下时,是否在范围内
……
elif event.type == KEYDOWN: # 键盘输入
if event.key == K_TAB: # tab键
……
elif event.key == K_RETURN: # 回车键
……
else:
keyvalue = chr(event.key) # 获取ASCII码转字符串,监测输入字母
# 获取鼠标位置
pos = pygame.mouse.get_pos()
main_image = pygame.image.load("source/主页.png").convert_alpha() # 导入图片
main_rect = main_image.get_rect() # 图片坐标及尺寸
main_rect.left, main_rect.top = width - paused_rect.width - 70, 10 # 以左上角的x和y坐标定位
screen.blit(main_image, main_rect) # 主页图片,(图片,坐标)
音乐播放
pygame.mixer.music.load("source/背景音乐.mp3") # 导入背景音乐
pygame.mixer.music.set_volume(0.2) # 设置音量
pygame.mixer.music.play(-1) # 播放背景音乐
pygame.mixer.music.pause() # 背景音乐暂停
pygame.mixer.music.unpause() # 背景音乐取消暂停
pygame.mixer.music.stop() # 背景音乐关闭
音效播放
success_sound = pygame.mixer.Sound("source/正确.wav") # 导入音效
success_sound.set_volume(0.2) # 设置音量
success_sound.play() # 音效播放
pygame.mixer.pause() # 所有音效暂停
pygame.mixer.unpause() # 所有音效取消暂停
pygame.mixer.stop() # 所有音效停止
文字显示
self.wordfont = pygame.font.SysFont("arial", 36) # 定义字体,使用系统字体
self.showtext = self.wordfont.render("显示文本", True, WHITE, BLACK) # 定义文本,前景色,背景色
self.rect = self.wordtext.get_rect() # 定义坐标
self.rect.left, self.rect.top = (self.width - self.rect.width) // 2, 20 # 以左上角的x和y为定位
screen.blit(self.showtext, self.rect) # 在坐标位置显示文字
画矩形
pygame.draw.rect(screen, WHITE, ((10, 60), (200, 20)), 2) # 画矩形,白色,坐标(10,60),长宽(200,20),线宽2;线宽为0时表示填充
https://download.csdn.net/download/weixin_39151703/12126247