python自带tkinter库实现棋盘覆盖图形界面
来源:
中文源码网 浏览:131 次 日期:2024-05-14 01:48:20
【下载文档: python自带tkinter库实现棋盘覆盖图形界面.txt 】
python自带tkinter库实现棋盘覆盖图形界面
python实现棋盘覆盖图形界面,供大家参考,具体内容如下
一、解决方案和关键代码
工具: python tkinter库
问题描述:
在一个2^k×2^k个方格组成的棋盘中,若有一个方格与其他方格不同,则称该方格为一特殊方格,且称该棋盘为一个特殊棋盘.显然特殊方格在棋盘上出现的位置有4^k种情形.因而对任何k≥0,有4^k种不同的特殊棋盘。
在棋盘覆盖问题中,要用下图中 4 中不同形态的 L 型骨牌覆盖一个给定的特殊棋牌上除特殊方格以外的所有方格,且任何 2 个 L 型骨牌不得重叠覆盖。易知,在任何一个 2^k × 2^k 的棋盘中,用到的 L 型骨牌个数恰为 (4^k-1)/3 。
解决方法:递归与分治法
用分治策略,可以设计解棋盘问题的一个简捷的算法。
当 k>0 时,将 2^k * 2^k 棋盘分割为 4 个 2^(k-1) * 2^(k-1) 子棋盘;
特殊方格必位于 4 个较小子棋盘之一中,其余 3 个子棋盘中无特殊方格。为了将这 3 个无特殊方格的子棋盘转化为特殊棋盘,我们可以用一个 L 型骨牌覆盖这 3 个较小的棋盘的汇合处,如下图所示,这 3 个子棋盘上被 L 型骨牌覆盖的方格就成为该棋盘上的特殊方格,从而将原问题化为 4 个较小规模的棋盘覆盖问题。递归的使用这种分割,直至棋盘简化为 1x1 棋盘。
算法关键代码
def chessBoard(tr,tc,dr,dc,size):
global tile
global board
if (size==1):
return 0
tile+=1
t=tile
s=size//2
#the upper left corner
if (dr
|
chessBoard(tr,tc,dr,dc,s)
else:
board[tr+s-1,tc+s-1]=t
chessBoard(tr,tc,tr+s-1,tc+s-1,s)
#the upper right corner
if (dr
=tc+s):
chessBoard(tr,tc+s,dr,dc,s)
else:
board[tr+s-1,tc+s]=t
chessBoard(tr,tc+s,tr+s-1,tc+s,s)
#the lower left corner
if (dr>=tr+s and dcchessBoard(tr+s,tc,dr,dc,s)
else:
board[tr+s,tc+s-1]=t
chessBoard(tr+s,tc,tr+s,tc+s-1,s)
#the lower right corner
if (dr>=tr+s and dc>=tc+s):
chessBoard(tr+s,tc+s,dr,dc,s)
else:
board[tr+s,tc+s]=t
chessBoard(tr+s,tc+s,tr+s,tc+s,s)
画棋盘关键代码:
def drawboard(canvas1,board,colors,startx=50,starty=50,cellwidth=50):
width=2*startx+len(board)*cellwidth
height=2*starty+len(board)*cellwidth
canvas1.config(width=width,height=height)#布置画布
for i in range(len(board)):
for j in range(len(board)):
index=board[i][j]
if index== 0:
color='white'#特殊方格显示为白色
else:
color=colors[6*index]#为了间隔开颜色
cellx=startx+i*50
celly=starty+j*50
canvas1.create_rectangle(cellx,celly,cellx+cellwidth,celly+cellwidth,fill=color,outline="black")#画方格
canvas1.update()
二、数据测试
特殊方格坐标为(1,1),棋盘大小为(2^2*2^2)
特殊方格坐标为(2,2),棋盘大小为(2^3*2^3)
完整代码下载链接点这里
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持中文源码网。
- • 在unittest中使用 logging 模块记录测试数据的方法
- • 在pytorch中为Module和Tensor指定GPU的例子
- • 在Pytorch中使用样本权重(sample_weight)的正确方法
- • 在pytorch中查看可训练参数的例子
- • 在PyTorch中Tensor的查找和筛选例子
- • 在Python中合并字典模块ChainMap的隐藏坑【推荐】
- • 在Python中关于使用os模块遍历目录的实现方法
- • 在python中pandas读文件,有中文字符的方法
- • 在python中pandas的series合并方法
- • 在Python中pandas.DataFrame重置索引名称的实例
- • 在Pandas中给多层索引降级的方法
- • 在Pandas中处理NaN值的方法
- • 在Pandas中DataFrame数据合并,连接(concat,merge,join)的实例
- • 在pandas多重索引multiIndex中选定指定索引的行方法
- • 用于业余项目的8个优秀Python库
- • 用scikit-learn和pandas学习线性回归的方法
- • 用Python中的turtle模块画图两只小羊方法
- • 用python生成(动态彩色)二维码的方法(使用myqr库实现)
- • 用python标准库difflib比较两份文件的异同详解
- • 一看就懂得Python的math模块
- • 详细介绍pandas的DataFrame的append方法使用
- • 详解将Pandas中的DataFrame类型转换成Numpy中array类型的三种方法
- • 详解python中的模块及包导入
- • 详解python中的Turtle函数库
- • 详解python中的hashlib模块的使用
- • 详解Python中pandas的安装操作说明(傻瓜版)
- • 详解python之heapq模块及排序操作
- • 详解Python学习之安装pandas
- • 详解Python数据分析--Pandas知识点
- • 详解python使用turtle库来画一朵花
- • 详解python使用pip安装第三方库(工具包)速度慢、超时、失败的解决方案
- • 详解Python基础random模块随机数的生成
- • 详解python的argpare和click模块小结
- • 详解python:time模块用法
- • 详解Python_shutil模块
- • 详解Python3 pandas.merge用法
- • 详解Python 正则表达式模块
- • 详解python pandas 分组统计的方法
- • 详解python 3.6 安装json 模块(simplejson)
- • 详解pyenv下使用python matplotlib模块的问题解决
- • 详解pandas中MultiIndex和对象实际索引不一致问题
- • 详解Pandas之容易让人混淆的行选择和列选择
- • 详解pandas数据合并与重塑(pd.concat篇)
- • 详解pandas使用drop_duplicates去除DataFrame重复项参数
- • 详解pandas删除缺失数据(pd.dropna()方法)
- • 详解pandas如何去掉、过滤数据集中的某些值或者某些行?
- • 详解pandas库pd.read_excel操作读取excel文件参数整理与实例
- • 详解pandas的外部数据导入与常用方法
- • 详解pandas安装若干异常及解决方案总结
- • 详解pandas.DataFrame中删除包涵特定字符串所在的行
- • 详解PANDAS 数据合并与重塑(join_merge篇)
- • 详解pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)
- • 使用urllib库的urlretrieve()方法下载网络文件到本地的方法
- • 使用Python的toolz库开始函数式编程的方法
- • 使用Python的SymPy库解决数学运算问题的方法
- • 使用python的pexpect模块,实现远程免密登录的示例
- • 使用python的pandas为你的股票绘制趋势图
- • 使用Python的OpenCV模块识别滑动验证码的缺口(推荐)
- • 使用python PIL库实现简单验证码的去噪方法步骤
- • 使用Python Pandas处理亿级数据的方法
- • 使用python os模块复制文件到指定文件夹的方法
- • 使用pip安装python库的多种方式
- • 使用pandas实现csv_excel sheet互相转换的方法
- • 使用Pandas对数据进行筛选和排序的实现
- • 使用pandas读取文件的实现
- • 使用pandas把某一列的字符值转换为数字的实例
- • 实例详解Python模块decimal
- • 十分钟搞定pandas(入门教程)
- • 如何使用Python标准库进行性能测试
- • 让代码变得更易维护的7个Python库
- • 浅谈Python小波分析库Pywavelets的一点使用心得
- • 浅谈python标准库--functools.partial
- • 浅谈python 导入模块和解决文件句柄找不到问题
- • 浅谈pandas用groupby后对层级索引levels的处理方法
- • 浅谈pandas筛选出表中满足另一个表所有条件的数据方法
- • 浅谈Pandas_Series和DataFrame间的算术元素
- • 浅谈Pandas Series 和 Numpy array中的相同点
- • 连接pandas以及数组转pandas的方法
- • 利用Python库Scapy解析pcap文件的方法
- • 利用python-docx模块写批量生日邀请函
- • 利用python GDAL库读写geotiff格式的遥感影像方法
- • 利用Pandas和Numpy按时间戳将数据以Groupby方式分组
- • 利用ImageAI库只需几行python代码实现目标检测
- • 利用anaconda作为python的依赖库管理方法
- • 举例讲解Python常用模块
- • 解决安装python库时windows error5 报错的问题
- • 解决Python中pandas读取_.csv文件出现编码问题
- • 解决Python找不到ssl模块问题 No module named _ssl的方法
- • 解决python通过cx_Oracle模块连接Oracle乱码的问题
- • 解决Python pandas plot输出图形中显示中文乱码问题
- • 解决python Markdown模块乱码的问题
- • 解决pycharm每次新建项目都要重新安装一些第三方库的问题
- • 解决Pycharm 包已经下载,但是运行代码提示找不到模块的问题
- • 解决Pandas的DataFrame输出截断和省略的问题
- • 解决pandas.DataFrame.fillna 填充Nan失败的问题
- • 解决pandas .to_excel不覆盖已有sheet的问题
- • 将pandas.dataframe的数据写入到文件中的方法
- • 简单了解python 邮件模块的使用方法
- • 基于Python的PIL库学习详解
- • 基于pycharm导入模块显示不存在的解决方法
- • 关于python导入模块import与常见的模块详解
- • 关于pymysql模块的使用以及代码详解
- • 更新修改后的Python模块方法
- • 对python中的six.moves模块的下载函数urlretrieve详解
- • 对Python中TKinter模块中的Label组件实例详解
- • 对Python信号处理模块signal详解
- • 对python添加模块路径的三种方法总结
- • 对python模块中多个类的用法详解
- • 对Python模块导入时全局变量__all__的作用详解
- • 对python3中pathlib库的Path类的使用详解
- • 对python3标准库httpclient的使用详解
- • 对Python random模块打乱数组顺序的实例讲解
- • 对Python Pexpect 模块的使用说明详解
- • 对python pandas读取剪贴板内容的方法详解
- • 对python pandas 画移动平均线的方法详解
- • 对python csv模块配置分隔符和引用符详解
- • 对pandas中时间窗函数rolling的使用详解
- • 对pandas中两种数据类型Series和DataFrame的区别详解
- • 对pandas中iloc,loc取数据差别及按条件取值的方法详解
- • 对pandas写入读取h5文件的方法详解