python使用pyqt5自制成语接龙

前段时间看了下pyqt5,还写了个计算器玩玩,python使用pyqt5制作计算器,前面也写过一个成语接龙的小程序,自制成语接龙。就想着把他俩结合一下,做个有界面的成语接龙玩玩。

代码如下:
首先是chengyu.py,这个文件是界面文件(chengyu.ui)转出来的,看我上篇[python使用pyqt5制作计算器]这篇文章就知道怎么弄得了,不想知道怎么弄也没关系,直接创建一个chengyu.py文件把我代码粘上去就好了,没有chengyu.ui文件也能跑通代码

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'chengyu.ui'
#
# Created by: PyQt5 UI code generator 5.13.0
#
# WARNING! All changes made in this file will be lost!


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(570, 537)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(MainWindow.sizePolicy().hasHeightForWidth())
        MainWindow.setSizePolicy(sizePolicy)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(200, 10, 121, 51))
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.label.sizePolicy().hasHeightForWidth())
        self.label.setSizePolicy(sizePolicy)
        font = QtGui.QFont()
        font.setPointSize(15)
        self.label.setFont(font)
        self.label.setObjectName("label")
        self.lineEdit_2_zhurenjie = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_2_zhurenjie.setGeometry(QtCore.QRect(10, 249, 121, 41))
        self.lineEdit_2_zhurenjie.setObjectName("lineEdit_2_zhurenjie")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(150, 250, 75, 41))
        self.pushButton.setObjectName("pushButton")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(10, 60, 541, 131))
        font = QtGui.QFont()
        font.setPointSize(11)
        self.label_2.setFont(font)
        self.label_2.setObjectName("label_2")
        self.label_3_qingkuang = QtWidgets.QLabel(self.centralwidget)
        self.label_3_qingkuang.setGeometry(QtCore.QRect(10, 370, 521, 31))
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.label_3_qingkuang.sizePolicy().hasHeightForWidth())
        self.label_3_qingkuang.setSizePolicy(sizePolicy)
        self.label_3_qingkuang.setText("")
        self.label_3_qingkuang.setObjectName("label_3_qingkuang")
        self.label_3_diannaojie = QtWidgets.QLabel(self.centralwidget)
        self.label_3_diannaojie.setGeometry(QtCore.QRect(150, 360, 401, 20))
        self.label_3_diannaojie.setText("")
        self.label_3_diannaojie.setObjectName("label_3_diannaojie")
        self.label_4_first_random = QtWidgets.QLabel(self.centralwidget)
        self.label_4_first_random.setGeometry(QtCore.QRect(20, 210, 511, 31))
        self.label_4_first_random.setText("")
        self.label_4_first_random.setObjectName("label_4_first_random")
        self.label_5_diannaojie = QtWidgets.QLabel(self.centralwidget)
        self.label_5_diannaojie.setGeometry(QtCore.QRect(10, 300, 511, 41))
        self.label_5_diannaojie.setText("")
        self.label_5_diannaojie.setObjectName("label_5_diannaojie")
        # MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 570, 23))
        self.menubar.setObjectName("menubar")
        # MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        # MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.label.setText(_translate("MainWindow", "成语接龙游戏"))
        self.pushButton.setText(_translate("MainWindow", "确定"))
        self.label_2.setText(_translate("MainWindow", "成语接龙游戏,请接成语或俗语,接的第一个字要跟上面的成语最后一个字相同哦\n"
"\n"
"当你不想玩的时候可以输入\"退出\"结束\n"
"\n"
"当你玩不过我的时候可以输入\"我认输\"也可以结束游戏,哈哈哈哈"))

接下来是chengyujielong.py文件:
这个脚本需要chengyu.txt,文件里面放的都是成语,爬虫代码

chengyujielong.py:

import random
def get_list():
    with open("chengyu.txt", "r+", encoding="utf-8") as f:
        content = f.read()
        url_list = content[:-1].split(',')
    return url_list

def get_first_word(url_list):
    randoms=random.choice(url_list)
    randoms='我先说一个:'+randoms
    return randoms

def jiqijie(url_list,zhuren):
    chengyus=[]
    for url in url_list:
        if url[0]==zhuren[-1]:
            chengyus.append(url)
    a=random.choice(chengyus)

    return a

那么最后就是run.py文件了:

# -*- coding: utf-8 -*-
# @Author   : LiMengDi
# @FILE     : run.py.py
# @Time     : 2019/11/28 14:43
# @Software : PyCharm
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow
from chengyu import Ui_MainWindow
from chengyujielong import get_list,get_first_word,jiqijie

class mwindow(QWidget, Ui_MainWindow):
    def __init__(self):
        super(mwindow, self).__init__()
        self.setupUi(self)
        self.url_list = get_list()
        self.randoms = get_first_word(self.url_list)

    def main_s(self):
        self.randoms_first(self.randoms)
        self.pushButton.clicked.connect(self.get_zhurenjie)

    def randoms_first(self,randoms):
        self.label_4_first_random.setText(randoms)

    def get_zhurenjie(self):
        text=self.lineEdit_2_zhurenjie.text()
        self.lineEdit_2_zhurenjie.clear()
        if text=='退出':
            app.quit()
        if text == '我认输':
            app.quit()
        if text not in self.url_list:
            self.label_3_qingkuang.setText('耍赖,这不是个成语或俗语,重新说')
        elif text[0] != self.randoms[-1]:
            self.label_3_qingkuang.clear()
            self.label_3_qingkuang.setText('耍赖,你没有接最后一个字,最后一个字是:{}'.format(str(self.randoms[-1])))
        else:
            self.label_3_qingkuang.clear()
            try:
                jiqi = jiqijie(self.url_list, text)
                self.randoms=jiqi
                self.label_4_first_random.clear()
                self.label_3_diannaojie.setText('俺接:{}'.format(str(jiqi)))
            except:
                self.label_3_qingkuang.setText('俺接不出来,你赢了!')

if __name__ == '__main__':

    app = QApplication(sys.argv)
    w = mwindow()
    w.show()
    w.main_s()
    sys.exit(app.exec_())

这是我的文件摆放:
在这里插入图片描述
文件就这些,放好后就可以运行run.py文件了,老规矩,看效果:
运行之后出来这个界面
在这里插入图片描述
接下来我们在输入框里瞎填点东西,点确定,看他反应:
在这里插入图片描述
点击确定之后:
在这里插入图片描述
嘿,蒙不住,那咱们给他填个成语,看效果:
在这里插入图片描述
点击确定:
在这里插入图片描述
嘿嘿,看来只能拿出我的真正实力了,接就接,发动我的脑筋,拿出杀手锏接它,不就是正开头的嘛
在这里插入图片描述
嘿嘿嗝,,咱接个正大光明,然后点击确定,看效果:
在这里插入图片描述
继续,继续搞它
在这里插入图片描述
填个法力无边点确定:
在这里插入图片描述
好吧,它也是有些实力的,于是经过我使用我深厚的文学功底与它大战一万八千六百回合之后:
在这里插入图片描述
哈哈哈哈,跟我斗。。

这个游戏结束也很简单,界面上写的规则也有
在这里插入图片描述
你可以在输入框输入“退出”,或者“我认输”,程序就结束了

另外,这个程序的成语都是自己爬取的,不可能把所有成语都爬全,然而判断是根据这些成语作出的,所以有时候你填个成语,它说你填的不是成语,可能只是它本身没有收录这个成语而已,游戏而已,不用当真

好了,今天的程序就玩到这,好好学习,天天向上

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值