python 游戏开发实例(python实现诗歌游戏类继承)
类别:脚本大全 浏览量:1287
时间:2022-01-22 01:52:48 python 游戏开发实例
python实现诗歌游戏类继承本文实例为大家分享了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 Enum from 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() |
(2)根据上句猜出下一句的具体代码如下:
|
# -*- coding: utf-8 -*- __author__ = 'wj' __date__ = '2018/7/20 10:45' from game import Game import random class FillGame(Game): def __init__( self , poems): super (FillGame, self ).__init__(poems) self .name = '对下句' self .rules = '根据上一句,对出下一句,答对得10分,答错不扣分' def design_question( self ): # 随机取出索引 index = random.randint( 0 , len ( self .poem.sentences) - 2 ) # 取出问题答案 answer = self .poem.sentences[index + 1 ] # 切片 切出不带标点的诗句 self .answer = answer[: - 1 ] # 题目 print ( '{}_____________' . format ( self .poem.sentences[index])) print () def get_answer( self ): while True : self .user_answer = input ( '请写出这句诗的下一句:' ) if self .user_answer: break def judge( self ): if super (FillGame, self ).judge(): self .score + = 10 print ( '回答正确!' ) else : print ( '回答错误!' ) print ( '正确答案是:{}' . format ( self .answer)) Game.print_line() print ( '您目前的得分为:{}' . format ( self .score)) if __name__ = = '__main__' : from load_poems import Poems fill = FillGame(Poems) fill.run() |
注:猜作者游戏和猜诗名游戏的代码和猜朝代类似
5.最后把所有游戏整合到一个py文件里(注意:一个游戏是一个py文件,自己在里边声明类,最后只需要调用一下就行),整合后的代码如下所示:
|
from load_poems import Poems from game import Game from dynasty_game import DynastyGame from fill_game import FillGame from author_game import AuthorGame from title_game import TitleGame class PoemGame( object ): """诗词游戏""" def __init__( self ): self .version = '1.0' self .games = [DynastyGame(Poems), FillGame(Poems),AuthorGame(Poems),TitleGame(Poems)] def list ( self ): """列出所有游戏玩法""" print ( '请选择玩法:' ) Game.print_double_line() for i, g in enumerate ( self .games): print ( '{:<10}{}' . format (i + 1 , g.name)) Game.print_line() def play( self ): """根据用户选择的玩法执行游戏""" while True : self . list () idx = input ( '请输入游戏编号,输入q退出:' ) if idx = = 'q' : print ( 'Bye Bye~' ) break Game.print_line() # 根据索引取出图形对象 idx = int (idx) g = self .games[idx - 1 ] g.run() def run( self ): """运行游戏""" print ( '欢迎来到诗词诗词大会' ) print ( 'v{}' . format ( self .version)) self .play() if __name__ = = '__main__' : g = PoemGame() g.run() |
以上就是整个项目的所有代码了,在这个小项目中,我使用了类继承的方法,在不断修改代码的同时,也让我更加熟悉了类继承的特点和用法。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持开心学习网。
原文链接:https://blog.csdn.net/qq_42598133/article/details/81134080
您可能感兴趣
- 如何查看python beautifulsoup(Python爬虫beautifulsoup4常用的解析方法总结)
- python下划线怎么用(Python3中_下划线和__双下划线的用途和区别)
- mongodb python教程(python使用pymongo操作mongo的完整步骤)
- python中比较同一字典value(在Python 字典中一键对应多个值的实例)
- python机器人开发(python程序控制NAO机器人行走)
- pythonide使用教程(对Python Pexpect 模块的使用说明详解)
- nginxpython编写模块(Python开发之Nginx+uWSGI+virtualenv多项目部署教程)
- python编写的小程序(几个适合python初学者的简单小程序,看完受益匪浅!推荐)
- python画佩奇(啥是佩奇?使用Python自动绘画小猪佩奇的代码实例)
- python数据分析pandas教程(11个Python Pandas小技巧让你的工作更高效附代码实例)
- pythondjango后台管理(基于腾讯云服务器部署微信小程序后台服务Python+Django)
- python语句for循环(Python基础之循环语句用法示例for、while循环)
- python 二叉树的深度遍历(python 将有序数组转换为二叉树的方法)
- python能操作微信定时发消息(python给微信好友定时推送消息的示例)
- 100道python真实面试题附答案(值得收藏的10道python 面试题)
- python编写程序读写数据库(详解js文件通过python访问数据库方法)
- 买绿宝不能只挑黄绿色 菜农教你3招挑,个个皮薄肉脆,香甜爆汁(买绿宝不能只挑黄绿色)
- 大果肉搭配薄瓜皮, 绿宝 脆甜爽口,不愧是甜瓜中的 佼佼者(大果肉搭配薄瓜皮)
- 河南尉氏县因地制宜发展果蔬种植 水坡镇绿宝甜瓜变 金瓜(河南尉氏县因地制宜发展果蔬种植)
- 谢广坤,你这么欺负谢腾飞,良心不会痛吗(你这么欺负谢腾飞)
- 乡村爱情15 宋晓峰怀疑自己孩子,腾飞与姜奶奶亲子鉴定出结果(宋晓峰怀疑自己孩子)
- 《乡村爱情13》开播,新版刘能以假乱真,编剧思维进入瓶颈(新版刘能以假乱真)
热门推荐
- nginx怎么实现反向代理(nginx反向代理时如何保持长连接)
- script标签中的async,defer属性
- 阿里云服务器公网ip搭建(阿里云服务器无公网如何上网?)
- MySQL中对varchar类型的排序
- python怎么提取微信数据(使用Python+wxpy 找出微信里把你删除的好友实例)
- js实现div(javascript拖曳互换div的位置实现示例)
- serv-u服务器安装(Serv-U搭建FTP服务器教程之建立登录用户和密码)
- 如何让yii2高级模板运行起来(Yii框架Session与Cookie使用方法示例)
- html5 页面向上滑动(html5手机键盘弹出收起的处理)
- php 处理html表单(PHP使用HTML5 FormData对象提交表单操作示例)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9