我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何用Python实现问题回答小游戏

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何用Python实现问题回答小游戏

这篇文章将为大家详细讲解有关如何用Python实现问题回答小游戏,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

读取问题

如下所示,我们在文本中写了一个问题,然后将其读取出来。

“黄河远上白云间,一片孤城万仞山。”的作者是谁?

王之涣

李白

白居易

杜甫

file = open("1.txt", "r")question_coll = file.readlines()file.close()print(file)

运行之后发现报错,查询之后发现编码格式不正确。

如何用Python实现问题回答小游戏

设置了读取的编码格式发现可以读取文本的内容

file = open("1.txt", encoding='utf-8')

绘制回答面板

为了方便读取,新建一个类来储存文件中的问题

# 问题类class Question:    # 回答列表    answer_question = []    # 正确答案    answer_index = 1    """问题类"""    def __init__(self, question):        self.question = question

导入问题,将文件中的问题保存在qustion中

from question import Question

因为文件的格式是固定的以6为一个问题的所有行数。

将问题

questionList = []for i in range(int(len(question_coll) / 6)):    que_all = question_coll[i * 6: i * 6 + 6]    que = Question(que_all[0].rstrip())    que.answer_question = [que_all[1].rstrip(), que_all[2].rstrip(), que_all[3].rstrip(), que_all[4].rstrip()]    que.answer_index = int(que_all[5].rstrip())    questionList.append(que)

封装屏幕上显示文字的打印

def draw_text(window_screen, font_size, content, starting_x, starting_y, text_color=WHITE, bg_color=BLACK):    # 绘制文字    # 设置字体    font = pygame.font.SysFont("方正粗黑宋简体", font_size)    text1 = font.render(content, True, text_color, bg_color)    window_screen.blit(text1, (starting_x, starting_y))

显示问题

draw_text(screen, 48, "知识竞赛", 180, 20)while True:    for event in pygame.event.get():        if event.type == QUIT:            pygame.quit()            sys.exit()    tips = "当前一共有" + str(len(questionList)) + "个问题,目前是第" + str(index) + "个。"    draw_text(screen, 18, tips, 20, 140, bg_color=WHITE, text_color=BLACK)    current_que = questionList[index - 1]    question_main = "问题" + str(index) + ". " + current_que.question    draw_text(screen, 16, question_main, 20, 200, bg_color=WHITE, text_color=BLACK)    for i in range(len(current_que.answer_question)):        option = str(i + 1) + ". " + current_que.answer_question[i]        draw_text(screen, 16, option, 40, 260 + i * 40, bg_color=WHITE, text_color=BLACK)    pygame.display.update()

如何用Python实现问题回答小游戏

这样就实现了问题的显示

回答问题

首先我们给出提示,为了方便确认问题是否回答,答案正确与否,我们在问题类中添加变量

# 是否回答    answeredFlg = False    # 回答是否正确    rightFlg = False

根据这些变量设置文字。

if current_que.answeredFlg:        if current_que.rightFlg:            print("回答正确,是" + current_que.answer_question[current_que.answer_index])        else:            print("回答错误,正确答案是" + current_que.answer_question[current_que.answer_index])    else:        draw_text(screen, 16, "请按下1、2、3、4来回答答案", 40, 460, bg_color=WHITE, text_color=RED)

如何用Python实现问题回答小游戏

如果按下按键,根据答案的正确与否给与响应的提示。

 if current_que.answeredFlg:        if current_que.rightFlg:            str1 = "回答正确,是" + current_que.answer_question[current_que.answer_index - 1]            draw_text(screen, 16, str1, 40, 460, bg_color=WHITE, text_color=GREEN)        else:            str1 = "回答错误,正确答案是" + current_que.answer_question[current_que.answer_index - 1]            draw_text(screen, 16, str1, 40, 460, bg_color=WHITE, text_color=RED)    else:        draw_text(screen, 16, "请按下1、2、3、4来回答答案", 40, 460, bg_color=WHITE, text_color=RED)

如何用Python实现问题回答小游戏

如何用Python实现问题回答小游戏

问题切换

为了方便用户切换问题,在窗口上添加对应的按钮。

import pygame.fontclass Button:    def __init__(self, screen, msg, start_x, start_y):        # 设置按钮的尺寸和其他属性        self.screen = screen        self.width, self.height = 200, 50        self.button_color = (0, 255, 0)        self.text_color = (255, 255, 255)        self.font = pygame.font.SysFont("方正粗黑宋简体", 20)        # 创建按钮的rect对象,并使其居中        self.rect = pygame.Rect(0, 0, self.width, self.height)        self.rect.left = start_x        self.rect.right = start_y        # 按钮的标签只需创建一次        self._prep_msg(msg)    def _prep_msg(self, msg):        """将msg渲染为图像,并让按钮居上"""        self.msg_image = self.font.render(msg, True, self.text_color, self.button_color)        self.msg_image_rect = self.msg_image.get_rect()        self.msg_image_rect.center = self.rect.center    def draw_button(self):        # 绘制一个用颜色填充的按钮,在绘制文本        self.screen.fill(self.button_color, self.rect)        self.screen.blit(self.msg_image, self.msg_image_rect)

answer_question.py

btn1 = Button(screen, "next", 300, 500)    btn1.draw_button()

如何用Python实现问题回答小游戏

修改对应的按钮颜色,并添加上一个按钮。

如何用Python实现问题回答小游戏

通过是否回答和是否有下一个或者上一个控制按钮的显示

if current_que.answeredFlg and index < len(questionList):        btn1 = Button(screen, "下一个", 300, 500)        btn1.draw_button()    if index > 1:        btn2 = Button(screen, "上一个", 50, 500)        btn2.draw_button()

给按钮添加事件

if event.type == pygame.MOUSEBUTTONDOWN:            mouse_pos = pygame.mouse.get_pos()            if btn1.rect.collidepoint(mouse_pos):                if current_que.answeredFlg and index < len(questionList):                    index += 1            if btn2.rect.collidepoint(mouse_pos) and index > 1:                index -= 1

如何用Python实现问题回答小游戏

完整代码

answer_question.py 主程序

import pygame, sysfrom pygame.locals import *from question import Questionfrom button import Button# 读取问题file = open("1.txt", encoding='utf-8')question_coll = file.readlines()file.close()questionList = []for i in range(int(len(question_coll) / 6)):    que_all = question_coll[i * 6: i * 6 + 6]    que = Question(que_all[0].rstrip())    que.answer_question = [que_all[1].rstrip(), que_all[2].rstrip(), que_all[3].rstrip(), que_all[4].rstrip()]    que.answer_index = int(que_all[5].rstrip())    questionList.append(que)# 颜色变量WHITE = (255, 255, 255)BLACK = (0, 0, 0)RED = (255, 0, 0)GREEN = (0, 255, 0)# 初始化面板pygame.init()screen = pygame.display.set_mode((600, 600))pygame.display.set_caption("知识竞赛")# 当前问题index = 1def draw_text(window_screen, font_size, content, starting_x, starting_y, text_color=WHITE, bg_color=BLACK):    # 绘制文字    # 设置字体    font = pygame.font.SysFont("方正粗黑宋简体", font_size)    text1 = font.render(content, True, text_color, bg_color)    window_screen.blit(text1, (starting_x, starting_y))# 按钮btn1 = Button(screen, "下一个", 300, 500)btn2 = Button(screen, "上一个", 50, 500)while True:    answer_index = 0    # 填充白色    screen.fill(WHITE)    draw_text(screen, 48, "知识竞赛", 180, 20)    tips = "当前一共有" + str(len(questionList)) + "个问题,目前是第" + str(index) + "个。"    draw_text(screen, 18, tips, 20, 140, bg_color=WHITE, text_color=BLACK)    current_que = questionList[index - 1]    for event in pygame.event.get():        if event.type == QUIT:            pygame.quit()            sys.exit()        if event.type == KEYDOWN:            if event.key == K_1:                answer_index = 1            if event.key == K_2:                answer_index = 2            if event.key == K_3:                answer_index = 3            if event.key == K_4:                answer_index = 4        if event.type == pygame.MOUSEBUTTONDOWN:            mouse_pos = pygame.mouse.get_pos()            if btn1.rect.collidepoint(mouse_pos):                if current_que.answeredFlg and index < len(questionList):                    index += 1            if btn2.rect.collidepoint(mouse_pos) and index > 1:                index -= 1    question_main = "问题" + str(index) + ". " + current_que.question    draw_text(screen, 16, question_main, 20, 200, bg_color=WHITE, text_color=BLACK)    for i in range(len(current_que.answer_question)):        option = str(i + 1) + ". " + current_que.answer_question[i]        draw_text(screen, 16, option, 40, 260 + i * 40, bg_color=WHITE, text_color=BLACK)    if answer_index != 0:        current_que.answeredFlg = True        current_que.rightFlg = answer_index == current_que.answer_index    if current_que.answeredFlg:        if current_que.rightFlg:            str1 = "回答正确,是" + current_que.answer_question[current_que.answer_index - 1]            draw_text(screen, 16, str1, 40, 460, bg_color=WHITE, text_color=GREEN)        else:            str1 = "回答错误,正确答案是" + current_que.answer_question[current_que.answer_index - 1]            draw_text(screen, 16, str1, 40, 460, bg_color=WHITE, text_color=RED)    else:        draw_text(screen, 16, "请按下1、2、3、4来回答答案", 40, 460, bg_color=WHITE, text_color=RED)    if current_que.answeredFlg and index < len(questionList):        btn1.draw_button()    if index > 1:        btn2.draw_button()    pygame.display.update()

问题类 qustion.py

# 问题类class Question:    """问题类"""    # 回答列表    answer_question = []    # 正确答案    answer_index = 1    # 是否回答    answeredFlg = False    # 回答是否正确    rightFlg = False    def __init__(self, question):        self.question = question

按钮类 button.py

import pygame.fontclass Button:    def __init__(self, screen, msg, start_x, start_y):        # 设置按钮的尺寸和其他属性        self.screen = screen        self.width, self.height = 200, 50        self.button_color = (255, 192, 128)        self.text_color = (255, 255, 255)        self.font = pygame.font.SysFont("方正粗黑宋简体", 20)        # 创建按钮的rect对象,并使其居中        self.rect = pygame.Rect(0, 0, self.width, self.height)        self.rect.left = start_x        self.rect.top = start_y        # 按钮的标签只需创建一次        self._prep_msg(msg)    def _prep_msg(self, msg):        """将msg渲染为图像,并让按钮居上"""        self.msg_image = self.font.render(msg, True, self.text_color, self.button_color)        self.msg_image_rect = self.msg_image.get_rect()        self.msg_image_rect.center = self.rect.center    def draw_button(self):        # 绘制一个用颜色填充的按钮,在绘制文本        self.screen.fill(self.button_color, self.rect)        self.screen.blit(self.msg_image, self.msg_image_rect)

问题文本文件 1.txt

“黄河远上白云间,一片孤城万仞山。”的作者是谁?

王之涣

李白

白居易

杜甫

1

“落霞与孤鹜齐飞”的下一句是?

携酒对情人

秋水共长天一色

抱琴开野室

林塘花月下

关于如何用Python实现问题回答小游戏就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何用Python实现问题回答小游戏

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何用Python实现问题回答小游戏

这篇文章将为大家详细讲解有关如何用Python实现问题回答小游戏,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。读取问题如下所示,我们在文本中写了一个问题,然后将其读取出来。“黄河远上白云间,
2023-06-22

如何用Python实现炸弹人小游戏

本篇内容主要讲解“如何用Python实现炸弹人小游戏”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何用Python实现炸弹人小游戏”吧!效果展示开发工具Python版本: 3.6.4相关模块:
2023-06-22

Python如何实现过迷宫小游戏

小编给大家分享一下Python如何实现过迷宫小游戏,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!开发工具Python版本: 3.6.4相关模块:pygame模块;以及一些Python自带的模块。环境搭建安装Python并添
2023-06-22

如何实现贪吃蛇Python小游戏

这篇文章主要介绍“如何实现贪吃蛇Python小游戏”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“如何实现贪吃蛇Python小游戏”文章能帮助大家解决问题。贪吃蛇Python小游戏(源码+注释+粘贴即
2023-07-05

如何使用Python实现愤怒小鸟游戏

这篇文章给大家分享的是有关如何使用Python实现愤怒小鸟游戏的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。开发工具Python版本:3.6.4相关模块:pygame模块;以及一些python自带的模块。环境搭建
2023-06-15

如何用python实现海龟赛跑小游戏

这篇“如何用python实现海龟赛跑小游戏”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“如何用python实现海龟赛跑小游戏
2023-06-26

Python如何实现我的世界小游戏

小编给大家分享一下Python如何实现我的世界小游戏,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!我的世界小游戏使用方法:移动前进:W,后退:S,向左:A,向右:
2023-06-06

python如何实现简易猜数小游戏

这篇文章主要介绍“python如何实现简易猜数小游戏”,在日常操作中,相信很多人在python如何实现简易猜数小游戏问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python如何实现简易猜数小游戏”的疑惑有所
2023-06-26

基于Python如何实现格斗小游戏

本文小编为大家详细介绍“基于Python如何实现格斗小游戏”,内容详细,步骤清晰,细节处理妥当,希望这篇“基于Python如何实现格斗小游戏”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、简易版本格斗impor
2023-07-05

Python如何实现梦幻钢琴小游戏

本篇内容主要讲解“Python如何实现梦幻钢琴小游戏”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python如何实现梦幻钢琴小游戏”吧!一、环境准备1)运行环境 开发环境:Python3、Py
2023-07-05

基于Python如何实现彩票小游戏

本篇内容主要讲解“基于Python如何实现彩票小游戏”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“基于Python如何实现彩票小游戏”吧!一、游戏规则游戏里面有提前设置好的奖项,分为三个,一等奖
2023-07-05

基于Python如何实现骰子小游戏

这篇文章主要讲解了“基于Python如何实现骰子小游戏”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“基于Python如何实现骰子小游戏”吧!一、环境准备 1)运行环境 开发环境:Pytho
2023-07-05

怎么用Python实现2048小游戏

这篇文章主要介绍怎么用Python实现2048小游戏,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、开发环境Python版本:3.6.4相关模块:pygame模块;以及一些Python自带的模块。二、环境搭建安装P
2023-06-15

python如何实现一个摇骰子小游戏

这篇文章将为大家详细讲解有关python如何实现一个摇骰子小游戏,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、程序实现分析问题:骰子比大小是我们经常玩的一个小游戏也十分的简单,就是不同玩家骰子点数比较
2023-06-28

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录