pygame小游戏——英语单词挑战

pygame小游戏——英语单词挑战

游戏简介

使用pygame编的英语单词挑战小游戏,可通过读取单词文件,随机抽取单词,给出中文解释,通过键盘输入,在屏幕上显示单词,若输入正确则显示,可显示得分和进度,可通过Tab键提示,通过Enter键跳过。

游戏界面

1.打开游戏
在这里插入图片描述
中间为单词,默认*显示,会逐渐下降,输入正确后显示相应的字母,最底下显示中文解释,右上角显示分值和进度,左上角显示主页和暂停键。
单词输入正确得5分,单词落到最下方未输入正确,扣2分。
游戏带背景音乐,成功和失败有相应的音效。
2. 输入单词页面如下
在这里插入图片描述
3.点击主页页面如下
在这里插入图片描述
可显示最高分,最高进度,当前分数,当前进度等。
可点击继续游戏,关闭游戏后会保存进度,点击继续游戏可接着上次的游戏进度继续游戏。
可点击重新开始,保留最高分和进度的记录,重新开始游戏。
可点击结束游戏,结束游戏会保存当前得分和当前进度。
3. 游戏胜利页面:
在这里插入图片描述

重点代码

  1. 使用字体
    系统默认不能显示中文字体,使用中文字体需要下载字体文件,导入
wordfont = pygame.font.SysFont("arial", 36)  # 使用系统字体
propfont = pygame.font.Font("source/楷体_GB2312.ttf", 20)  # 使用自定义楷体字体
  1. 读取文件,并截取
 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()
  1. 图片、音效等显示
    图片显示
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

发布了9 篇原创文章 · 获赞 2 · 访问量 655

猜你喜欢

转载自blog.csdn.net/weixin_39151703/article/details/104118794
今日推荐