日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Python實現隨機生成迷宮并自動尋路

瀏覽:23日期:2022-06-17 08:04:37
目錄Python深搜版:Python 廣搜版lua版:Python深搜版:

核心在于帶隨機的深搜(見代碼第23到27行,其實也可以用22行代替這幾行代碼,你可以試著把第24行的數字4改大或者改小,即調整隨機程度)

import osimport randomfrom queue import Queueimport numpyimport coloramafrom colorama import Fore, Back, Styleimport sys from bmpEditor import bmpcolorama.init()# numpy.random.seed(1)_xy = [0,2,0,-2,0]size = 31sys.setrecursionlimit(100000000)road = set()def dfs(curr_pos):road.add(curr_pos)# for i in numpy.random.permutation(4):p = [0,1,2,3]for i in range(4):l = random.randint(0,3)r = random.randint(0,3)p[l], p[r] = p[r], p[l]for i in p:next_pos = (curr_pos[0] + _xy[i], curr_pos[1] + _xy[i+1])if (0<=next_pos[0]<size and0<=next_pos[1]<size andnext_pos not in road ):road.add(((curr_pos[0] + next_pos[0])/2, (curr_pos[1] + next_pos[1])/2))dfs(next_pos)dfs((0,0))q = Queue()q.put((0,0))ans_road = set()def dfs_getans(curr_pos):# print(curr_pos)ans_road.add(curr_pos)if (size-1, size-1) in ans_road:returnfor i in range(4):next_pos = (curr_pos[0] + _xy[i]//2, curr_pos[1] + _xy[i+1]//2)if (0<=next_pos[0]<size and0<=next_pos[1]<size andnext_pos in road andnext_pos not in ans_road and(size-1, size-1) not in ans_road):dfs_getans(next_pos)if (size-1, size-1) not in ans_road:ans_road.remove(curr_pos)dfs_getans((0,0))for i in range(size):for j in range(size):print((Back.WHITE + ’ ’) if (i,j) in road else (Back.BLACK + ’ ’), end=’ ’)print()wall_width = 2cell_size = 6image = bmp((size+3)*cell_size-wall_width, (size+3)*cell_size-wall_width, 0x000000)for i in range(size+3):for j in range(size+3):if (i-1, j-1) in road:image.paint_rect(i*cell_size, j*cell_size, cell_size*2-wall_width, cell_size*2-wall_width, 0xffffff)file_name = '%dmaze.bmp'%sizeimage.save_image(file_name)os.system(file_name)for p in ans_road:# image.paint_rect(p[0]+1, p[1]+1)image.paint_rect((p[0]+1)*cell_size + (cell_size - wall_width)//2,(p[1]+1)*cell_size + (cell_size - wall_width)//2,cell_size, cell_size,0xff0000)file_name = '%dans.bmp'%sizeimage.save_image(file_name)os.system(file_name)

效果

3131:

Python實現隨機生成迷宮并自動尋路

Python實現隨機生成迷宮并自動尋路

8181:

Python實現隨機生成迷宮并自動尋路

Python實現隨機生成迷宮并自動尋路

坐標系有翻轉,控制臺中的左上角對應圖片中的左下角

其中bmpEditor不是官方庫,代碼地址(文件名為bmpEditor.py,和這以上代碼放同一個路徑下即可)

Python 廣搜版

在隊列的基礎上把隊列中的元素順序打亂(第24行)

import osimport randomfrom queue import Queueimport numpyimport coloramafrom colorama import Fore, Back, Styleimport sys import random from bmpEditor import bmpcolorama.init()numpy.random.seed(1)_xy = [0,2,0,-2,0]size = 59sys.setrecursionlimit(size*size//4+size)q = []q.append((0,0))road = set()road.add((0,0))while len(q) != 0:random.shuffle(q)curr_pos = q.pop()# print(curr_pos)for i in range(4):next_pos = (curr_pos[0] + _xy[i], curr_pos[1] + _xy[i+1])if (0<=next_pos[0]<size and0<=next_pos[1]<size andnext_pos not in road ):road.add( ((curr_pos[0] + next_pos[0])//2, (curr_pos[1] + next_pos[1])//2) )q.append(next_pos)road.add(next_pos)ans_road = set()def dfs_getans(curr_pos):ans_road.add(curr_pos)if (size-1, size-1) in ans_road:returnfor i in range(4):next_pos = (curr_pos[0] + _xy[i]//2, curr_pos[1] + _xy[i+1]//2)if (0<=next_pos[0]<size and0<=next_pos[1]<size andnext_pos in road andnext_pos not in ans_road and(size-1, size-1) not in ans_road):dfs_getans(next_pos)if (size-1, size-1) not in ans_road:ans_road.remove(curr_pos)dfs_getans((0,0))print(len(ans_road))for i in range(0, size):for j in range(0, size):print((Back.WHITE + ’ ’) if (i,j) in road else (Back.BLACK + ’ ’), end=’ ’)print()wall_width = 1cell_size = 5image = bmp((size+3)*cell_size-wall_width, (size+3)*cell_size-wall_width, 0x000000)for i in range(size+3):for j in range(size+3):if (i-1, j-1) in road:image.paint_rect(i*cell_size, j*cell_size, cell_size*2-wall_width, cell_size*2-wall_width, 0xffffff)file_name = '%dmaze.bmp'%sizeimage.save_image(file_name)os.system(file_name)for p in ans_road:# image.paint_rect(p[0]+1, p[1]+1)image.paint_rect((p[0]+1)*cell_size + (cell_size - wall_width)//2,(p[1]+1)*cell_size + (cell_size - wall_width)//2,cell_size, cell_size,0xff0000)file_name = '%dans.bmp'%sizeimage.save_image(file_name)os.system(file_name)

效果:

Python實現隨機生成迷宮并自動尋路

Python實現隨機生成迷宮并自動尋路

相比深度優先的,這種迷宮會更加“直”一些

lua版:

大體上是深搜,加了一定的隨機性使得搜索過程中有一定概率暫時放棄當前路徑。見表stop_points,(第7行、第74行及其后面的repeat循環)

local _xy = {0,2,0,-2,0}local size = 41local base = size+1local road = {}stop_points = {}function dfs(curr_x, curr_y)road[curr_x*base+curr_y] = trueif math.random(1,10) <= 3 thenstop_points[curr_x*base+curr_y] = truereturnend-- os.execute('cls')-- print_map()local permutation = {1,2,3,4}for i=1, 4 dolocal l = math.random(1,4)local r = math.random(1,4)permutation[l], permutation[r] = permutation[r], permutation[l]endfor i=1, 4 dolocal next_x = curr_x+_xy[permutation[i]]local next_y = curr_y+_xy[permutation[i]+1]if next_x>=1 and next_x<=size andnext_y>=1 and next_y<=size androad[next_x*base+next_y] == nil thenlocal mid_x = math.floor((curr_x+next_x)/2)local mid_y = math.floor((curr_y+next_y)/2)road[mid_x*base+mid_y] = truedfs(next_x, next_y)endendendlocal ans_geted = falselocal parent = {}function get_ans(curr_x, curr_y)-- print(curr_x, curr_y)for i=1, 4 donext_x = (curr_x + math.floor(_xy[i])/2 )next_y = (curr_y + math.floor(_xy[i+1])/2 )-- print(next_x, next_y)if next_x >= 1 and next_x <= size andnext_y >= 1 and next_y <= size androad[next_x*base+next_y] andparent[next_x*base+next_y]==nilthenparent[next_x*base+next_y] = curr_x*base+curr_yget_ans(next_x, next_y)endendendlocal ans_road = {}function print_map()for i=0, size+1 dolocal line = ''for j=0, size+1 doif ans_road [i*base+j] thenline = line..'..'elseif road[i*base+j]==true thenline = line..' 'elseline = line..'HH'endendprint(line)endendstop_points[1*base+1] = true-- create mazerepeatlocal has_point = falsefor v,_ in pairs(stop_points) dohas_point = truestop_points[v] = nildfs(math.floor(v/base), v%base)breakend-- print(has_point)until not has_pointget_ans(1,1)parent[1*base+1] = nilprint('')-- for k,v in pairs(parent) do-- print(string.format('[%d,%d]->[%d,%d]', math.floor(k/base), k%base, math.floor(v/base), v%base))-- endprint('')local x = sizelocal y = sizerepeat-- print(x,y)ans_road[x*base+y] = truelocal v = parent[x*base+y]x = math.floor(v/base)y = v%baseuntil --[[(x==1 and y== 1)]] not parent[x*base+y]ans_road[1*base+1] = trueprint_map()

效果:

4141:

Python實現隨機生成迷宮并自動尋路

8989

Python實現隨機生成迷宮并自動尋路

到此這篇關于Python實現隨機生成迷宮并自動尋路的文章就介紹到這了,更多相關Python生成迷宮并自動尋路內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
成人影视亚洲图片在线| 亚洲我射av| 欧美日韩午夜电影网| 丝袜美腿高跟呻吟高潮一区| 香蕉成人av| 国内自拍视频一区二区三区| 日韩成人a**站| 国产精品成人a在线观看| 超碰超碰人人人人精品| 国产综合婷婷| 亚洲经典在线| 日本欧美在线看| 午夜视频一区二区在线观看| 日韩一区免费| 久久av中文| 欧洲一区二区三区精品| 久久精品免费一区二区三区 | 在线视频精品| 中文无码日韩欧| 欧美日韩网址| 91日韩免费| 天堂资源在线亚洲| 国产精品视区| 91成人福利| 精品91福利视频| 九一精品国产| 日韩精品成人| 国产在视频一区二区三区吞精| 天堂日韩电影| 亚洲激情另类| 久久国产视频网| 日韩欧美自拍| 亚洲区第一页| 在线中文字幕播放| 蜜臀av一区二区在线免费观看 | 欧美精品观看| 日韩欧美中文| 日韩成人精品一区二区三区| 日本黄色精品| 蜜臀av亚洲一区中文字幕| 日韩黄色在线观看| 国产一区二区三区四区五区| 久久久久九九精品影院| 午夜免费一区| 欧美久久亚洲| 国产综合精品一区| 国产剧情在线观看一区| 久久视频一区| 国产欧美午夜| 亚洲在线网站| 精品日产乱码久久久久久仙踪林| 亚洲精品电影| 九九九精品视频| 久久99伊人| 91青青国产在线观看精品| 亚洲免费一区二区| 久久精品国产久精国产| 视频在线观看一区| 日韩中文欧美| 国产精品毛片aⅴ一区二区三区| 女人天堂亚洲aⅴ在线观看| 国产精品一区二区三区美女| 夜夜嗨网站十八久久| 日韩深夜视频| 国产亚洲字幕| 蜜桃一区二区三区在线观看| 肉色欧美久久久久久久免费看 | 性感美女一区二区在线观看| 综合激情网...| 国产字幕视频一区二区| 久久精品国产免费| 亚洲日本国产| 五月天久久网站| 红杏一区二区三区| 欧美片网站免费| 偷拍亚洲精品| 老鸭窝毛片一区二区三区| 日本在线精品| 久久精品福利| 欧美亚洲二区| 综合色一区二区| 国产亚洲精品久久久久婷婷瑜伽| 亚洲欧洲高清| 精品视频一区二区三区在线观看| 亚洲精品三级| 久久国产精品99国产| 亚洲福利久久| 久久三级福利| 久久美女性网| 99久久精品费精品国产| 成人黄色av| 欧美xxxx中国| www在线观看黄色| 91欧美国产| 日韩大片在线播放| 精品久久免费| 久久精品国产999大香线蕉| 国产精品亚洲成在人线| 日韩精品社区| 欧美精品影院| 国产精品v日韩精品v欧美精品网站| 日韩一二三区在线观看| 综合日韩av| 亚洲精品.com| 激情婷婷欧美| 伊人影院久久| 男人的天堂久久精品| 日韩中文字幕在线一区| 国产精品主播| 日本在线高清| 亚洲精品国产偷自在线观看| 最新日韩欧美| 亚洲精品成人一区| 欧美一区成人| 麻豆久久久久久| 神马午夜在线视频| 欧洲毛片在线视频免费观看| 香蕉成人久久| 久久国产欧美日韩精品| 国产精品hd| 国产精品网站在线看| 久久久久久亚洲精品美女| 日本欧美久久久久免费播放网| 免费日本视频一区| 亚洲伊人精品酒店| 日韩三级久久| 国产一区国产二区国产三区| 成人午夜网址| 精品免费视频| 水蜜桃精品av一区二区| 鲁鲁在线中文| 精品欠久久久中文字幕加勒比| 激情国产在线| 四虎884aa成人精品最新| 不卡视频在线| 亚洲伊人精品酒店| 国产欧美日韩视频在线| 精品久久久久中文字幕小说| 国产 日韩 欧美 综合 一区| 久久在线91| 日本精品不卡| 亚洲精品中文字幕乱码| 99在线|亚洲一区二区| 亚洲综合欧美| 91成人在线网站| 丰满少妇一区| 日韩在线短视频| 夜夜嗨一区二区| 日本精品在线播放| 麻豆精品视频在线观看视频| 三级小说欧洲区亚洲区| 今天的高清视频免费播放成人| 国产精品婷婷| 国产视频网站一区二区三区| 久久福利在线| 色老板在线视频一区二区| 日韩一区二区三区精品| 久久精品国产精品亚洲毛片| 日韩在线看片| 蜜桃久久av| 欧美日韩中文| 久久亚洲精精品中文字幕| 免费一级片91| 精品国产鲁一鲁****| 激情偷拍久久| 欧美另类中文字幕| 丝袜av一区| 国产一精品一av一免费爽爽| 蜜桃成人精品| 久久国产免费| 天堂va欧美ⅴa亚洲va一国产| 久久精品五月| 先锋亚洲精品| 国产精品久久久久久模特 | 欧美国产美女| 亚洲黄色在线| 国产精品啊v在线| 亚洲欧洲一区| 色婷婷精品视频| 亚洲精品无播放器在线播放| 成人午夜在线| 亚洲欧美日韩视频二区| 精品午夜视频| 日韩二区在线观看| 成人免费电影网址| 日本欧美在线| 在线一区av| 91九色综合| 欧美aaaaaa午夜精品| 天堂va欧美ⅴa亚洲va一国产| 97精品中文字幕| 亚洲三级视频| 99久久夜色精品国产亚洲1000部| 日本v片在线高清不卡在线观看| 日韩视频二区| 国内一区二区三区| 国产亚洲人成a在线v网站| 亚洲精品一区三区三区在线观看| 欧美一区精品| 亚洲午夜免费|