九歌当下 发表于 2023-9-30 09:14:39

问答游戏引擎


刚学pygame,新人第一次发作品{:10_254:}

               游戏界面展示


源代码:
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 =
      #问答数据读取
      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)

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

      if self.scored:
            self.colors =
            self.colors = green
            print_text(font1, 300, 380, "正确", green)
            print_text(font2, 210, 420, "请按下Enter键前往下一题", green)
      elif self.failed:
            self.colors =
            self.colors = red
            self.colors = 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.colors)
      print_text(font2, 20, 240, f"2- {self.date}", self.colors)
      print_text(font2, 20, 270, f"3- {self.date}", self.colors)
      print_text(font2, 20, 300, f"4- {self.date}", self.colors)
    #玩家答案正误判断
    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 =
            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()
问答游戏引擎.zip
字体文件到这个网站下载(https://www.zhaozi.cn/s/freefont/)
然后重命名为klxqt.ttf


yinda_peng 发表于 2023-9-30 09:44:24

我看到这个问题第一反应是我在MC里面用的是什么植物{:10_250:}

歌者文明清理员 发表于 2023-9-30 10:03:05

支持

陈尚涵 发表于 2023-9-30 10:14:56

yinda_peng 发表于 2023-9-30 09:44
我看到这个问题第一反应是我在MC里面用的是什么植物

草,一样

陶远航 发表于 2023-9-30 10:21:14

说实话,这个问题还是太少了,也就5个问题,建议学习爬虫从网络上获取问题。

继续加油{:10_256:}

不二如是 发表于 2023-9-30 10:33:50

{:10_256:}{:10_256:}不错哦

歌者文明清理员 发表于 2023-9-30 14:26:26

觉得这样的引擎不错,特别是看到代码行数,{:10_257:}{:10_257:}{:10_257:}

liuhongrun2022 发表于 2023-9-30 15:04:16

不错

九歌当下 发表于 2023-9-30 18:36:05

yinda_peng 发表于 2023-9-30 09:44
我看到这个问题第一反应是我在MC里面用的是什么植物

给发现了{:10_279:}

九歌当下 发表于 2023-9-30 18:37:00

不二如是 发表于 2023-9-30 10:33
不错哦

谢谢{:5_109:}

九歌当下 发表于 2023-9-30 18:38:01

陶远航 发表于 2023-9-30 10:21
说实话,这个问题还是太少了,也就5个问题,建议学习爬虫从网络上获取问题。

继续加油

不会网络爬虫{:10_250:}

陶远航 发表于 2023-9-30 18:41:09

九歌当下 发表于 2023-9-30 18:38
不会网络爬虫

https://fishc.com.cn/thread-234024-1-1.html

陶远航 发表于 2023-9-30 18:41:44

九歌当下 发表于 2023-9-30 18:38
不会网络爬虫

你可以看一下有哪些题目网站,然后每次问答都刷新一个题目{:10_256:}

cjjJasonchen 发表于 2024-1-15 11:00:26

代码很漂亮呢!{:10_275:}

欢迎pygame新人!!{:10_298:}

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

【pygameGUI 1.0】教程 —— 【已完结】 8/17
https://fishc.com.cn/thread-232461-1-1.html
(出处: 鱼C论坛)
页: [1]
查看完整版本: 问答游戏引擎