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

网站建设公司实力php网站视频代码

网站建设公司实力,php网站视频代码,中国建设网站工程承包分包法,百度公司招聘#x1f680; 优质资源分享 #x1f680; 学习路线指引#xff08;点击解锁#xff09;知识定位人群定位#x1f9e1; Python实战微信订餐小程序 #x1f9e1;进阶级本课程是python flask微信小程序的完美结合#xff0c;从项目搭建到腾讯云部署上线#xff0c;打造一… 优质资源分享 学习路线指引点击解锁知识定位人群定位 Python实战微信订餐小程序 进阶级本课程是python flask微信小程序的完美结合从项目搭建到腾讯云部署上线打造一个全栈订餐系统。Python量化交易实战入门级手把手带你打造一个易扩展、更安全、效率更高的量化交易系统 作为一项古老的智力游戏千百年来迷宫都散发着迷人的魅力。但是手工设计迷宫费时又耗脑力于是我们有必要制作一个程序迷宫生成器…… 好吧我编不下去了。但是从上面的文字中我们可以看出我们此次的主题是用Python实现一个迷宫生成器。 首先展示一下效果图 我们先分析一下所需的库 既然是生成器每次生成的迷宫一模一样显然是说不过去的。因此我们不可避免地要使用随机数Random库。迷宫一定是要绘制的所以需要有一个GUI库或绘图库这里我使用PygameTkinter或Turtle其实都可以做到但毕竟Pygame比较顺手。与Pygame搭配Sys似乎也是需要的用于退出程序但其实不使用似乎也无伤大雅。然后是Tkinter.filedialog主要用于询问保存路径生成的迷宫总得保存吧。当然用Time加一个计时器似乎是锦上添花。 于是就有 #coding:utf-8 import contextlib with contextlib.redirect\_stdout(None):import pygame import random import sys import time from tkinter.filedialog import *这里要说明的是由于导入Pygame时会输出版本信息等很多内容这很影响美感我们需要使用Contextlib阻止它输出。 接下来我们需要询问一些参数 aint(input(列数)) bint(input(行数)) lint(input(大小)) saveitinput(是否保存)然后就要运行生成迷宫的程序了。同时我们有必要计录一下时间相当于开启计时器 print(生成中...) e time.time()然后就是正式生成迷宫。在介绍这部分代码之前我们需要了解一下算法 第一步生成一个由迷宫单元白格和墙黑格组成的网格。一行中迷宫单元的数量为迷宫的列数一列找迷宫单元的数量为迷宫的行数。令左上角的迷宫单元为起点右下角的迷宫单元为终点打破起点左边与终点右边的墙如图所示 第二步访问各迷宫单元。将起点标记为当前迷宫单元当存在未被访问的迷宫单元凡是曾经成为过当前迷宫单元的迷宫单元都视为已访问时重复执行 将周围的未被访问的迷宫单元加入表格如果表格中有迷宫单元 将当前迷宫单元入栈可以理解为将其加入一个叫做栈的表格从表格中随机选择一个迷宫单元打破当前迷宫单元与选择的迷宫单元之间的墙将选择的迷宫单元标记为当前迷宫单元 如果表格中没有迷宫单元 栈顶迷宫单元出栈可以理解为将栈中的最后一个元素获取并删除将出栈的迷宫单元设为当前迷宫单元 在循环结束以后就会出现像文章开头效果图一样的结果。 接下来我们就要将文字化的算法转化为Python的代码。 首先程序是不认识图片的它认识的是数据。所以我们需要设置一个二维列表以此来用一串数据表示当前的图像。当然我们可以顺便将第一步的设置一起完成 alist [] aa0 need[] for j in range(2*a1):if aa0:aa 1alistone []for i in range(2*b1):alistone.append(1)alist.append(alistone)else:aa0alistone []bb0for i in range(2*b1):if bb0:bb1alistone.append(1)else:bb 0need.append((j,i))alistone.append(0)alist.append(alistone) alist[0][1]0 alist[-1][-2]0可以看到除此以外我们还建立了一个列表need里面存储了所有的迷宫单元。它的作用就是判断迷宫单元是否被访问每次访问都会将迷宫单元从表格中删除当表格中没有迷宫单元时就说明所有迷宫单元都被访问了。 x1 y1 need.remove((1, 1)) listing[] while len(need)0:aroundit[]try:if x-20:print(11)alist[x-2][y]0if (x-2,y) in need:aroundit.append(alist[x-1][y],x(0,x-2))except:while False:print()try:alist[x2][y]0if (x2,y) in need:aroundit.append(alist[x1][y],x(0,x2))except:while False:print()try:alist[x][y2]0if (x,y2) in need:aroundit.append(alist[x][y1],y(0,y2))except:while False:print()try:if y-20:print(11)alist[x][y-2]0if (x,y-2) in need:aroundit.append(alist[x][y-1],y(0,y-2))except:while False:print()if len(aroundit)0:listing.append((x,y))exec(random.choice(aroundit))need.remove((x, y))else:x,ylisting[-1]listing.pop()而这些内容就是第二步。其算法我已经解释过唯一一个微小的不同是在此处我们并没有在列表中加入相邻迷宫单元的坐标而是将其对应的破墙和标记为当前迷宫单元的代码以字符串的形式存储在表格中并在随机选择出某个迷宫单元所对应的字符串后使用exec将其转换为代码并运行这可以节省一些代码。 print(完成用时{}秒.format(time.time()-e))打印完生成迷宫的用时后我们需要将表格中的数据转化为图像了。当然在此之前我们要先确定图片保存的位置。 if saveit1:ccc askdirectory()hbbbbb1while True:try:open({}/{}×{}迷宫{}.png.format(ccc,a,b,h),r)h({}).format(bbbbb)except:breakbbbbb1由于使用时有可能选择不保存图片因此要先判断你的选择是保存还是不保存。这里字符“1”表示保存输入其他自然就是不保存了。然后我们需要让你选择保存路径askdirectory()询问的是文件路径不需要选择文件名。然后我们要确定文件名称“a×b迷宫.png”。这里需要判断指定路径是否存在此名称的文件如果存在则我们需要在后面加上序号。总而言之通过这串代码我们已经将迷宫的路径文件名确定了。 pygame.init() iconpygame.image.load(迷宫.png) pygame.display.set\_icon(icon) screenpygame.display.Info() screen pygame.display.set\_mode((l*(2*a1),l*(2*b1))) pygame.display.set\_caption(迷宫) screen.fill(white) c pygame.Surface((l, l), flagspygame.HWSURFACE) c.fill(colorwhite) d pygame.Surface((l, l), flagspygame.HWSURFACE) d.fill(colorblack) for i in range(2*a1):for j in range(2*b1):if alist[i][j]0:screen.blit(c, (i*l, j*l))elif alist[i][j]1:screen.blit(d, (i*l, j*l)) pygame.display.flip() if saveit1:pygame.image.save(screen, {}/{}×{}迷宫{}.png.format(ccc, a, b, h)) while True:for event in pygame.event.get():if event.type pygame.QUIT:pygame.quit()sys.exit()代码中使用的图片“迷宫.png”名称不太对下载以后要重新命名一下 这里主要是Pygame的基本设置并将表格内容图像化。每一个数字代表一个方块而数字的值则决定了方块的颜色数字在表格中的位置决定了方块的位置。就这样我们呢将表格完全转化成了图像。当然我们还需要用pygame.image.save()函数将图像保存为图片文件。 这样这个生成器似乎完成了。 它运行良好但当迷宫比较复杂时暴露出一个问题下图是100×100的迷宫 由于正确路径过于曲折在复杂度较高时这个迷宫的难度会变得极高 难度高在某方面上讲的确是好事。但当你向你的朋友们展示这个迷宫时如果你自己也无法得出正确的路径这不是很扫兴吗 因此一个寻路算法变得非常有必要。 寻路算法的大体思路 在生成的迷宫中白格为路黑格为墙。将起点设置为当前位置重复执行直到终点成为当前位置 将当前位置标记为正确路径将周围未标记的路加入一个表格如果表格不空 将当前位置入栈从表格中随机选择一条路并将其设为当前位置 如果表格是空的 栈顶的路出栈将其设为当前位置 通过这个算法我们可以试出正确的路径如图 代码的实现 x20 y21 listing2[] while not(alist[-1][-2]2):alist[x2][y2]3around2[]try:if x2-10:print(11)if alist[x2-1][y2]0:around2.append(x2x2-1)except:while False:print()try:if alist[x21][y2]0:around2.append(x2x21)except:while False:print()try:if alist[x2][y21]0:around2.append(y2y21)except:while False:print()try:if y2-10:print(11)if alist[x2][y2-1]0:around2.append(y2y2-1)except:while False:print()if len(around2)0:listing2.append((x2,y2))exec(random.choice(around2))else:alist[x2][y2]2x2,y2listing2[-1]listing2.pop() alist[-1][-2]3 for i in range(len(alist)):for j in range(len(alist[0])):if alist[i][j]2:alist[i][j]0同时图像绘制的过程也要作出一些改动以显示正确路径 if saveit1:ccc askdirectory()hbbbbb1while True:try:open({}/{}×{}迷宫{}.png.format(ccc,a,b,h),r)open({}/{}×{}迷宫正确线路{}.png.format(ccc,a,b,h),r)h({}).format(bbbbb)except:breakbbbbb1 pygame.init() iconpygame.image.load(迷宫.png) pygame.display.set\_icon(icon) screenpygame.display.Info() screen pygame.display.set\_mode((l*(2*a1),l*(2*b1))) pygame.display.set\_caption(迷宫) screen.fill(white) if saveit1:c pygame.Surface((l, l), flagspygame.HWSURFACE)c.fill(colorwhite)d pygame.Surface((l, l), flagspygame.HWSURFACE)d.fill(colorblack)f pygame.Surface((l, l), flagspygame.HWSURFACE)f.fill(colorwhite)for i in range(2 * a 1):for j in range(2 * b 1):if alist[i][j] 0:screen.blit(c, (i * l, j * l))elif alist[i][j] 1:screen.blit(d, (i * l, j * l))else:screen.blit(f, (i * l, j * l))pygame.image.save(screen, {}/{}×{}迷宫{}.png.format(ccc, a, b, h))c pygame.Surface((l, l), flagspygame.HWSURFACE)c.fill(colorwhite)d pygame.Surface((l, l), flagspygame.HWSURFACE)d.fill(colorblack)f pygame.Surface((l, l), flagspygame.HWSURFACE)f.fill(colorred)for i in range(2 * a 1):for j in range(2 * b 1):if alist[i][j] 0:screen.blit(c, (i * l, j * l))elif alist[i][j] 1:screen.blit(d, (i * l, j * l))else:screen.blit(f, (i * l, j * l))pygame.image.save(screen, {}/{}×{}迷宫正确线路{}.png.format(ccc, a, b, h)) c pygame.Surface((l, l), flagspygame.HWSURFACE) c.fill(colorwhite) d pygame.Surface((l, l), flagspygame.HWSURFACE) d.fill(colorblack) f pygame.Surface((l, l), flagspygame.HWSURFACE) f.fill(colorwhite) for i in range(2*a1):for j in range(2*b1):if alist[i][j]0:screen.blit(c, (i*l, j*l))elif alist[i][j]1:screen.blit(d, (i*l, j*l))else:screen.blit(f,(i*l, j*l)) pygame.display.flip() aaaaaaa 0 while True:for event in pygame.event.get():if event.type pygame.QUIT:pygame.quit()sys.exit()if event.type pygame.MOUSEBUTTONDOWN:if aaaaaaa 1:aaaaaaa 0c pygame.Surface((l, l), flagspygame.HWSURFACE)c.fill(colorwhite)d pygame.Surface((l, l), flagspygame.HWSURFACE)d.fill(colorblack)f pygame.Surface((l, l), flagspygame.HWSURFACE)f.fill(colorwhite)for i in range(2 * a 1):for j in range(2 * b 1):if alist[i][j] 0:screen.blit(c, (i * l, j * l))elif alist[i][j] 1:screen.blit(d, (i * l, j * l))else:screen.blit(f, (i * l, j * l))pygame.display.flip()else:aaaaaaa 1c pygame.Surface((l, l), flagspygame.HWSURFACE)c.fill(colorwhite)d pygame.Surface((l, l), flagspygame.HWSURFACE)d.fill(colorblack)f pygame.Surface((l, l), flagspygame.HWSURFACE)f.fill(colorred)for i in range(2 * a 1):for j in range(2 * b 1):if alist[i][j] 0:screen.blit(c, (i * l, j * l))elif alist[i][j] 1:screen.blit(d, (i * l, j * l))else:screen.blit(f, (i * l, j * l))pygame.display.flip()通过这些改动显示正确路径的效果就实现了。生成完成以后窗口上显示的是没有正确路径的迷宫而点击窗口后正确的路径就会显示再次点击隐藏。 刚刚那张100×100的迷宫其正确路径是 可以看出本文中所用的算法生成的迷宫其正确路径还是非常曲折的难度很高。你何不将其发给你的朋友让其破解一下呢 完整的代码 #coding:utf-8 import contextlib with contextlib.redirect\_stdout(None):import pygame import random import sys import time from tkinter.filedialog import * aint(input(列数)) bint(input(行数)) lint(input(大小)) saveitinput(是否保存) print(生成中...) e time.time() alist [] aa0 need[] for j in range(2*a1):if aa0:aa 1alistone []for i in range(2*b1):alistone.append(1)alist.append(alistone)else:aa0alistone []bb0for i in range(2*b1):if bb0:bb1alistone.append(1)else:bb 0need.append((j,i))alistone.append(0)alist.append(alistone) alist[0][1]0 alist[-1][-2]0 x1 y1 need.remove((1, 1)) listing[] while len(need)0:aroundit[]try:if x-20:print(11)alist[x-2][y]0if (x-2,y) in need:aroundit.append(alist[x-1][y],x(0,x-2))except:while False:print()try:alist[x2][y]0if (x2,y) in need:aroundit.append(alist[x1][y],x(0,x2))except:while False:print()try:alist[x][y2]0if (x,y2) in need:aroundit.append(alist[x][y1],y(0,y2))except:while False:print()try:if y-20:print(11)alist[x][y-2]0if (x,y-2) in need:aroundit.append(alist[x][y-1],y(0,y-2))except:while False:print()if len(aroundit)0:listing.append((x,y))exec(random.choice(aroundit))need.remove((x, y))else:x,ylisting[-1]listing.pop() x20 y21 listing2[] while not(alist[-1][-2]2):alist[x2][y2]3around2[]try:if x2-10:print(11)if alist[x2-1][y2]0:around2.append(x2x2-1)except:while False:print()try:if alist[x21][y2]0:around2.append(x2x21)except:while False:print()try:if alist[x2][y21]0:around2.append(y2y21)except:while False:print()try:if y2-10:print(11)if alist[x2][y2-1]0:around2.append(y2y2-1)except:while False:print()if len(around2)0:listing2.append((x2,y2))exec(random.choice(around2))else:alist[x2][y2]2x2,y2listing2[-1]listing2.pop() alist[-1][-2]3 for i in range(len(alist)):for j in range(len(alist[0])):if alist[i][j]2:alist[i][j]0 print(完成用时{}秒.format(time.time()-e)) if saveit1:ccc askdirectory()hbbbbb1while True:try:open({}/{}×{}迷宫{}.png.format(ccc,a,b,h),r)open({}/{}×{}迷宫正确线路{}.png.format(ccc,a,b,h),r)h({}).format(bbbbb)except:breakbbbbb1 pygame.init() iconpygame.image.load(迷宫.png) pygame.display.set\_icon(icon) screenpygame.display.Info() screen pygame.display.set\_mode((l*(2*a1),l*(2*b1))) pygame.display.set\_caption(迷宫) screen.fill(white) if saveit1:c pygame.Surface((l, l), flagspygame.HWSURFACE)c.fill(colorwhite)d pygame.Surface((l, l), flagspygame.HWSURFACE)d.fill(colorblack)f pygame.Surface((l, l), flagspygame.HWSURFACE)f.fill(colorwhite)for i in range(2 * a 1):for j in range(2 * b 1):if alist[i][j] 0:screen.blit(c, (i * l, j * l))elif alist[i][j] 1:screen.blit(d, (i * l, j * l))else:screen.blit(f, (i * l, j * l))pygame.image.save(screen, {}/{}×{}迷宫{}.png.format(ccc, a, b, h))c pygame.Surface((l, l), flagspygame.HWSURFACE)c.fill(colorwhite)d pygame.Surface((l, l), flagspygame.HWSURFACE)d.fill(colorblack)f pygame.Surface((l, l), flagspygame.HWSURFACE)f.fill(colorred)for i in range(2 * a 1):for j in range(2 * b 1):if alist[i][j] 0:screen.blit(c, (i * l, j * l))elif alist[i][j] 1:screen.blit(d, (i * l, j * l))else:screen.blit(f, (i * l, j * l))pygame.image.save(screen, {}/{}×{}迷宫正确线路{}.png.format(ccc, a, b, h)) c pygame.Surface((l, l), flagspygame.HWSURFACE) c.fill(colorwhite) d pygame.Surface((l, l), flagspygame.HWSURFACE) d.fill(colorblack) f pygame.Surface((l, l), flagspygame.HWSURFACE) f.fill(colorwhite) for i in range(2*a1):for j in range(2*b1):if alist[i][j]0:screen.blit(c, (i*l, j*l))elif alist[i][j]1:screen.blit(d, (i*l, j*l))else:screen.blit(f,(i*l, j*l)) pygame.display.flip() aaaaaaa 0 while True:for event in pygame.event.get():if event.type pygame.QUIT:pygame.quit()sys.exit()if event.type pygame.MOUSEBUTTONDOWN:if aaaaaaa 1:aaaaaaa 0c pygame.Surface((l, l), flagspygame.HWSURFACE)c.fill(colorwhite)d pygame.Surface((l, l), flagspygame.HWSURFACE)d.fill(colorblack)f pygame.Surface((l, l), flagspygame.HWSURFACE)f.fill(colorwhite)for i in range(2 * a 1):for j in range(2 * b 1):if alist[i][j] 0:screen.blit(c, (i * l, j * l))elif alist[i][j] 1:screen.blit(d, (i * l, j * l))else:screen.blit(f, (i * l, j * l))pygame.display.flip()else:aaaaaaa 1c pygame.Surface((l, l), flagspygame.HWSURFACE)c.fill(colorwhite)d pygame.Surface((l, l), flagspygame.HWSURFACE)d.fill(colorblack)f pygame.Surface((l, l), flagspygame.HWSURFACE)f.fill(colorred)for i in range(2 * a 1):for j in range(2 * b 1):if alist[i][j] 0:screen.blit(c, (i * l, j * l))elif alist[i][j] 1:screen.blit(d, (i * l, j * l))else:screen.blit(f, (i * l, j * l))pygame.display.flip()
http://www.yutouwan.com/news/243763/

相关文章:

  • 如何在自己电脑上建网站为什么wordpress模板
  • 学做室内效果图的网站吉林省建设信息网工程招投标
  • 珠海中企网站建设公司wordpress 网站 图标
  • 怎么判断网站建设年龄站酷网电脑版
  • 宁乡电商网站建设报价python在线编程软件
  • wordpress有哪些网站图片墙网站代码
  • 网站开发流程可规划为哪三个阶段出口网站制作
  • 网站优缺点分析网页制作收入
  • 广东网站推广公司一个域名多个网站
  • 农业信息中心网站建设公众号微信商城
  • 网页设计介绍北京网站网站建设6135678
  • 重庆网站维护制作wordpress只允许vip可以推广
  • 绵阳网站建设报价网站空间ip是一个域名
  • 净化科技网站建设毕业设计网站开发的中期报告
  • 小型公司网站建设知乎网站开发语言有几种
  • 济南做网站得多少钱美食网站建设毕业设计
  • 免费成品网站江苏常州武进区建设局网站
  • 天津网站开发建设咸宁网站建设解决方案
  • 做汽车行业必须注册际零件网站网站遭攻击
  • 高端网站开发建设新民正规网站建设价格咨询
  • 福田附近公司做网站建设多少钱电商门户网站
  • 网站制作培训多少钱app开发制作全过程
  • 网站空间服务吴江城乡建设局网站
  • 招商网站搭建费用三亚建设网站
  • tint-k主题做企业网站南京编程培训机构
  • 合肥网站建设=388元国外网站做freelancer
  • 网站建设需要摊销几年搭建企业网站流程
  • 宣城 网站建设哪些网站可以免费
  • 傻瓜做网站用什么软件广州建设银行投诉网站
  • 国外做游戏的视频网站做视频网站视频用什么插件吗