使用Python PyQt5完成残缺棋盘覆盖仿真作业

2023-10-30 22:50

本文主要是介绍使用Python PyQt5完成残缺棋盘覆盖仿真作业,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

摘要:本文内容是关于如何实现残缺棋盘覆盖仿真软件,算法课作业要求设计开发一个残缺棋盘覆盖仿真软件。使用”分治算法“求解问题,Python编程语言实现功能;使用PyQt5和Python热力图实现界面和仿真效果展示。

1 残缺棋盘覆盖仿真作业

1.1 题目要求

 

1.2 问题描述

 

 2 实现效果

2.1 效果图

 2.2 视频演示

残缺棋盘覆盖仿真演示视频

 

3 开发环境

语言:python3
开发工具:pycharm
工具库:
PyQt5 5.12.1
pyqt5-tools 5.11.2.1.3
注:导入上面两个库要先导入sip库

4 开发步骤

详细PyQT5开发配置步骤见博文 使用Python PyQt5实现一个简单的图像识别软件

5 算法

5.1 算法思想 

  采用分治思想  ,对{\color{Red} 2^{k}\times 2^{k}}的棋盘进行划分,划分为更小一级的棋盘实例。即划分为4个{\color{Red} 2^{k-1}\times 2^{k-1}}的棋盘:

 划分后的4个小棋盘中只有一个棋盘存在残缺方格。首先覆盖残缺方格的小棋盘。然后把剩下3个小棋盘转变为残缺棋盘;此外,要注意位置问题,将一个三格板放置由这3个小棋盘形成的角上。

5.2算法核心代码

# 算法 分割棋盘def splitchess(self, x, y, size, xl, yc):# 判断size值if size == 1:return# 分割subSize = size // 2# 设置类型标记 用于if size > 24:self.type = self.type % 4 + 1else:self.type += 1# print(self.type)n = self.type# 假设特殊点在左上角区域  对左上角进行分割if x < xl + subSize and y < yc + subSize:self.splitchess(x, y, subSize, xl, yc)else:self.chess[xl + subSize - 1][yc + subSize - 1] = nself.splitchess(xl + subSize - 1, yc + subSize - 1, subSize, xl, yc)# 假设特殊点在右上角区域if x < xl + subSize and y >= yc + subSize:self.splitchess(x, y, subSize, xl, yc + subSize)else:self.chess[xl + subSize - 1][yc + subSize] = nself.splitchess(xl + subSize - 1, yc + subSize, subSize, xl, yc + subSize)# 假设特殊点在左下角区域if x >= xl + subSize and y < yc + subSize:self.splitchess(x, y, subSize, xl + subSize, yc)else:self.chess[xl + subSize][yc + subSize - 1] = nself.splitchess(xl + subSize, yc + subSize - 1, subSize, xl + subSize, yc)# 假设特殊点在右下角区域if x >= xl + subSize and y >= yc + subSize:self.splitchess(x, y, subSize, xl + subSize, yc + subSize)else:self.chess[xl + subSize][yc + subSize] = nself.splitchess(xl + subSize, yc + subSize, subSize, xl + subSize, yc + subSize)

6.测试

 

7 说明

暂时仅仅实现最简单的覆盖问题,还要一些问题没完善;

1.随机生成残缺块没有去设置。我这里残缺块的位置是可以自己输入,作业要求随机生成。自己写一个随机生产坐标的函数就可完成;

2.以及k值大了,图片变模糊; 可以动态调整生成的图片大小或热力图其它解决方案;

3.其它等等;

这篇关于使用Python PyQt5完成残缺棋盘覆盖仿真作业的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/311097

相关文章

详解如何通过Python批量转换图片为PDF

《详解如何通过Python批量转换图片为PDF》:本文主要介绍如何基于Python+Tkinter开发的图片批量转PDF工具,可以支持批量添加图片,拖拽等操作,感兴趣的小伙伴可以参考一下... 目录1. 概述2. 功能亮点2.1 主要功能2.2 界面设计3. 使用指南3.1 运行环境3.2 使用步骤4. 核

Python 安装和配置flask, flask_cors的图文教程

《Python安装和配置flask,flask_cors的图文教程》:本文主要介绍Python安装和配置flask,flask_cors的图文教程,本文通过图文并茂的形式给大家介绍的非常详细,... 目录一.python安装:二,配置环境变量,三:检查Python安装和环境变量,四:安装flask和flas

使用Python自建轻量级的HTTP调试工具

《使用Python自建轻量级的HTTP调试工具》这篇文章主要为大家详细介绍了如何使用Python自建一个轻量级的HTTP调试工具,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下... 目录一、为什么需要自建工具二、核心功能设计三、技术选型四、分步实现五、进阶优化技巧六、使用示例七、性能对比八、扩展方向建

基于Python打造一个可视化FTP服务器

《基于Python打造一个可视化FTP服务器》在日常办公和团队协作中,文件共享是一个不可或缺的需求,所以本文将使用Python+Tkinter+pyftpdlib开发一款可视化FTP服务器,有需要的小... 目录1. 概述2. 功能介绍3. 如何使用4. 代码解析5. 运行效果6.相关源码7. 总结与展望1

使用Python实现一键隐藏屏幕并锁定输入

《使用Python实现一键隐藏屏幕并锁定输入》本文主要介绍了使用Python编写一个一键隐藏屏幕并锁定输入的黑科技程序,能够在指定热键触发后立即遮挡屏幕,并禁止一切键盘鼠标输入,这样就再也不用担心自己... 目录1. 概述2. 功能亮点3.代码实现4.使用方法5. 展示效果6. 代码优化与拓展7. 总结1.

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

Linux中的计划任务(crontab)使用方式

《Linux中的计划任务(crontab)使用方式》:本文主要介绍Linux中的计划任务(crontab)使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、前言1、linux的起源与发展2、什么是计划任务(crontab)二、crontab基础1、cro

kotlin中const 和val的区别及使用场景分析

《kotlin中const和val的区别及使用场景分析》在Kotlin中,const和val都是用来声明常量的,但它们的使用场景和功能有所不同,下面给大家介绍kotlin中const和val的区别,... 目录kotlin中const 和val的区别1. val:2. const:二 代码示例1 Java

Python基础文件操作方法超详细讲解(详解版)

《Python基础文件操作方法超详细讲解(详解版)》文件就是操作系统为用户或应用程序提供的一个读写硬盘的虚拟单位,文件的核心操作就是读和写,:本文主要介绍Python基础文件操作方法超详细讲解的相... 目录一、文件操作1. 文件打开与关闭1.1 打开文件1.2 关闭文件2. 访问模式及说明二、文件读写1.

C++变换迭代器使用方法小结

《C++变换迭代器使用方法小结》本文主要介绍了C++变换迭代器使用方法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1、源码2、代码解析代码解析:transform_iterator1. transform_iterat