《利用excel和python设计多功能的飞行棋盘.docx》由会员分享,可在线阅读,更多相关《利用excel和python设计多功能的飞行棋盘.docx(4页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、利用excel和python设计多功能的飞行棋盘今天应儿子要求买了个飞行棋,货到后,发现玩起来根本就提不起兴趣,棋盘如下:于是决定重新编写个个性棋盘,其中用到了 excelVBA、正则表达式、python,之所以这样使用,是因为 我不知道如何在某一种语言里单独实现。1、绘制棋盘在excel中按照棋盘所需,以填充颜色作为棋盘2、填充棋盘通过ctH+h,调出查找替换功能,查找底色为黄色的单元格,替换为数字13、输出坐标使用excelVBA来输出单元格内容为1的行列数并输出: 获取坐标Sub getCoordf)Dim i As IntegerDim j As IntegerFor i = 1 To
2、 13Forj = lTol3If Cells(iJ) = l Then Debug.Print & i & j & ;NextNextEnd Sub4、组合坐标为了方便将坐标用于python,将输出的内容使用正则表达式进行改变:M并分3B MiFlII炳 Ctrl的总风梏S PCR (PHP)S ECMAScrip(4,ieb4,n)44,12b(4,n$lh(5,7b$n(6l(e,7,613)47,l472(73h7,4475J(7,e, 7,7. 7,8 47,9 ,7, le. 7,11 47,12 , 7,13 .SU. 8.7. (8,13, 9.X. 9.7) 49,15 4
3、ie.1 Jie,2, le, 3), ie.(13,740,8(13,9)413,105、生成随机动作在python中通过以下代码,随机生成不同的动作import random#坐标列表coords =口, 4, 1, 5, 口, 6, 口, 8, 口, 9, 1,10, 2, 4, 2, 7, 2,10, 3,4, 3, 7, 3,10, 4,1, 4, 2,4, 3, 4, 4, 4, 7, 4,10, 4, 11, 4, 12, 4, 13, 5,1, 5,刀,5, 13, 6,1, 6,刀,6, 13, 7,1,7, 2, 7, 3, 7, 4, 7, 5, 7, 6, 7,刀,7,
4、 8, 7, 9, 7, 70, 7,11, 7,12, 7,13, 8,1, 8,刀,8,13, 9,1, 9, 7, 9,13, 10, 1, 10, 2, 10, 3, 10, 4, 10, 7, 10,10, 10,11, 10,12, 10,13, 11,4, 11, 7, 11,10, 12, 4, 12, 7, 12,10, 口3, 4, 13, 5, 13, 6, 口3, 7, 口3, 8, 13, 9, 13,10#动作actions =name:退,num: 7,name: W, num: 7,name:停/num,: 7),name: S, num: 3,#组装动作数据c
5、ontent =/or sub in actions:for i in range(subnum):n = int(random.random()*6+l)content.append(subname + str(n) #补充空白动作# 动作数量actionsLen = sumflsubCnumJ/dr sub in actions)# 坐标数最coordsLen = len(coords)# 填充空白动作content.extend(*(coordsLen-actionsLen)# 随机打乱数组random.shuffle(content)print(content)每次运行都会生成不同的数
6、据:丁前6丁丁再1 丁丁退5丁停2丁冒冒冒停2丁退2丁丁前3H/退3冒冒冒再6丁前2冒冒冒退6丁前1 再 6,“, ”,,丁丁前 2 丁退 1, 停 2丁丁,7 丁退 3 广,停 3丁丁,前 4 丁丁,停 6 丁丁丁停17,退 6/丁停 1, ,前 6,6、根据坐标与动作数据,将内容写到excel表中接着上面的代码,在后面继续写入:# 将动作数据按坐标写入到excel的棋盘中# 打开文档,得到workbook对象workbook = openpyxl.load_workbook(./cheesMap.xlsx)# 将工作簿中的“题目”表赋给“orksheet对象worksheet = work
7、book.get_sheet_by_name(Sheetl)# 按坐标填入动作for coog action in zip(coords, content):worksheet.cell(coor0z coorl).value = action# 保存while True:fileName =棋盘+ str(int(random.random()*999+l) + .xlsx/f not(os.path.exists(fileName):break workbook.save(fileName) workbook.close() print(f”已生成fileName)这就会在代码所在目录下生成名字以棋盘+数字的xlsx文件,每一个文件都是一个打乱的棋盘。名称修改日期M .vscode img 口打 cheesMap.xlsx te$t.py1m&696.xlsxQj tM787jdsxpy2023-06-28 14:312023-06-28 14:392023-06-28 16:142023-06-28 15:422023-06-28 16:182023-06-28 16:182023-06-28 16:18excel中的效果:ifll懵3“5停3迓4its松的22小用55*停5411件1加迪6驻伽
限制150内