• 【制杖品质,无宇非凡】来自男友的灵魂拷问


      这是一个能给带给你无限“快乐”的Python游戏源码……

      1 import sys
      2 import pygame
      3 from pygame.locals import *
      4 
      5 class Trivia(object) : #Trivia类,用于处理游戏逻辑
      6     def __init__(self,filename) : #初始化方法
      7         self.data = []
      8         self.total = 0 #总行数
      9         self.current = 0 #当前行
     10         self.score = 0 #获得分数
     11         self.scored = False #正确标志
     12         self.failed = False #错误标志
     13         self.correct = 0 #正确答案序号
     14         self.wronganswer = 0 #错误序号
     15         self.num = 1;
     16         self.colors = [white,white,white,white]
     17         f = open(filename,"r")
     18         trivia_data = f.readlines()
     19         f.close()
     20         for text_line in trivia_data :
     21             self.data.append(text_line.strip())
     22             self.total += 1
     23 
     24     def show_question(self):  # 显示问题方法
     25         print_text(font1, 210, 5, "答题游戏")
     26         print_text(font2, 160, 500-40, "请选择1-4答案中正确的一个!", purple)
     27         print_text(font2, 530, 5, "分数", purple)  # 显示分数标题
     28         print_text(font2, 550, 40, str(self.score), purple)  # 显示分数值
     29         self.correct = int(self.data[self.current+5])
     30 
     31         print_text(font1,5,80,"问题"+str(self.num))
     32         print_text(font2,20,120,self.data[self.current],yellow)
     33 
     34         if self.scored :
     35             self.colors = [white,white,white,white]
     36             self.colors[self.correct-1] = green
     37             print_text(font1,230,380,"回答正确!",green)
     38             print_text(font2,170,420,"按下回车进行下一道题目",green)
     39         elif self.failed :
     40             self.colors = [white,white,white,white]
     41             self.colors[self.correct-1] = green
     42             print_text(font1, 220, 380, "回答错误!", red)
     43             print_text(font2,170,420,"按下回车进行下一道题目",red)
     44 
     45         print_text(font1, 5, 170, "有以下选项:")
     46         print_text(font2, 20, 210, "1." + self.data[self.current + 1],self.colors[0])
     47         print_text(font2, 20, 240, "2." + self.data[self.current + 2], self.colors[1])
     48         print_text(font2, 20, 270, "3." + self.data[self.current + 3], self.colors[2])
     49         print_text(font2, 20, 300, "4." + self.data[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.score += 1
     55                 self.scored = True
     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.current += 6
     65             self.num += 1
     66             self.colors = [white,white,white,white]
     67             self.correct = 0
     68             if self.current >= self.total and self.num > self.total/6:
     69                 START = False
     70                 self.num = 1
     71                 self.current = 0
     72 
     73 pygame.init() #初始化pygame库
     74 screen = pygame.display.set_mode((650,500)) #设置游戏窗口大小
     75 pygame.display.set_caption("寻找你的灵魂男友(See Your Soul Boy Friend)") #设置游戏标题
     76 font1 = pygame.font.SysFont('SimHei',30); #定义大号字体形式
     77 font2 = pygame.font.SysFont('SimHei',25); #定义小号字体形式
     78 
     79 white = 255,255,255 #颜色标识定义
     80 cyan = 0,255,255
     81 yellow = 255,255,0
     82 purple = 255,0,255
     83 green = 0,255,0
     84 red = 255,0,0
     85 
     86 def print_text(font, x, y, text, color=(255, 255, 255), shadow=True):  # 自定义文字显示方法
     87     if shadow:
     88         imgText = font.render(text, True, (0, 0, 0))
     89         screen.blit(imgText, (x - 2, y - 2))
     90     imgText = font.render(text, True, color)
     91     screen.blit(imgText, (x, y))
     92 
     93 trivia = Trivia("C:/Users/Gulob/Desktop/Q.txt")
     94 
     95 while True:
     96     for event in pygame.event.get():
     97         if event.type == QUIT:
     98             sys.exit()
     99         elif event.type == KEYUP:
    100             if event.type == pygame.K_ESCAPE:
    101                 sys.exit()
    102             elif event.key == pygame.K_1:
    103                 trivia.handle_input(1)
    104             elif event.key == pygame.K_2:
    105                 trivia.handle_input(2)
    106             elif event.key == pygame.K_3:
    107                 trivia.handle_input(3)
    108             elif event.key == pygame.K_4:
    109                 trivia.handle_input(4)
    110             elif event.key == pygame.K_RETURN:
    111                 trivia.next_question()
    112     screen.fill((0,0,0))
    113     trivia.show_question()
    114     pygame.display.update()

    演示效果:

    此时,我的感受:

    【慢慢做出像样的游戏来……】

  • 相关阅读:
    【LeetCode】【动态规划】Edit Distance
    【LeetCode】最大子阵列 Maximum Subarray(贪婪&分治)
    【LeetCode】【矩阵旋转】Rotate Image
    解决Torch.load()错误信息: UnicodeDecodeError: 'ascii' codec can't decode byte 0x8d in position 0: ordinal not in range(128)
    使用VS Code配合Remote Development插件连接远程服务器(Mac/Linux+Windows) | Using VS Code with Remote Development Connect to Remote Server (Mac/Linux+Windows)
    Leaflet入门:添加点线面并导入GeoJSON数据|Tutorial of Leaflet: Adding Points, Lines, Polygons and Import GeoJSON File
    使用Adobe Illustrator + ArcGIS绘制地图 | Map Design Using ArcGIS + Adobe Illustrator
    PostgreSQL 速查、备忘手册 | PostgreSQL Quick Find and Tutorial
    LIRE教程之源码分析 | LIRE Tutorial of Analysis of the Source Code
    解决Tomcat错误信息:No 'Access-Control-Allow-Origin' header is present on the requested resource | Solving Tomcat Error: No 'Access-Control-Allow-Origin' header is present on the requested resource
  • 原文地址:https://www.cnblogs.com/moegarn/p/12926996.html
Copyright © 2020-2023  润新知