还在怕成语接龙你玩不过别人嘛!今天教大家用Python做一个成语接龙的小游戏!!!

相关文件

关注小编,私信小编领取源码哟!!当然别忘了一键三连哟!!

开发工具

Python版本:3.6.4
相关模块:
pyqt5模块;
以及一些python自带的模块。

环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。

原理介绍

大家应该都了解成语接龙这个小游戏的游戏规则吧(不了解的建议面壁思过几天图片):
在这里插入图片描述
首先,我去网上找了下别人整理好的现成的成语数据:
还在怕成语接龙你玩不过别人嘛!今天教大家用Python做一个成语接龙的小游戏!!!_第1张图片
大概有两万多条,看起来足够我们玩的了。现在,我们需要做的就是写一个函数来读取这个文本文件里的成语数据了,这个很简单:

'''读取成语数据'''
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:zz
            idiom_data[item[0][0]] = [item]
        else:
            idiom_data[item[0][0]].append(item)
        valid_idioms.append(item[0])
    return idiom_data, valid_idioms

接着,我们用PyQt5写个简单的GUI界面,大概长这个样子:
还在怕成语接龙你玩不过别人嘛!今天教大家用Python做一个成语接龙的小游戏!!!_第2张图片
我的想法大概是这样子的:首先我方输入一个成语,然后点击确定,从而告诉电脑方我们现在输入的成语是什么,让电脑方接龙,然后我方再根据电脑方的输出进行接龙,以此类推。重新开始按钮用来重置当前的游戏状态(主要是在我方不知道该接什么词的时候使用?图片)。
ok,确定了大概的思路之后,我们就可以开始愉快地coding啦~首先是完成电脑接龙部分:

'''电脑接龙'''
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:
        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])
        else:
            QMessageBox.information(self, '你赢啦', '电脑都接不上你的成语, 你太厉害啦!', QMessageBox.Yes | QMessageBox.No)

这里需要注意的点有:

  • 玩家接龙的成语必须真的是成语,不然你随便打几个字,保证第一个字和电脑出的成语最后一个字对上就行的话,就失去了成语接龙的意义了;
  • 保证玩家方接的成语第一个字能够对上电脑方出的成语的最后一个字;
  • 写代码的时候要考虑到电脑方也是有可能输的。

然后是重新开始部分:

'''重新开始'''
def restart(self):
    self.ai_answer = None
    self.ai_input_edit.clear()
    self.user_input_edit.clear()

这部分很简单,就不展开说了。现在,我们大致完成了我们的成语接龙小软件:
最后,再来给它添加一点内容?比如我们玩成语接龙的时候能不能顺便学习一下成语本身的含义呢,就像这样:
还在怕成语接龙你玩不过别人嘛!今天教大家用Python做一个成语接龙的小游戏!!!_第3张图片
还在怕成语接龙你玩不过别人嘛!今天教大家用Python做一个成语接龙的小游戏!!!_第4张图片
这部分的实现其实很简单,就不展开说啦~
完整源代码详见相关文件呗。
好啦,都看到这里啦,当然不要吝啬大家的小手指哟~
记得一键三连哟!!
有啥不懂的就在评论区问就好啦!!

你可能感兴趣的:(python,游戏,python,pygame,编程语言,数据分析)