用python编写猜成语游戏,python成语填空游戏

  用python编写猜成语游戏,python成语填空游戏

  成语接龙是中华民族的传统文字游戏。它历史悠久,是传统文字、文化和文明的缩影,也是老少皆宜的民间文化娱乐活动。本文将用Python制作一个简单的成语接龙游戏,供参考。

  00-1010前言1。游戏规则2。正式敲代码2.1模块导入2.2读取txt数据2.3界面设置2.4电脑接龙2.5重启一个新游戏2.6成语是否合法2.7读取成语数据2.8完成项目源代码3。效果显示

  

目录

  胸满藏墨,腹满诗书。—— 《和董传留别》

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

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

  成语接龙:‘龙腾胡月,该你了!’什么?你立马就勾搭上了“跃马弯弓”?

  检查你的眼睛,你是一个大师。没错。嗨~我是栗子,很高兴再次见到你!今天我带来了一个解锁的新技能,没错:“成语接龙”

  据说和我一起打游戏的朋友偷偷作弊拿着书《现代汉语词典》跟我打了300回合。

  最后她发现我说的每一个成语她都忍不住去查。哈哈哈!边肖:我的上帝,奇怪的知识成倍增长!

  认得出来吗?我会承认懦弱吗?不存在的。

  我来写个成语接龙小程序分分钟秒杀你~快来和我一起“成语接龙”吧~

  在这个成语接龙的小游戏中,你会学到一些“新成语”。可以边玩边学成语。最重要的是你可以接触一个节目,在玩中学习,成就感满满,学到知识。闲暇时可以一直和隔壁老王玩,哈哈哈~

  

前言

  我来简单说一下“成语接龙”游戏的基本规则。如果熟悉,可以跳过这一段。如果你不熟悉,仔细看看:

  从一个四字成语的最后一个字开始,接下一个成语,这样不断延伸;

  成语末尾总理后面的字可以是同一个字,也可以是同音字;

  一个游戏中不能有重复的成语。

  [示例]

  “海枯石烂”“烂醉如泥”“泥牛入海”

  拿不起来《海枯石烂》(副本)

  可以收到《海纳百川》

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

  

1.游戏规则

  

2.正式敲代码

  导入操作系统

  导入系统

  随机导入

  来自PyQt5。QtGui导入*

  来自PyQt5。QtWidgets导入*

  

2.1 模块导入

  self.idiom_data,self . valid _ idiom=self . read data( data/data . txt )

  self.ai_answer=无

  

2.2 读取txt数据

  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=q push button( OK )

  Self.ai_input_label=QLabel(电脑端3360 )

  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效果​

  

  到此这篇关于基于Python编写简易的成语接龙游戏的文章就介绍到这了,更多相关Python成语接龙游戏内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: