鱼C论坛

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

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

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

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

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

x

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

游戏界面展示

游戏界面展示

                 游戏界面展示


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

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

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

  34.         if self.scored:
  35.             self.colors = [white, white, white, white]
  36.             self.colors[self.correct] = green
  37.             print_text(font1, 300, 380, "正确", green)
  38.             print_text(font2, 210, 420, "请按下Enter键前往下一题", green)
  39.         elif self.failed:
  40.             self.colors = [white, white, white, white]
  41.             self.colors[self.wronganswer] = red
  42.             self.colors[self.correct] = green
  43.             print_text(font1, 300, 380, "错误", red)
  44.             print_text(font2, 210, 420, "请按下Enter键前往下一题", red)
  45.         print_text(font1, 5, 170, "选项")
  46.         print_text(font2, 20, 210, f"1- {self.date[self.current+1]}", self.colors[0])
  47.         print_text(font2, 20, 240, f"2- {self.date[self.current+2]}", self.colors[1])
  48.         print_text(font2, 20, 270, f"3- {self.date[self.current+3]}", self.colors[2])
  49.         print_text(font2, 20, 300, f"4- {self.date[self.current+4]}", self.colors[3])
  50.     #玩家答案正误判断
  51.     def handle_input(self, number):
  52.         if not self.scored and not self.failed:
  53.             if number == self.correct:
  54.                 self.scored = True
  55.                 self.score += 1
  56.             else:
  57.                 self.failed = True
  58.                 self.wronganswer = number
  59.     #下一个问题属性处理
  60.     def next_question(self):
  61.         if self.scored or self.failed:
  62.             self.scored = False
  63.             self.failed = False
  64.             self.correct = 0
  65.             self.colors = [white, white, white, white]
  66.             self.current += 6
  67.             if self.current >= self.total:
  68.                 self.current = 0
  69. #文本打印函数
  70. def print_text(font, x, y, text, color=(255, 255, 255), shadow=True):
  71.     if shadow:
  72.         imgText = font.render(text, True, (0, 0, 0))
  73.         screen.blit(imgText, (x - 2, y -2))
  74.     imgText = font.render(text, True, color)
  75.     screen.blit(imgText, (x, y))
  76. #初始化pygame
  77. pygame.init()
  78. screen = pygame.display.set_mode((700, 550))
  79. pygame.display.set_caption("问答竞赛")
  80. font1 = pygame.font.Font("klxqt.ttf", 40)
  81. font2 = pygame.font.Font("klxqt.ttf", 24)
  82. white = 255, 255, 255
  83. black = 0, 0, 0
  84. cyan = 0, 255, 255
  85. yellow = 255, 255, 0
  86. blue = 0, 0, 250
  87. purple = 255, 0, 255
  88. green = 0, 255, 0
  89. red = 255, 0, 0
  90. #实例化Trivia对象
  91. trivia = Trivia("trivia_date.txt")
  92. #主循环代码
  93. while True:
  94.     for event in pygame.event.get():
  95.         if event.type == QUIT:
  96.             pygame.quit()
  97.             sys.exit()
  98.         elif event.type == pygame.KEYUP:
  99.             if event.key == pygame.K_ESCAPE:
  100.                 sys.exit()
  101.             elif event.key == pygame.K_1:
  102.                 trivia.handle_input(0)
  103.             elif event.key == pygame.K_2:
  104.                 trivia.handle_input(1)
  105.             elif event.key == pygame.K_3:
  106.                 trivia.handle_input(2)
  107.             elif event.key == pygame.K_4:
  108.                 trivia.handle_input(3)
  109.             elif event.key == pygame.K_RETURN:
  110.                 trivia.next_question()
  111.     #填充屏幕
  112.     screen.fill((0, 0, 250))
  113.     #加载问题及选项
  114.     trivia. show_question()
  115.     #更新界面
  116.     pygame.display.update()
复制代码
[url=]问答游戏引擎.zip[/url]
字体文件到这个网站下载(https://www.zhaozi.cn/s/freefont/)
然后重命名为klxqt.ttf


问答游戏引擎.zip

1.96 KB, 下载次数: 8

评分

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

查看全部评分

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-9-30 09:44:24 | 显示全部楼层
我看到这个问题第一反应是我在MC里面用的是什么植物
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-9-30 10:03:05 | 显示全部楼层
支持
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

草,一样
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

继续加油
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-9-30 10:33:50 | 显示全部楼层
不错哦
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2023-9-30 14:26:26 | 显示全部楼层
觉得这样的引擎不错,特别是看到代码行数,
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-9-30 15:04:16 | 显示全部楼层
不错
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

给发现了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-9-30 18:37:00 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

继续加油

不会网络爬虫
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-9-30 18:41:09 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

你可以看一下有哪些题目网站,然后每次问答都刷新一个题目
小甲鱼最新课程 -> https://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论坛)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-10 01:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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