鱼C论坛

 找回密码
 立即注册
查看: 989|回复: 13

[作品展示] 问答游戏引擎

[复制链接]
发表于 2023-9-30 09:14:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

刚学pygame,新人第一次发作品

游戏界面展示

游戏界面展示

                 游戏界面展示


源代码:
import pygame, sys
from pygame.locals import *
#定义Trivia类
class Trivia(object):
    def __init__(self, filename):
        #初始化属性设置
        self.date = []
        self.current =0
        self.total = 0
        self.correct = 0
        self.score = 0
        self.scored = False
        self.failed = False
        self.wronganswer = 0
        self.colors = [white, white, white, white]
        #问答数据读取
        f = open(filename, "r", encoding="utf-8")
        trivia_date = f.readlines()
        f.close()
        #问答数据存储
        for text_line in trivia_date:
            self.date.append(text_line.strip())
            self.total += 1
    #问题及答案显示
    def show_question(self):
        print_text(font1, 260, 5, "问答竞赛")
        print_text(font2, 200, 480, "请按下(1~4)按键来选择答案", purple)
        print_text(font2, 630, 5, "得分", purple)
        print_text(font2, 635, 25, str(self.score), purple)

        self.correct = int(self.date[self.current+5])

        question = self.current // 6 + 1
        print_text(font1, 5, 80, f"问题{question}")
        print_text(font2, 20, 120, self.date[self.current], yellow)

        if self.scored:
            self.colors = [white, white, white, white]
            self.colors[self.correct] = green
            print_text(font1, 300, 380, "正确", green)
            print_text(font2, 210, 420, "请按下Enter键前往下一题", green)
        elif self.failed:
            self.colors = [white, white, white, white]
            self.colors[self.wronganswer] = red
            self.colors[self.correct] = green
            print_text(font1, 300, 380, "错误", red)
            print_text(font2, 210, 420, "请按下Enter键前往下一题", red)
        print_text(font1, 5, 170, "选项")
        print_text(font2, 20, 210, f"1- {self.date[self.current+1]}", self.colors[0])
        print_text(font2, 20, 240, f"2- {self.date[self.current+2]}", self.colors[1])
        print_text(font2, 20, 270, f"3- {self.date[self.current+3]}", self.colors[2])
        print_text(font2, 20, 300, f"4- {self.date[self.current+4]}", self.colors[3])
    #玩家答案正误判断
    def handle_input(self, number):
        if not self.scored and not self.failed:
            if number == self.correct:
                self.scored = True
                self.score += 1
            else:
                self.failed = True
                self.wronganswer = number
    #下一个问题属性处理
    def next_question(self):
        if self.scored or self.failed:
            self.scored = False
            self.failed = False
            self.correct = 0
            self.colors = [white, white, white, white]
            self.current += 6
            if self.current >= self.total:
                self.current = 0
#文本打印函数
def print_text(font, x, y, text, color=(255, 255, 255), shadow=True):
    if shadow:
        imgText = font.render(text, True, (0, 0, 0))
        screen.blit(imgText, (x - 2, y -2))
    imgText = font.render(text, True, color)
    screen.blit(imgText, (x, y))
#初始化pygame
pygame.init()
screen = pygame.display.set_mode((700, 550))
pygame.display.set_caption("问答竞赛")
font1 = pygame.font.Font("klxqt.ttf", 40)
font2 = pygame.font.Font("klxqt.ttf", 24)
white = 255, 255, 255
black = 0, 0, 0
cyan = 0, 255, 255
yellow = 255, 255, 0
blue = 0, 0, 250
purple = 255, 0, 255
green = 0, 255, 0
red = 255, 0, 0
#实例化Trivia对象
trivia = Trivia("trivia_date.txt")
#主循环代码
while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
        elif event.type == pygame.KEYUP:
            if event.key == pygame.K_ESCAPE:
                sys.exit()
            elif event.key == pygame.K_1:
                trivia.handle_input(0)
            elif event.key == pygame.K_2:
                trivia.handle_input(1)
            elif event.key == pygame.K_3:
                trivia.handle_input(2)
            elif event.key == pygame.K_4:
                trivia.handle_input(3)
            elif event.key == pygame.K_RETURN:
                trivia.next_question()
    #填充屏幕
    screen.fill((0, 0, 250))
    #加载问题及选项
    trivia. show_question()
    #更新界面
    pygame.display.update()
[url=]问答游戏引擎.zip[/url]
字体文件到这个网站下载(https://www.zhaozi.cn/s/freefont/)
然后重命名为klxqt.ttf


问答游戏引擎.zip

1.96 KB, 下载次数: 7

评分

参与人数 6荣誉 +24 鱼币 +8 贡献 +15 收起 理由
liuhongrun2022 + 5 + 3
python爱好者. + 5 + 3 鱼C有你更精彩^_^
不二如是 + 2 + 3 + 3 鱼C有你更精彩^_^
陶远航 + 5 + 2 + 3 加油!
歌者文明清理员 + 5 + 3
yinda_peng + 2 + 3 加油哦

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-9-30 09:44:24 | 显示全部楼层
我看到这个问题第一反应是我在MC里面用的是什么植物
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-9-30 10:03:05 | 显示全部楼层
支持
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-9-30 10:14:56 | 显示全部楼层
yinda_peng 发表于 2023-9-30 09:44
我看到这个问题第一反应是我在MC里面用的是什么植物

草,一样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-9-30 10:21:14 | 显示全部楼层
说实话,这个问题还是太少了,也就5个问题,建议学习爬虫从网络上获取问题。

继续加油
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-9-30 10:33:50 | 显示全部楼层
不错哦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2023-9-30 14:26:26 | 显示全部楼层
觉得这样的引擎不错,特别是看到代码行数,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-9-30 15:04:16 | 显示全部楼层
不错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-9-30 18:36:05 | 显示全部楼层
yinda_peng 发表于 2023-9-30 09:44
我看到这个问题第一反应是我在MC里面用的是什么植物

给发现了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-9-30 18:37:00 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-9-30 18:38:01 | 显示全部楼层
陶远航 发表于 2023-9-30 10:21
说实话,这个问题还是太少了,也就5个问题,建议学习爬虫从网络上获取问题。

继续加油

不会网络爬虫
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-9-30 18:41:09 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-9-30 18:41:44 | 显示全部楼层

你可以看一下有哪些题目网站,然后每次问答都刷新一个题目
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2024-1-15 11:00:26 | 显示全部楼层
代码很漂亮呢!

欢迎pygame新人!!

我也喜欢pygame ,向你推荐我以前写的小东西

【pygameGUI 1.0】教程 —— 【已完结】 8/17
https://fishc.com.cn/thread-232461-1-1.html
(出处: 鱼C论坛)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-22 10:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表