python---Trivia游戏(问答题程序)

来源:互联网 发布:服装et软件下载 编辑:程序博客网 时间:2024/05/16 03:22

掌握知识点: I/O、 数据 、字体

1.Python数据类型
2.获取用户输入
3.处理异常
4.Mad Lib 游戏
5.操作二进制文件
6.Trivia游戏

==============
Python数据类型
+=============
str() int() float() 用于数据类型的转换

Python的数据类型比较灵活的定义,和C语言进行对比,十分友好。

擅长处理成组的信息,例如 mylist = [1,2,3,4,5,6]

===========
用户输入
+==========
一般使用 raw_input() 函数 和 input() 函数

在Python 2.7中有所不同

区别如下:

a = input()print a * 2输入: 123结果: 246a = raw_input()print a * 2输入:123结果:123123一个是数字,一个是字符串。

============
异常处理
+===========

使用 try…except语句块完成异常处理,会捕捉错误。

问题代码加在try:语句块中,有错误时会运行except : 中的代码,

number = input("Enter a number: ")try:    number = float(s)except:    number = 0    print "It's  not a number."answer = number * numberprint( number, "*", number, "=", answer )

=============
Mad Lib 游戏 (文字游戏)
+============
函数: string.replace() 进行搜索–替换 操作

print 'MAD LIB GAME !'guy = raw_input('what\'s your name? ')arm = raw_input('what arm do you have ?')place_to_go = raw_input('where to go ?')thing_to_do = raw_input('what do you want to do ?')monster = raw_input('Monster is ?')start_time = raw_input('when start to go ?')end_time = raw_input('when end ?')result = 'you are winner'story = """    My name is GUY, I want to go to PLACE. Because I want to beat a Monster, I have a ARM so I decide to THING ,    I will go at START , and back at END.       Finally, The GUY fight whith MONSTER, result is RESULT.    """dic = {'GUY' : guy, 'ARM':arm, 'PLACE': place_to_go, 'THING': thing_to_do, 'START': start_time, 'END': end_time, 'RESULT': result, 'MONSTER': monster}for i in dic :    story = story.replace(i, dic[i])print story 

=========
文件输入和输出
+========
使用open()函数

#向文件写入内容file = open('1.txt', 'w')file.write("Hello python!\n")file.write("Hello , world!")flie.close() #相当于对于文件的保存 #从文件读取内容 file = open('1.txt', 'r') a = file.read() file.close()#删除行末换行符for line in a:    print(line.strip())

===================
操作二进制文件
+==================
二进制文件包含字节,而字节可以是任何数据类型。
二进制模式打开文件:

import structfile = open('data.txt','wb+')for n in range(1,1000):    number = struct.pack( 'i', n )    file.write(number)file.close()#读取二进制数据file = open('data.txt', 'rb')b = file.read()print bfile.close()#读取出不同数据类型数据file = open('data.txt', 'rb')size = struct.calcsize('i')bytes_read = file.read(size)while bytes_read:    value = struct.unpack('i', bytes_read)    value = value[0]    print (str(value) + ' ')    bytes_read = file.read(size)a = file.read()file.close()print a  print "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++END+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"

==================
Trivia 游戏
+=================

#导入游戏使用到的模块import sys, pygame from pygame.locals import * #游戏逻辑代码在Trivia类中#所有游戏的逻辑都在该类中实现class Trivia(object):    def __init__(self, filename):        self.data = []        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]        #read trivia data from file         f = open(filename,'r')         trivia_data = f.readline()        f.close()        #count and clean up trivia data         for text_line in trivia_data:            self.data.append(text_line.strip())            self.total += 1     def show_question(self):        print_text(font1, 210, 5, "TRIVIA GAME")        print_text(font2, 190, 500-20, "Press Keys (1-4) To Answer", purple)        print_text(font2, 530, 5, "SCORE", purple)        print_text(font2, 550, 25, str(self.score), purple)        #get correct answer out of data         self.correct = (self.data[self.current+5])        #display question         question = self.current          print_text(font1, 5, 80, "QUESTION" + str(question))        print_text(font2, 20, 120, self.data[self.current], yellow)        #respond to correct answer         if self.scored:            self.colors = [white, white, white, white]            self.colors[self.correct - 1] = green             print_text(font1, 230, 380, "CORRECT!", green)            print_text(font2, 170, 420, "Press Enter For Next Question", green)        elif self.failed:            self.colors = [white, white, white, white]             self.colors[self.wronganswer - 1] = red             self.colors[self.correct - 1] = green             print_text(font1, 220, 380, "INCORRECT!", red)            print_text(font2, 170, 420, "Press Enter For Next Question", red)        #display answer         print_text(font1, 5, 170, "ANSWERS")        print_text(font2, 20, 210, "1 - " + self.data[self.current+1], self.colors[0])        print_text(font2, 20, 240, "2 - " + self.data[self.current+2], self.colors[1])        print_text(font2, 20, 270, "3 - " + self.data[self.current+3], self.colors[2])        print_text(font2, 20, 300, "4 - " + self.data[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.init()screen = pygame.display.set_mode((600,500))pygame.display.set_caption("The Trivia Game")font1 = pygame.font.Font(None, 40)font2 = pygame.font.Font(None, 24)white = 255,255,255 cyan = 0,255,255 yellow = 255,255,0 purple = 255,0,255 green = 0,255,0 red = 255,0,0  #load the Trivia data file trivia = Trivia("t_data.txt")#repeating loop while True:    for event in pygame.event.get():        if event.type == QUIT:            sys.exit()        elif event.type == KEYUP:            if event.key == pygame.K_ESCAPE:                sys.exit()            elif event.key == pygame.K_1:                trivia.handle_input(1)            elif event.key == pygame.K_2:                trivia.handle_input(2)            elif event.key == pygame.K_3:                trivia.handle_input(3)            elif event.key == pygame.K_4:                trivia.handle_input(4)            elif event.key == pygame.K_RETURN:                trivia.next_question()    #clear the screen     screen.fill((0,0,200))    #display trivia data     trivia.show_question()    #update the display     pygame.display.update()

非常简单的程序,大部分代码都是成分的字体显示。
主要学习的地方是 Class 的定义 和对应的实例生成。
最后是图形界面的显示,一般都通过while循环 不同的刷新、更新 实现图形的变化。

#这是一个图形库,有了它就可以实现绘图  import pygame  #这句代码的意义在于让代码变得简单 ,少敲几下键盘from pygame.locals import * ########################以上举个例子,引入各种库,看你需要什么##############################初始化代码, 准备工作做好pygame.init()#绘制屏幕, 你的图形界面至少要出现在一个框子中,就是它了 screen, 后面是大小参数screen = pygame.display.set_mode((800,600))#字体, 这些有关图形的都是pygame 库所包含的font = pygame.font.Font(None, 40)#颜色  , 为了方便red = (255,0,0) white= (0,0,0)#文字 , 这是你要显示的文字内容。 注意它只是内容。  要想显示 你需要把他变成图片(其实是位图,说图片好理解)text = "Hello, World ! "#位图,  就是把你所说的内容,转化为位图,这样他才能够绘制在屏幕上,就行照片的底片一样。这里把你的‘图片文字’准备好imgText = font.render(text, True, red)######################以上举个例子,初始化就是这个样子#########################################################这个while就是一个循环主体,它是True就会一直循环, 想让游戏里面的东西动起来,其实就是不断的循环你创建出 #来的屏幕。 #这一秒它在这里, 循环一次他又移动一段距离,下一秒有跑到哪里,快速的刷新下,就成了游戏里面动态的物体移动##################while True:    #第一步就是先fill(把你屏幕背景充满颜色, 就用白色了)    screen.fill(white)    #把你的‘图片文字’展示到屏幕上,后面是(x,y)坐标位置    screen.blit(imgText,(400,300))    #这里继续刷新,到这里你就可以显示一个图形界面的Hello,world了 ,  你想啊,让(x,y)坐标进行一个变化,每次刷新位置都改变,这不就是动态的界面了。   如果再通过If语句进行判断和 按键结合,就能控制方向。这不就是一个受控制的小游戏了。  当然还有很多逻辑,后续博客更新。。    pygame.display.update()
1 0
原创粉丝点击