サイズを与えるとそのサイズの迷路を生成して返す関数を作ってクラス化しました。
ソースをGoogleドキュメントに載せました。
ソースファイル名:c103maze.py
クラス名:Maze
迷路自動生成(壁伸ばし法)クラス
・使い方
迷路クラスのインスタンスを作って「getmaze」関数に迷路のサイズ(横&縦)を渡すと迷路データのリストが返されます。
迷路クラス呼び出しのサンプルプログラムを作ってみました。
こちらのソースもGoogleドキュメントに載せました。
迷路自動生成クラス呼び出しテスト
-ソース------------------------------------------------------
T105maze.py 迷路自動生成クラス呼び出しテスト
import pyxel as px
from c103maze import Maze
class App():
def __init__(self):
#self.h,self.wは5以上の奇数!
self.h=131 #迷路の縦幅(外周込み)
self.w=201 #迷路の横幅(外周込み)
px.init(610,400,title="迷路自動生成クラス呼び出しテスト"+f"({self.w}*{self.h})",display_scale=2)
px.mouse(True)
self.sttflg=0 #開始フラグ
self.lmap=[]
px.run(self.update,self.draw)
def update(self):
if self.sttflg==0: #開始前の場合
wk=Maze()
self.lmap=wk.getmaze(self.w,self.h)
self.sttflg=1 #開始済にする
elif px.btnp(px.MOUSE_BUTTON_RIGHT): #開始済時に右クリックされた場合
self.sttflg=0 #開始フラグ初期化
self.update() #update処理
def draw(self):
px.cls(0)
#迷路描画
for j in range(self.h):
for i in range(self.w):
if self.lmap[j][i]==1:
px.rect(3+i*3,3+j*3,3,3,7) #壁を四角で表示
App()
-------------------------------------------------------
以上です。