tft每日頭條

 > 圖文

 > 我們來聊聊成語接龍

我們來聊聊成語接龍

圖文 更新时间:2024-11-10 02:08:15

我們來聊聊成語接龍?"胸藏文墨懷如谷,腹有詩書氣自華" ——《和董傳留别》,今天小編就來說說關于我們來聊聊成語接龍?下面更多詳細答案一起來看看吧!

我們來聊聊成語接龍(成語接龍敢玩嘛)1

我們來聊聊成語接龍

導語

"胸藏文墨懷如谷,腹有詩書氣自華"。 ——《和董傳留别》

成語接龍是中華民族傳統的文字遊戲。

它曆史悠久,是傳統文字、文化、文明的一個縮影,也是老少皆宜的民間文化娛樂活動。

成語接龍:"龍騰虎躍,該你了!" 什麼?你立刻接上了「躍馬彎弓」?

确認過眼神,是高手沒錯了。 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 = 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效果

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

​總結

成語接龍小測試:看看大家的成語量詞彙是不是夠多吖~哈哈哈 大家順着上一位地接下去,看接到幾樓呀?!文章彙總裡面更多類型的遊戲等你來學習哈~

⛳完整的免費源碼領取處:

如需完整的項目源碼 素材源碼基地見:#私信小編06#即可獲取免費的福利!

你們的支持是我最大的動力!!記得三連哦~mua 歡迎大家閱讀往期的文章哦~

文章彙總——

Python—2021 |已有文章彙總 | 持續更新,直接看這篇就夠了~

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关圖文资讯推荐

热门圖文资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved