本文实例为大家分享了python实现诗歌游戏的具体代码,供大家参考,具体内容如下
具体游戏有:根据上句猜下句、猜作者、猜朝代、猜诗名等
如果有更好玩儿的游戏,不妨自己写一下
1.首先,先把搜集到的诗歌全部放到一个txt文件下,命名为poems.txt
2.其次,再定义一个poem类,执行的时候输出诗歌的名字,作者,朝代等,代码如下:
class Poem: def __init__(self): self.title = '' self.dynasty = '' self.author = '' self.sentences = [] def __str__(self): return '{}/n{}/n{}/n{}'.format( self.title, self.dynasty, self.author, '/n'.join(self.sentences))
3.加载出来诗歌的所有部分,代码如下:
from enum import Enumfrom poem import Poem Poems = [] def load(): class ReadState(Enum): Nothing = 0 Title = 1 DynastyAndAuthor = 2 Sentences = 3 print('开始加载诗歌') f = open('poems.txt', encoding='utf-8') lines = f.readlines() state = ReadState.Title poem = None for ln in lines: line = ln.strip() if len(line) > 0: try: if line.startswith('-'): if poem is not None: Poems.append(poem) print('.', end='') poem = Poem() poem.title = line.lstrip('-') state = ReadState.DynastyAndAuthor continue if state == ReadState.DynastyAndAuthor: dynasty_author = line.split(' ') poem.dynasty = dynasty_author[0] poem.author = dynasty_author[-1] state = ReadState.Sentences continue if state == ReadState.Sentences: poem.sentences.append(line) except IndexError as e: print(line) print('/n共加载{}首诗歌'.format(len(Poems))) print() load()
4.下面开始写具体的功能代码,以猜朝代和猜下句为例。
(1)猜朝代代码如下
# -*- coding: utf-8 -*-__author__ = 'wj'__date__ = '2018/7/20 9:54' from game import Game class DynastyGame(Game): def __init__(self, poems): super(DynastyGame, self).__init__(poems) self.name = '猜朝代' self.rules = '根据诗歌猜作者所处的朝代,猜对加10分,猜错不扣分。' def design_question(self): """设计问题及答案""" self.answer = self.poem.dynasty # 打印题目 print(self.poem.title) print(self.poem.author) print() # enumerate() 会将列表中的索引和数据一一对应取出 # i 数据的索引 s数据 for i, s in enumerate(self.poem.sentences): print(s) if i > 5: print('...') break print() def get_answer(self): """获取答案""" # 1.输出问题 print('这首诗的作者是:{}'.format(self.poem.author)) while True: self.user_answer = input('请输入他/她所在的朝代:') # 2.判断是否输入了内容 if self.user_answer: break def judge(self): """判断答案""" is_ok = super(DynastyGame, self).judge() if is_ok: self.score += 10 print('回答正确!') else: print('回答错误!') print('{}所在的朝代是:{}'.format(self.poem.author, self.poem.dynasty)) print('您目前的得分为:{}'.format(self.score)) if __name__ == '__main__': from load_poems import Poems dynasty = DynastyGame(Poems) dynasty.run()
新闻热点
疑难解答