中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么用Python編寫簡易的成語接龍游戲

發布時間:2022-03-04 10:20:38 來源:億速云 閱讀:919 作者:iii 欄目:開發技術

本文小編為大家詳細介紹“怎么用Python編寫簡易的成語接龍游戲”,內容詳細,步驟清晰,細節處理妥當,希望這篇“怎么用Python編寫簡易的成語接龍游戲”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

    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 = 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 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)
            # 讀取數據
            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效果

    怎么用Python編寫簡易的成語接龍游戲

    3.2 成語:山清水秀 Part 2效果

    怎么用Python編寫簡易的成語接龍游戲

    讀到這里,這篇“怎么用Python編寫簡易的成語接龍游戲”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    靖安县| 安化县| 奈曼旗| 乌鲁木齐市| 闽清县| 宣威市| 曲阳县| 招远市| 孝义市| 石柱| 嘉鱼县| 奉新县| 鲜城| 社旗县| 藁城市| 成都市| 南丰县| 盐津县| 资讯| 许昌县| 邮箱| 永川市| 石阡县| 元氏县| 赞皇县| 东台市| 靖西县| 鄂温| 墨江| 廊坊市| 广平县| 扎兰屯市| 任丘市| 衡水市| 英吉沙县| 南宫市| 读书| 禄丰县| 青川县| 泰安市| 磐石市|