大福途网

成语接龙敢玩嘛:龙腾虎跃,该你了?「评论区见」

admin
成语接龙敢玩嘛:龙腾虎跃,该你了?「评论区见」-第1张-游戏相关-大福途网

前言:

当前兄弟们对“不用立即玩的成语”大致比较关注,姐妹们都想要学习一些“不用立即玩的成语”的相关知识。那么小编也在网上汇集了一些有关“不用立即玩的成语””的相关资讯,希望兄弟们能喜欢,同学们快快来了解一下吧!

导语


"胸藏文墨怀如谷,腹有诗书气自华"。 ——《和董传留别》


成语接龙是中华民族传统的文字游戏。


它历史悠久,是传统文字、文化、文明的一个缩影,也是老少皆宜的民间文化娱乐活动。




成语接龙:"龙腾虎跃,该你了!" 什么?你立刻接上了「跃马弯弓」?


确认过眼神,是高手没错了。 Hi~我是木木子,又见面了哇! 今天我带来了新技能解锁,没错,就是:


「成语接龙」


据说,跟我玩游戏的朋友偷偷作弊,拿了本《现代汉语词典》要跟我大战三百回合。


最后发现,我说的每个成语她都忍不住要去查一下啊哈哈哈!!!小编乱入:我的天呐,奇怪得知


是成倍增长了!


​​


认怂? 我会认怂吗?! 不存在的.


看我写一款成语接龙小程序,分分钟秒杀你~快来和我「成语接龙」吧~


正文


在这款成语接龙小游戏中,你会学到一些「新成语」,能边玩儿边学成语,最重要的还是能接触一款


编程,在玩儿中进步学习,成就感满满,又能学知识,你有闲暇时,跟隔壁老王可以一直玩一直玩哈


哈哈~


1) 游戏规则


下面我简单说说「成语接龙」游戏的基本规则,你很熟悉可以跳过这段,不熟悉就仔细看看:


①用四字成语的最后一个字起头,接出下一句成语,由此不断延伸;


②成语尾首相接的字,可以是同一个字,也可以是同音的字;


③一场游戏中,不应出现重复成语。


【举例】「海枯石烂」→「烂醉如泥」→「泥牛入海」×不能接「海枯石烂」(出现重复)√可以接「海纳百川」



是不是超级简单?考验词汇储备量的时候到了~


2) 正式敲代码


2.1 模块导入


import osimport sysimport randomfrom PyQt5.QtGui import *from PyQt5.QtWidgets import *



2.2 读取txt数据


 self.idiom_data, self.valid_idioms = self.readData('data/data.txt') 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.restart_button = QPushButton('重新开始')        self.user_explain_label = QLabel('我方成语释义:')        self.user_explain_edit = QLineEdit()        self.ai_explain_label = QLabel('电脑方成语释义:')        self.ai_explain_edit = QLineEdit()        # 布局        self.grid = QGridLayout()        self.grid.setSpacing(12)        self.grid.addWidget(self.user_input_label, 0, 0)        self.grid.addWidget(self.user_input_edit, 0, 1)        self.grid.addWidget(self.user_input_button, 0, 2)        self.grid.addWidget(self.user_explain_label, 1, 0)        self.grid.addWidget(self.user_explain_edit, 1, 1, 1, 2)        self.grid.addWidget(self.ai_input_label, 2, 0)        self.grid.addWidget(self.ai_input_edit, 2, 1)        self.grid.addWidget(self.restart_button, 2, 2)        self.grid.addWidget(self.ai_explain_label, 3, 0)        self.grid.addWidget(self.ai_explain_edit, 3, 1, 1, 2)        self.setLayout(self.grid)        # 按键绑定        self.user_input_button.clicked.connect(self.airound)        self.restart_button.clicked.connect(self.restart)



2.4 电脑接龙


  def airound(self):        idiom = self.user_input_edit.text()        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 = answer.copy()                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 in fp.readlines():            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 osimport sysimport randomfrom PyQt5.QtGui import *from PyQt5.QtWidgets import *'''成语接龙'''class IdiomSolitaire(QWidget):    def __init__(self, parent=None, **kwargs):        super(IdiomSolitaire, self).__init__(parent)        # 读取数据        self.idiom_data, self.valid_idioms = self.readData('data/data.txt')        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.restart_button = QPushButton('重新开始')        self.user_explain_label = QLabel('我方成语释义:')        self.user_explain_edit = QLineEdit()        self.ai_explain_label = QLabel('电脑方成语释义:')        self.ai_explain_edit = QLineEdit()        # 布局        self.grid = QGridLayout()        self.grid.setSpacing(12)        self.grid.addWidget(self.user_input_label, 0, 0)        self.grid.addWidget(self.user_input_edit, 0, 1)        self.grid.addWidget(self.user_input_button, 0, 2)        self.grid.addWidget(self.user_explain_label, 1, 0)        self.grid.addWidget(self.user_explain_edit, 1, 1, 1, 2)        self.grid.addWidget(self.ai_input_label, 2, 0)        self.grid.addWidget(self.ai_input_edit, 2, 1)        self.grid.addWidget(self.restart_button, 2, 2)        self.grid.addWidget(self.ai_explain_label, 3, 0)        self.grid.addWidget(self.ai_explain_edit, 3, 1, 1, 2)        self.setLayout(self.grid)        # 按键绑定        self.user_input_button.clicked.connect(self.airound)        self.restart_button.clicked.connect(self.restart)    '''电脑接龙'''    def airound(self):        idiom = self.user_input_edit.text()        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 = answer.copy()                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 in fp.readlines():            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()    sys.exit(app.exec_())



3) 效果展示


3.1 成语:龙腾虎跃 Part 1效果




​3.2 成语:山清水秀 Part 2效果






​总结


成语接龙小测试:看看大家的成语量词汇是不是够多吖~哈哈哈 大家顺着上一位地接下去,看接到几楼呀?!文章汇总里面更多类型的游戏等你来学习哈~


⛳完整的免费源码领取处:


如需完整的项目源码+素材源码基地见:#私信小编06#即可获取免费的福利!


你们的支持是我最大的动力!!记得三连哦~mua 欢迎大家阅读往期的文章哦~



文章汇总——


Python—2021 |已有文章汇总 | 持续更新,直接看这篇就够了~



标签: #不用立即玩的成语