婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

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

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

熱門標(biāo)簽:ai電銷機(jī)器人的優(yōu)勢(shì) 騰訊地圖標(biāo)注沒(méi)法顯示 地圖標(biāo)注自己和別人標(biāo)注區(qū)別 孝感營(yíng)銷電話機(jī)器人效果怎么樣 聊城語(yǔ)音外呼系統(tǒng) 打電話機(jī)器人營(yíng)銷 商家地圖標(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)的同類信息!
  • 本頁(yè)收集關(guān)于Python實(shí)現(xiàn)隨機(jī)生成迷宮并自動(dòng)尋路的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    一区二区欧美在线观看| 欧美日韩精品一区二区在线播放| 日韩一区二区中文字幕| 成人短视频下载| 免费人成在线不卡| 亚洲在线一区二区三区| 国产精品久久久久久久裸模| 日韩三级中文字幕| 欧美日韩日日摸| 91国偷自产一区二区三区观看 | 亚洲成人www| 中文字幕一区日韩精品欧美| 国产欧美视频一区二区三区| 欧美videossexotv100| 欧美一区二区在线看| 欧美剧情电影在线观看完整版免费励志电影| 成人深夜在线观看| 91玉足脚交白嫩脚丫在线播放| 国产激情一区二区三区| 国产精品一区一区三区| 国产乱码精品一区二区三区五月婷 | 欧美日韩一区二区在线观看| 亚洲成人一区在线| 一区二区三区av电影| 一区二区三区成人在线视频| 亚洲欧美激情在线| 亚洲超丰满肉感bbw| 午夜免费久久看| 免费久久99精品国产| 麻豆视频一区二区| 国产一区二区三区综合| 成人免费视频caoporn| 大胆欧美人体老妇| 色综合欧美在线视频区| 91成人免费在线视频| 欧美老年两性高潮| 欧美一区二区免费观在线| 精品福利在线导航| 国产日韩一级二级三级| 国产精品国产三级国产aⅴ入口 | 在线视频一区二区三| 欧美视频在线播放| 2020日本不卡一区二区视频| 成人欧美一区二区三区视频网页| 亚洲精品ww久久久久久p站| 男女男精品网站| 福利电影一区二区三区| 欧美影视一区在线| 精品少妇一区二区三区视频免付费| 久久香蕉国产线看观看99| 亚洲少妇最新在线视频| 日韩av电影免费观看高清完整版| 成人午夜视频在线| 欧美精品在线一区二区三区| 欧美激情一区二区三区在线| 午夜精品一区在线观看| 国产精品香蕉一区二区三区| 欧美系列在线观看| 国产精品网站导航| 免费观看在线综合| 日本精品一区二区三区四区的功能| 日韩久久久久久| 亚洲国产精品嫩草影院| 成人一级黄色片| 日韩视频免费观看高清在线视频| 日韩美女啊v在线免费观看| 久久99国产精品久久99果冻传媒| 91成人在线精品| 国产精品福利av| 久久99国产乱子伦精品免费| 欧美人妖巨大在线| 亚洲黄色片在线观看| aaa欧美日韩| 久久精品人人做人人爽人人| 日韩和欧美一区二区三区| 色噜噜久久综合| 国产精品美女久久久久久久| 国精产品一区一区三区mba桃花 | caoporm超碰国产精品| 精品久久免费看| 日本中文字幕一区二区有限公司| 欧亚洲嫩模精品一区三区| 综合精品久久久| 99在线精品免费| 国产精品久久久久久久久免费桃花| 久久国产欧美日韩精品| 美女视频黄 久久| 欧美在线视频全部完| 欧美一区二区女人| 精品少妇一区二区三区在线播放| 亚洲精品欧美专区| 色婷婷精品大在线视频| 亚洲欧洲韩国日本视频| 丁香一区二区三区| 国产色婷婷亚洲99精品小说| 美女精品一区二区| 7777精品伊人久久久大香线蕉最新版| 亚洲曰韩产成在线| 在线观看视频一区二区欧美日韩| 中文字幕亚洲在| www.日韩精品| 亚洲免费伊人电影| 欧美日韩国产免费| 亚洲精品成人悠悠色影视| 欧洲一区在线电影| 日韩高清在线电影| 成人网页在线观看| 韩国精品久久久| 久久久亚洲精品一区二区三区 | 一区二区三区91| 在线这里只有精品| 亚洲成人av电影在线| 91精品国产黑色紧身裤美女| 日韩精品在线一区二区| 一区二区在线观看视频| 亚洲欧洲www| 国产麻豆91精品| 99久免费精品视频在线观看| 欧美激情在线一区二区| 亚洲欧洲三级电影| 久久久久88色偷偷免费| 久久精品国产精品青草| 欧美日韩免费电影| 亚洲午夜久久久久久久久久久| 一本大道久久精品懂色aⅴ| 日韩高清中文字幕一区| 国产欧美精品区一区二区三区| 91行情网站电视在线观看高清版| 欧美中文字幕一区二区三区 | 国产成人精品亚洲日本在线桃色| 欧美不卡激情三级在线观看| 国产伦理精品不卡| 中文字幕在线观看不卡| 欧美久久久久久久久| 国产福利一区二区三区视频| 一区二区在线观看视频在线观看| 日韩欧美一区二区免费| 国产·精品毛片| 精品国产制服丝袜高跟| 成人性色生活片免费看爆迷你毛片| 一级特黄大欧美久久久| 在线观看视频一区二区欧美日韩| 韩国精品主播一区二区在线观看| 亚洲一区二区五区| 国产午夜精品在线观看| 欧美情侣在线播放| 一道本成人在线| 欧美二区在线观看| 欧美人妖巨大在线| 91麻豆福利精品推荐| 欧美日韩一区二区三区免费看| 五月婷婷久久丁香| 综合久久久久久久| 精品国产髙清在线看国产毛片| 99这里只有久久精品视频| 国产在线精品一区二区| 午夜视频在线观看一区| 国产精品亲子伦对白| 久久午夜免费电影| 欧美一级理论片| 在线亚洲免费视频| 成人sese在线| 国产一区二区三区综合| 男女男精品视频网| 日韩高清在线观看| 天天综合网天天综合色| 亚洲国产综合91精品麻豆| 亚洲欧洲日韩一区二区三区| 国产欧美一区二区精品性色超碰 | av亚洲精华国产精华| 蜜桃91丨九色丨蝌蚪91桃色| 亚洲一区二区在线免费看| 国产精品久久久久久久久晋中| 久久久噜噜噜久久人人看| 精品毛片乱码1区2区3区| 欧美成人激情免费网| 69精品人人人人| 欧美一区二区三区免费在线看| 成人免费三级在线| 欧美系列亚洲系列| 亚洲高清视频在线| 一区二区三区免费看视频| 亚洲欧洲精品一区二区精品久久久| 国产蜜臀av在线一区二区三区| 国产无一区二区| 国产校园另类小说区| 中文字幕一区二区在线观看| 亚洲欧美在线高清| 亚洲男人天堂av网| 亚洲午夜电影在线观看| 午夜激情一区二区| 日本欧美久久久久免费播放网| 日韩成人午夜电影| 国产精品白丝jk白祙喷水网站| 国产成人免费av在线| 91丨九色丨国产丨porny| 欧美日韩亚洲高清一区二区| 日韩精品一区二区三区四区视频| 久久久久亚洲蜜桃| 自拍偷拍国产亚洲|