成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁(yè) > 知識(shí)庫(kù) > Python實(shí)現(xiàn)隨機(jī)生成迷宮并自動(dòng)尋路

Python實(shí)現(xiàn)隨機(jī)生成迷宮并自動(dòng)尋路

熱門(mén)標(biāo)簽:ai電銷(xiāo)機(jī)器人的優(yōu)勢(shì) 騰訊地圖標(biāo)注沒(méi)法顯示 地圖標(biāo)注自己和別人標(biāo)注區(qū)別 孝感營(yíng)銷(xiāo)電話機(jī)器人效果怎么樣 聊城語(yǔ)音外呼系統(tǒng) 打電話機(jī)器人營(yíng)銷(xiāo) 商家地圖標(biāo)注海報(bào) 南陽(yáng)打電話機(jī)器人 海外網(wǎng)吧地圖標(biāo)注注冊(cè)

Python深搜版:

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

import os
import random
from queue import Queue
import numpy
import colorama
from colorama import Fore, Back, Style
import sys   

from bmpEditor import bmp

colorama.init()


# numpy.random.seed(1)
_xy = [0,2,0,-2,0]
size = 31
sys.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 and
			0=next_pos[1]size and
			next_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:
		return
	for 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 and
			0=next_pos[1]size and
			next_pos in road and
			next_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 = 2
cell_size = 6
image = 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"%size
image.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"%size
image.save_image(file_name)
os.system(file_name)

效果

3131:



8181:


坐標(biāo)系有翻轉(zhuǎn),控制臺(tái)中的左上角對(duì)應(yīng)圖片中的左下角

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

Python 廣搜版

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

import os
import random
from queue import Queue
import numpy
import colorama
from colorama import Fore, Back, Style
import sys   
import random   

from bmpEditor import bmp
colorama.init()


numpy.random.seed(1)
_xy = [0,2,0,-2,0]
size = 59
sys.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 and
				0=next_pos[1]size and
				next_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:
		return
	for 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 and
				0=next_pos[1]size and
				next_pos in road and
				next_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 = 1
cell_size = 5
image = 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"%size
image.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"%size
image.save_image(file_name)
os.system(file_name)

效果:



相比深度優(yōu)先的,這種迷宮會(huì)更加“直”一些

lua版:

大體上是深搜,加了一定的隨機(jī)性使得搜索過(guò)程中有一定概率暫時(shí)放棄當(dāng)前路徑。見(jiàn)表stop_points,(第7行、第74行及其后面的repeat循環(huán))

local _xy = {0,2,0,-2,0}
local size = 41
local base = size+1
local road = {}

stop_points = {}
function dfs(curr_x, curr_y)
	road[curr_x*base+curr_y] = true
	if math.random(1,10) = 3 then
		stop_points[curr_x*base+curr_y] = true
		return
	end
	-- os.execute("cls")
	-- print_map()
	local permutation = {1,2,3,4}
	for i=1, 4 do
		local l = math.random(1,4)
		local r = math.random(1,4)
		permutation[l], permutation[r] = permutation[r], permutation[l]
	end

	for i=1, 4 do
		local next_x = curr_x+_xy[permutation[i]]
		local next_y = curr_y+_xy[permutation[i]+1]
		if  next_x>=1 and next_x=size and
			next_y>=1 and next_y=size and
			road[next_x*base+next_y] == nil then

			local 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] = true
			dfs(next_x, next_y)
		end
	end
end

local ans_geted = false
local parent = {}
function get_ans(curr_x, curr_y)
	-- print(curr_x, curr_y)
	for i=1, 4 do
		next_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 and
			next_y >= 1 and next_y = size and
			road[next_x*base+next_y] and
			parent[next_x*base+next_y]==nil
		then
			parent[next_x*base+next_y] = curr_x*base+curr_y
			get_ans(next_x, next_y)
		end
	end

end

local ans_road = {}
function print_map()
	for i=0, size+1 do
		local line = ""
		for j=0, size+1 do
			if ans_road [i*base+j] then
				line = line..".."
			elseif road[i*base+j]==true then
				line = line.."  "
			else
				line = line.."HH"
			end
		end
		print(line)
	end
end

stop_points[1*base+1] = true

-- create maze
repeat
	local has_point = false
	for v,_ in pairs(stop_points) do
		has_point = true
		stop_points[v] = nil
		dfs(math.floor(v/base), v%base)
		break
	end
	-- print(has_point)
until not has_point


get_ans(1,1)
parent[1*base+1] = nil
print("")
-- 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))
-- end
print("")
local x = size
local y = size
repeat
	-- print(x,y)
	ans_road[x*base+y] = true
	local v = parent[x*base+y]
	x = math.floor(v/base)
	y = v%base
until --[[(x==1 and y== 1)]] not parent[x*base+y]
ans_road[1*base+1] = true

print_map()

效果:

4141:


8989

到此這篇關(guān)于Python實(shí)現(xiàn)隨機(jī)生成迷宮并自動(dòng)尋路的文章就介紹到這了,更多相關(guān)Python生成迷宮并自動(dòng)尋路內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Javascript結(jié)合Vue實(shí)現(xiàn)對(duì)任意迷宮圖片的自動(dòng)尋路
  • C++ DFS算法實(shí)現(xiàn)走迷宮自動(dòng)尋路
  • PHP樹(shù)的深度編歷生成迷宮及A*自動(dòng)尋路算法實(shí)例分析

標(biāo)簽:牡丹江 南寧 揚(yáng)州 迪慶 聊城 楊凌 撫州 六盤(pán)水

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Python實(shí)現(xiàn)隨機(jī)生成迷宮并自動(dòng)尋路》,本文關(guān)鍵詞  Python,實(shí)現(xiàn),隨機(jī),生成,迷宮,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Python實(shí)現(xiàn)隨機(jī)生成迷宮并自動(dòng)尋路》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于Python實(shí)現(xiàn)隨機(jī)生成迷宮并自動(dòng)尋路的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    日本蜜桃在线观看视频| 亚洲999一在线观看www| 久久国产精品亚洲| 久久精品视频观看| 国产一区不卡视频| 91国产精品视频在线| 国产av麻豆mag剧集| 国产视频一区二区三区四区| 动漫黄在线观看| 舔着乳尖日韩一区| 欧美亚洲国产一区| 婷婷六月天丁香| 国产麻豆精品| 国产va免费精品高清在线观看| 99热只有这里有精品| 色婷婷久久一区二区三区麻豆| 日本www视频在线观看| 久久久久成人片免费观看蜜芽| 国产探花在线免费观看| 亚洲av无码国产精品久久不卡| 免费大片在线观看www| 欧美体内谢she精2性欧美| 国产成人av一区二区| 亚洲免费视频二区| 国产婷婷视频在线| 亚洲精品国精品久久99热一| 国产精品一区在线看| 青青草国产精品视频| www.国产免费| 播放灌醉水嫩大学生国内精品| 欧美国产极品| 日韩欧美亚洲范冰冰与中字| 999精品视频一区二区三区| 久久久久久一级片| 黄色网战入口| 午夜欧美理论片| 国产精品一区二区三区www| 日韩精品一区二区三区swag| 欧美在线短视频| 蜜桃福利午夜精品一区| 国产日韩视频在线| 久草福利在线视频| 国产精品亚洲а∨天堂免在线| 国产日韩欧美另类| 6080亚洲精品一区二区| 免费电影日韩网站| 成人蜜桃视频网站网址| 无尽裸体动漫2d在线观看| 亚洲精品97久久久babes| 亚洲人成网站色ww在线| 先锋影音资源综合在线播放av| 国产在线精品一区在线观看麻豆| 日韩精品视频在线看| 26uuu久久噜噜噜噜| 天堂网成人在线| 神马久久久久久久久久| 女人丝袜激情亚洲| 97高清免费视频| 中文字幕精品一区二区精| av毛片午夜不卡高**水| 黄色免费一级视频| 亚洲开发第一视频在线播放| 国产一区二区三区播放| 麻豆精品在线看| 美女毛片一区二区三区四区最新中文字幕亚洲| 少妇大叫太粗太大爽一区二区| 日韩妆和欧美的一区二区| 国产精品影视| 国产精品久久久久久一区二区| jjzz黄色片| 爆乳熟妇一区二区三区霸乳| 国产一级二级三级精品| 日韩成人av影院| 成人中文字幕在线播放| 亚洲美女爱爱视频| 99这里只有精品| 欧美性videos| 精品国产一区二区三区四区精华| 国产黄色片在线播放| 香港欧美日韩三级黄色一级电影网站| 又紧又大又爽精品一区二区| 三上悠亚免费在线观看| 波多野结衣中文一区| 国模私拍一区二区三区| 天堂av中文在线资源库| 写真福利片hd在线播放| 九九视频免费看| 日韩欧美伦理| www.久久撸.com| 黑人巨大精品欧美一区二区桃花岛| 黄色一级一级片| 日韩欧美国产另类| 国产亚洲精品成人a| 亚洲 国产 日韩 综合一区| 日本成a人片在线观看| 国产视频亚洲| 欧美性精品220| 欧美在线观看一区二区| 亚洲a级精品| 中文字幕成人在线| 国产成人av一区| 色哟哟无码精品一区二区三区| 亚洲天堂一区二区三区| 男人久久精品| 久草免费在线观看| 一区视频免费观看| 久久国产精品偷| 亚洲欧美电影一区二区| 日本中文字幕第一页| 久久精品综合网| 欧美三区不卡| 国产精品96久久久久久又黄又硬| 成人妖精视频yjsp地址| 在线码字幕一区| 亚洲自拍偷拍图区| 最近2019中文免费高清视频观看www99| 性色av浪潮av| 无罩大乳的熟妇正在播放| 欧美成年人视频网站欧美| 国产又粗又长| 岛国片免费观看| 亚洲天堂成人在线| 夜色福利资源站www国产在线视频| 一区二区精品视频在线观看| 亚洲一区在线免费| www.久久久久久久久久久| 极品人妻videosss人妻| 不卡毛片在线看| 特黄aaaaaaaaa毛片免费视频| 欧美美女视频在线观看| 北岛玲heyzo一区二区| 欧美一级免费在线| 欧美色图一区二区三区| 天堂蜜桃91精品| 亚洲av无码一区二区三区人| 日韩大片在线观看| 78m国产成人精品视频| 九九热视频免费| 一级特黄性色生活片| 亚洲乱码在线观看| 韩国三级日本三级少妇99| 久久字幕精品一区| 在线观看91精品国产入口| 伊人无码高清| 成人在线视频亚洲| 亚洲免费在线播放视频| 麻豆导航在线观看| 天堂√中文最新版在线| 日韩色图在线观看| 免费在线一区二区| 在线精品视频一区| 亚洲国产婷婷综合在线精品| 可以在线观看的av网站| 蜜桃传媒视频麻豆一区| 91麻豆精品国产| 日韩中文字幕免费看| 国产精品久久久久久久久免费| 国产免费大片| 亚洲国产精品v| 久久婷婷丁香| 亚洲一区在线播放| 国产精品老牛影院在线观看| 亚洲成a人v欧美综合天堂下载| 天堂影院在线| 成r视频免费观看在线播放| 国产91色在线播放| 成人精品久久一区二区三区| 日韩片之四级片| 日本高清久久天堂| 欧美视频免费在线| 国产porn在线| 午夜视频一区在线观看| 欧美激情在线狂野欧美精品| 中文字幕第一页在线视频| 精品动漫一区二区三区| 亚洲国产一区二区三区在线播| 综合图区亚洲白拍在线| 日本黄色激情视频| 麻豆av在线播放| 欧美成人午夜电影| 亚洲精品高清无码视频| 日本不卡视频一二三区| 欧美大电影免费观看| 国产一区二区三区中文| 成人免费直播| 曰本三级日本三级日本三级| 日韩xxx高潮hd| 国产高清免费观看| 日韩女优在线播放| 在线观看福利片| 成人免费视频国产在线观看| 成人在线视频一区| 国产精品免费视频一区一| 天堂99x99es久久精品免费| 日韩中文字幕综合| 99视频国产精品免费观看a| 国产精品视频免费在线| 成久久久网站| 亚洲精品久久7777| 国产激情91久久精品导航| 女性隐私黄www网站视频| 国产91精品高潮白浆喷水| 亚洲精品福利网站| 日韩专区一区二区| 久久综合国产精品| 盗摄牛牛av影视一区二区| 国产又粗又大又长| 亚洲美女在线免费观看| 无码人妻一区二区三区在线视频| 少妇精69xxtheporn| 日本不卡一区二区三区四区| 国产免费观看久久| 国产免费黄色网址| 97在线视频国产| 成 人 黄 色 小说网站 s色| 四虎www成人影院观看| 一区二区三区四区欧美日韩| 成人黄色一级大片| 无码国产精品一区二区高潮| 欧美 日韩 国产 一区| av中文字幕在线看| 成人欧美一区二区三区视频| 夜夜操 天天摸| 中文字幕国语官网在线视频| 国产又粗又猛又爽又黄av| 激情亚洲色图| 性直播体位视频在线观看| 德国极品另类| 女人成午夜大片7777在线| 制服丝袜av在线| 国模一区二区三区私拍视频| 中文字幕一区二区三区四区欧美| 国产一区二区三区小说| www在线观看免费| 18涩涩午夜精品.www| 国内外成人在线| 无码少妇一区二区三区芒果| 欧美成人tv| 免费在线看大片无需流量| 毛片免费不卡| 久久久精品999| 毛片网站网址| 女人床在线观看| 久久久久久久久久久久av| 粉嫩av免费一区二区三区| 精品少妇久久久| av大片免费看| 久久综合综合久久| 欧美激情专区| 久久久免费视频网站| 成年人视频免费看| 国产不卡免费视频| 亚洲国产精品一区二区www在线| 亚洲成av人片在线| 国产福利成人在线| 丝袜免费视频| 国产精品裸体瑜伽视频| 国产精品视频一区二区三区,| 欧美丰满老妇厨房牲生活| 精品久久久久久一区二区里番| 一区二区三区日本视频| 亚洲高清色图| 九一国产精品视频| 久草福利视频在线| 日韩高清电影一区| 未满十八勿进黄网站一区不卡| 亚洲韩国欧洲国产日产av| 久久久久久久久久一区二区| 久久精品久久久久久| av电影免费看| 日韩在线一二三区| 亚洲美女视频网站| 亚洲午夜久久久影院| 国产精品v欧美精品∨日韩| 亚洲精品无码久久久久久久| 最近中文字幕免费观看| 亚洲日本青草视频在线怡红院| 国产福利在线观看视频| jlzzjlzz欧美| 欧美一级片在线| 涩爱av在线播放一区二区| 99香蕉国产精品偷在线观看| 亚洲一级二级三级在线免费观看| 国产精品欧美在线| 久草手机在线视频| 欧美在线视频一区| 日韩中文字幕在线视频播放| 99只有精品| 国产精品午夜久久久久久| 特大巨黑人吊性xxxxn38| 人妻av无码专区| 成人在线视频网站| 天堂av中文在线资源库| 成人免费看黄| 欧美午夜精品一区二区三区电影| 国产精品久久国产精麻豆99网站| 911亚洲精选| 99re6在线视频精品免费| 日本综合精品一区| 国产伦精品一区二区三区视频女| 热久久这里只有| 99久久免费国产| 四虎国产精品免费久久5151| 日韩一级av毛片| 在线观看免费高清视频97| 亚洲国产精品嫩草影院久久| 一区二区三区在线免费观看| 黄色影院一级片| 欧美亚洲视频一区| 国产综合一区二区| 欧美老肥婆性猛交视频| 成人黄色短视频| 91中文在线观看| 亚洲视频自拍偷拍| 中文字幕日韩一区| igao视频网在线视频| 一区二区不卡在线视频 午夜欧美不卡'| 一区二区三区视频免费视频观看网站| 久久99亚洲网美利坚合众国| 一区二区三区在线免费播放| 宅男噜噜噜66国产免费观看| 黑料不打烊so导航| 2019一级黄色毛片免费看网| 精品久久久久久久久久中文字幕| 在线免费观看成人网| 亚洲黄色精品| 久久午夜鲁丝片午夜精品| 一区二区三区的久久的视频|