当前位置: 首页 > news >正文

Python 猜数系统 PyQt框架 有GUI界面 (源码在最后)【含Python源码 MX_002期】

 一、系统简介

猜数界面是一个基于PyQt框架创建的简单图形用户界面(GUI),用于让用户参与猜数字游戏。简要介绍一下界面的各个部分:

  1. 游戏开始按钮:点击此按钮开始游戏。在点击前,需要在文本框中输入参与游戏的玩家数量。

  2. 玩家数量输入框:用户在此输入参与游戏的玩家数量。输入无效或不合法时,会显示错误信息。

  3. 猜数输入框:在游戏开始后,玩家可以在此输入猜测的数字。

  4. 确认按钮:点击此按钮确认猜测的数字。根据猜测结果,界面会显示相应的提示信息,指导玩家下一步操作。

  5. 猜测次数显示框:显示当前玩家已经猜测的次数。

  6. 结果显示框:在游戏结束后,显示每位玩家的猜测次数排名。

  7. 游戏结束提示框:显示游戏结束的提示信息。

  8. 再来一局按钮:游戏结束后,点击此按钮可以重新开始游戏。

  9. 退出按钮:点击此按钮退出程序。

二、主要功能模块

1、游戏逻辑模块

import randomclass GuessingGame:def __init__(self):self.secret_number = random.randint(1, 500)def guess(self, number):if number > self.secret_number:return "猜测数据较大,猜小一点"elif number < self.secret_number:return "猜测数据较小,猜大一点"else:return "猜中了!"

2、界面模块

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QLineEdit, QLabel, QVBoxLayoutclass GuessingGameUI(QWidget):def __init__(self):super().__init__()self.init_ui()def init_ui(self):self.setWindowTitle("猜数字游戏")self.input_label = QLabel("请输入您的猜测:")self.input_textbox = QLineEdit()self.submit_button = QPushButton("确认")layout = QVBoxLayout()layout.addWidget(self.input_label)layout.addWidget(self.input_textbox)layout.addWidget(self.submit_button)self.setLayout(layout)def set_output_text(self, text):self.input_textbox.setText(text)def get_input_text(self):return self.input_textbox.text()def show_error_message(self, message):QMessageBox.critical(self, "错误", message)

3、主程序模块

from PyQt5.QtWidgets import QMessageBox
from game_logic import GuessingGame
from ui import GuessingGameUIclass GameController:def __init__(self):self.game = GuessingGame()self.ui = GuessingGameUI()self.setup_ui_events()def setup_ui_events(self):self.ui.submit_button.clicked.connect(self.handle_guess)def handle_guess(self):try:guess_number = int(self.ui.get_input_text())result = self.game.guess(guess_number)self.ui.set_output_text(result)except ValueError:self.ui.show_error_message("请输入一个有效的整数")def main():app = QApplication(sys.argv)controller = GameController()controller.ui.show()sys.exit(app.exec_())if __name__ == "__main__":main()

三、算法逻辑

  • 生成随机数和初始化变量

    • 在游戏开始时,程序会生成一个随机数,范围是1到500之间的整数,保存在变量num中。
    • 变量i用于跟踪当前玩家的索引,names列表用于存储玩家对象。
  • 创建玩家类

    • People类用来表示玩家。在初始化时,它会接受一个参数all,表示玩家总数。它有一个属性People_Times用来记录玩家猜测的次数,初始值为0。
    • add_one()方法用来增加玩家猜测次数。
    • print_times()方法用来返回玩家猜测的次数。
  • 游戏逻辑

    • out()函数是猜数字的主要逻辑。它首先尝试将玩家的输入转换为整数,如果输入不合法,则显示错误信息。
    • 如果玩家猜测的数字比随机数大,则显示提示信息让玩家猜小一点,并增加当前玩家的猜测次数。
    • 如果玩家猜测的数字比随机数小,则显示提示信息让玩家猜大一点,并增加当前玩家的猜测次数。
    • 如果玩家猜对了,则判断是否还有下一个玩家。如果有,则显示提示信息并更新随机数,进入下一位玩家的回合;如果没有下一个玩家,则游戏结束。
    • 游戏结束时,禁用输入框和按钮,统计每位玩家的猜测次数,并按照猜测次数从小到大排序显示结果。
  • 开始游戏

    • begin()函数用于开始游戏。它尝试将输入的玩家数量转换为整数,如果输入不合法,则显示错误信息。
    • 游戏开始时,禁用部分输入框和按钮,显示游戏开始提示信息,并创建玩家对象列表。
  • 界面显示

    • view()函数负责创建和显示GUI界面,连接按钮的点击事件和对应的函数。

完整源码:Python 猜数系统 有GUI界面

http://www.lryc.cn/news/360330.html

相关文章:

  • npm install pubsub-js报错的解决汇总
  • nuxt2:自定义指令 / v-xxx / directives / 理解 / 使用方法 / DEMO
  • 基础—SQL—DCL(数据控制语言)小结
  • 一文彻底讲透 PyTorch
  • JVM常用概念之锁粗化和循环
  • HTML (总结黑马的)
  • YOLOv8 segment介绍
  • PMBOK® 第六版 项目整合管理概念
  • 【Qt】【模型视图架构】代理模型
  • Flutter 中的 IconTheme 小部件:全面指南
  • virtualbox虚拟机、centos7安装增强工具
  • Kotlin 泛型
  • Tomcat 面试题(一)
  • 跟踪一个Pytorch Module在训练过程中的内存分配情况
  • LeetCode 2965.找出缺失和重复的数字:小数据?我选择暴力(附优化方法清单:O(1)空间方法×3)
  • 【运维】VMware Workstation 虚拟机内无网络的解决办法(或许可行)
  • 如何使用Dora SDK完成Fragment流式切换和非流式切换
  • 低代码开发平台(Low-code Development Platform)的模块组成部分
  • Java网络编程(上)
  • Spring Kafka 之 @KafkaListener 注解详解
  • 【量算分析工具-贴地距离】GeoServer改造Springboot番外系列九
  • 【linux】(1)文件操作及vi
  • 【5】MySQL数据库备份-XtraBackup - 全量备份
  • 数据治理-数据标准演示
  • 基于Chisel的FPGA流水灯设计
  • LabVIEW齿轮调制故障检测系统
  • AI帮写:探索国内AI写作工具的创新与实用性
  • n后问题 回溯笔记
  • 简述Java中实现Socket通信的步骤
  • Asp.Net Core 实现分片下载的最简单方式