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()
- python---Trivia游戏(问答题程序)
- Python游戏之Trivia游戏
- Java问答题(1)
- [问答题]
- 问答题
- C#问答题汇总(一)
- 阐述问答题(C语言)
- JavaScript基础知识问答题(答案仅供参考)
- 初级php基础知识问答题(答案仅供参考)
- java常考面试题(问答题1-30)
- java常考面试题(问答题30-80)
- java常考面试题(问答题90-120)
- python 学习记录(4)—本金+利息计算及简单的游戏猜测程序
- 【Python初学】GUI猜数游戏+打包(生成.exe可执行程序)
- 找工作C++面试资料之问答题整理(1)
- 研发工程师(C/C++)面试问答题集锦
- 2015腾讯暑期实习招聘在线笔试(问答题)
- 找工作C++面试资料之问答题整理(1)
- Sofia-SIP辅助文档十六 - Sofia SIP用户代理库 - "msg" - 消息解析模块
- 使用C#开发HTTP服务器系列之Hello World
- XPS13 杂音
- Sofia-SIP辅助文档十七 - Sofia SIP用户代理库 - "url" - URL模块
- 贪心算法总结及实例简介
- python---Trivia游戏(问答题程序)
- Redis的数据管理持久化
- 把二维数组存到数据库的一个字段中
- Java堆内存
- Sofia-SIP辅助文档十八 - Sofia SIP用户代理库 - "bnf" - 字符串解析模块
- Sofia-SIP辅助文档十九 - Sofia SIP用户代理库 - "nth" - HTTP事务模块
- 欢迎使用CSDN-markdown编辑器
- CATIA VBA二次开发(二) 快速入门之VBA IDE
- Sofia-SIP辅助文档二十 - Sofia SIP用户代理库 - "http" - HTTP解析模块