基于Python编写简易的成语接龙游戏
⽬录
前⾔
1.游戏规则
2.正式敲代码
2.1模块导⼊
2.2读取txt数据
2.3界⾯设置
2.4电脑接龙
2.5重新开始新游戏
2.6成语是否合法
2.7读取成语的数据
2.8附完整的项⽬源码
3.效果展⽰
前⾔
"胸藏⽂墨怀如⾕,腹有诗书⽓⾃华"。      ——《和董传留别》
成语接龙是中华民族传统的⽂字游戏。
它历史悠久,是传统⽂字、⽂化、⽂明的⼀个缩影,也是⽼少皆宜的民间⽂化娱乐活动。
成语接龙:"龙腾虎跃,该你了!"                        什么?你⽴刻接上了「跃马弯⼸」?
确认过眼神,是⾼⼿没错了。    Hi~我是栗⼦,⼜见⾯了哇! 今天我带来了新技能解锁,没错,就是:「成语接龙」
据说,跟我玩游戏的朋友偷偷作弊,拿了本《现代汉语词典》要跟我⼤战三百回合。
最后发现,我说的每个成语她都忍不住要去查⼀下啊哈哈哈⼩编乱⼊:我的天呐,奇怪的知识成倍增长了!
认怂? 我会认怂嘛?!  不存在的.
看我写⼀款成语接龙⼩程序,分分钟秒杀你~快来和我「成语接龙」吧~
在这款成语接龙⼩游戏中,你会学到⼀些「新成语」,能边玩⼉边学成语,最重要的还是能接触⼀款编程,在玩⼉中进步学习,成就感满满,⼜能学知识,你有闲暇时,跟隔壁⽼王可以⼀直玩⼀直玩哈哈哈~
1.游戏规则
下⾯我简单说说「成语接龙」游戏的基本规则,你很熟悉可以跳过这段,不熟悉就仔细看看:
①⽤四字成语的最后⼀个字起头,接出下⼀句成语,由此不断延伸;
②成语尾⾸相接的字,可以是同⼀个字,也可以是同⾳的字;
③⼀场游戏中,不应出现重复成语。
【举例】
「海枯⽯烂」→「烂醉如泥」→「泥⽜⼊海」
×不能接「海枯⽯烂」(出现重复)
√可以接「海纳百川」
是不是超级简单?考验词汇储备量的时候到了~
2.正式敲代码
2.1 模块导⼊
import os
import sys
import random
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
2.2 读取txt数据
self.idiom_data, self.valid_idioms = adData('')
self.ai_answer = None
2.3 界⾯设置
self.setWindowTitle('成语接龙⼩程序-就差你了!')
self.setWindowIcon(QIcon('data/02.png'))
self.setFixedSize(600, 200)
self.user_input_label = QLabel('我⽅:')
self.user_input_edit = QLineEdit()
self.user_input_button = QPushButton('确定')
self.ai_input_label = QLabel('电脑⽅:')
self.ai_input_edit = QLineEdit()
self.user_explain_label = QLabel('我⽅成语释义:')
self.user_explain_edit = QLineEdit()
self.ai_explain_label = QLabel('电脑⽅成语释义:')
self.ai_explain_edit = QLineEdit()
# 布局
self.id)
# 按键绑定
self.user_input_t(self.airound)
2.4 电脑接龙
def airound(self):
idiom = self.user_()
idiom = idiom.strip()
if (not self.isvalid(idiom)) or (self.ai_answer and idiom[0] != self.ai_answer[0][-1]):
QMessageBox.warning(self, '成语输⼊错误', '你输⼊的成语不对哦, 不可以耍⼩聪明哒!', QMessageBox.Yes | QMessageBox.No)        else:
self.user_explain_edit.setText('读⾳: %s; 含义: %s' % (self.valid_idioms[idiom][0], self.valid_idioms[idiom][1]))
if idiom[-1] in self.idiom_data:
answers = self.idiom_data[idiom[-1]]
answer = random.choice(answers)
self.ai_answer = py()
self.ai_input_edit.setText(self.ai_answer[0])
self.ai_explain_edit.setText('读⾳: %s; 含义: %s' % (self.valid_idioms[answer[0]][0], self.valid_idioms[answer[0]][1]))
else:
QMessageBox.information(self, '你赢啦', '电脑都接不上你的成语, 你太厉害啦!', QMessageBox.Yes | QMessageBox.No) 2.5 重新开始新游戏
def restart(self):
self.ai_answer = None
self.ai_input_edit.clear()
self.ai_explain_edit.clear()
self.user_input_edit.clear()
self.user_explain_edit.clear()
2.6 成语是否合法
def isvalid(self, idiom):
return (idiom in self.valid_idioms)
2.7 读取成语的数据
def readData(self, filepath):
fp = open(filepath, 'r', encoding='utf-8')
idiom_data = {}
valid_idioms = {}
for line adlines():
line = line.strip()
if not line: continue
item = line.split('\t')
if len(item) != 3: continue
if item[0][0] not in idiom_data:
idiom_data[item[0][0]] = [item]
else:
idiom_data[item[0][0]].append(item)
valid_idioms[item[0]] = item[1:]
return idiom_data, valid_idioms
2.8 附完整的项⽬源码
'''
⼩程序名:
成语接龙
'''
import os
import sys
import random
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
'''成语接龙'''
class IdiomSolitaire(QWidget):
def __init__(self, parent=None, **kwargs):
super(IdiomSolitaire, self).__init__(parent)
# 读取数据python可以做什么游戏
self.idiom_data, self.valid_idioms = adData('')        self.ai_answer = None
# 定义界⾯
self.setWindowTitle('成语接龙⼩程序-就差你了!')
self.setWindowIcon(QIcon('data/02.png'))
self.setFixedSize(600, 200)
self.user_input_label = QLabel('我⽅:')
self.user_input_edit = QLineEdit()
self.user_input_button = QPushButton('确定')
self.ai_input_label = QLabel('电脑⽅:')
self.ai_input_edit = QLineEdit()
self.user_explain_label = QLabel('我⽅成语释义:')
self.user_explain_edit = QLineEdit()
self.ai_explain_label = QLabel('电脑⽅成语释义:')
self.ai_explain_edit = QLineEdit()
# 布局
self.id)
# 按键绑定
self.user_input_t(self.airound)
'''电脑接龙'''
def airound(self):
idiom = self.user_()
idiom = idiom.strip()
if (not self.isvalid(idiom)) or (self.ai_answer and idiom[0] != self.ai_answer[0][-1]):
QMessageBox.warning(self, '成语输⼊错误', '你输⼊的成语不对哦, 不可以耍⼩聪明哒!', QMessageBox.Yes | QMessageBox.No)
else:
self.user_explain_edit.setText('读⾳: %s; 含义: %s' % (self.valid_idioms[idiom][0], self.valid_idioms[idiom][1]))
if idiom[-1] in self.idiom_data:
answers = self.idiom_data[idiom[-1]]
answer = random.choice(answers)
self.ai_answer = py()
self.ai_input_edit.setText(self.ai_answer[0])
self.ai_explain_edit.setText('读⾳: %s; 含义: %s' % (self.valid_idioms[answer[0]][0], self.valid_idioms[answer[0]][1]))
else:
QMessageBox.information(self, '你赢啦', '电脑都接不上你的成语, 你太厉害啦!', QMessageBox.Yes | QMessageBox.No)
'''重新开始'''
def restart(self):
self.ai_answer = None
self.ai_input_edit.clear()
self.ai_explain_edit.clear()
self.user_input_edit.clear()
self.user_explain_edit.clear()
'''检测成语是否合法'''
def isvalid(self, idiom):
return (idiom in self.valid_idioms)
'''读取成语数据'''
def readData(self, filepath):
fp = open(filepath, 'r', encoding='utf-8')
idiom_data = {}
valid_idioms = {}
for line adlines():
line = line.strip()
if not line: continue
item = line.split('\t')
if len(item) != 3: continue
if item[0][0] not in idiom_data:
idiom_data[item[0][0]] = [item]
else:
idiom_data[item[0][0]].append(item)
valid_idioms[item[0]] = item[1:]
return idiom_data, valid_idioms
'''run'''
if __name__ == '__main__':
app = QApplication(sys.argv)
client = IdiomSolitaire()
client.show()
<_())
3.效果展⽰
3.1 成语:龙腾虎跃 Part 1效果
3.2 成语:⼭清⽔秀 Part 2效果
到此这篇关于基于Python编写简易的成语接龙游戏的⽂章就介绍到这了,更多相关Python成语接龙游戏内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!