用Python实现古诗词填字游戏(三)

本文介绍如何使用Python创建一个古诗词填字游戏。通过随机选择诗句和共同字,生成不同的输出,增加了游戏的趣味性。程序涉及读取诗句、确定输出坐标,并对输出进行错误处理。虽然当前仅实现两条共同字的排列,但提出了优化和扩展的可能性,例如处理更多的诗句和关键字。
摘要由CSDN通过智能技术生成

        我们在上上篇博客中准备好了输入,在上一篇中准备好了输出,于是我们来到了最关键和最核心的部分——选出诗句和共同字,同时确定输出位置。

程序的思路很清晰:

a. 从输入中读入诗句内容,保存在一个list中,以便反复使用

b. 为了增加趣味性,使用随机数,确定第一句诗以及第一个共同字(这样可以确保每一次的输出都不一样,但也产生了不能成功输出的风险)

c. 根据确定的共同字,找到下一句包含该共同字的诗文,同时在此句中随机选定下一个共同字

d. 找到包含第二个共同字的诗句

        同时,在每次确定输出诗句的时候,要对应给出输出坐标。第一、三句应水平输出,第二句竖直输出。这里多做一点说明,PosPro将屏幕左上角作为原点,向右为x正方向,向下为y正方向,初始坐标为(0,0),每个中文字符占一个坐标位,所以最后输出的字符x,y坐标都应该大于等于0。


程序分析:

1)首先是一些全局变量

NUMofPOEM=1500 #可以自定义的值,即“诗库”中总共有多少诗(也即多少行)
MAXLINES=3 #最多出现的诗句数

allPoems=[] #记录所有读入的诗句
usedPoems=[] #int构成的list,保存的是已用过的诗句编号
keyCharList=[] #记录每个关键字(被略去的字)的值及坐标:(char,x,y)
outputLines=[] #记录每一个输出的诗句,每个元素都是[x,y,char]的形式
coordinateFirstChar=[] #对于每个待输出的句子,记录其首字坐标(x,y)
coverLetter=('?','#','¥','%') #用以替换掉关键字的字符,PosPro says:注意都是中文符号!!


2)程序主体部分:调用函数完成:找第一句,第二句,第三句的任务,整理坐标后,输出。(嗯?听起来像废话?)
#把所有诗句保存在allPoems中,以方便后续多次查找
#singleLine.txt中每一行都是一首诗:包括编号、标题、作者、诗句内容
#txt中每一部分以Tab隔开
with open('singleLine.txt',encoding='gbk',errors="ignore") as f:
	for line in f:
		line=line.rstrip()
		newList=list(line.split('\t'))
		allPoems.append(newList)

randomNum=random.randint(1,NUMofPOEM)
for l in allPoems:
	if randomNum==int(l[0]): #根据随机数,随机选出一首诗
		usedPoems.append(randomNum)  
		#usedPoem中
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值