生成規則:肯定起始點後,隨機選一個方向進行訪問,而後重複以上循環。我加了個條件,不會出現反方向訪問的狀況,打個比方,若是它前一步是往右走,那下一步就不能往左走了。(說到左右,我想推薦一下《碰見(鋼琴版)》這首歌,它是《向左走向右走》的主題曲,我以爲挺好聽(可是你不必定這麼認爲))git
容許重複訪問相同的Grid。沒有中止生成的條件。github
如圖(沒有雙緩衝,屏幕反覆刷新,閃屏嚴重,所以我縮小了尺寸,加上了一個Sleep(),勉強截到一張)算法
決定仍是循環必定次數後再進行渲染,不過不知道是哪裏寫錯了,仍是隨機數生成器有問題,此次它給了我一個可愛的圈:blog
我以爲問題應該出在這兒,因爲CPU實在太快致使返回的非精確時間都是相同的值:it
因此我修改了一下種子,令我驚喜的是,這樣簡單的一個算法返回了只要修改種子就能返回許多神奇的圖案:編譯
而後,我在UP和DOWN上加上了visited檢測,可是沒有在LEFT和RIGHT上加:隨機數
更改seed爲std::clock()*ran_num+std::cos(ran_num+4)+std::sin(ran_num)後結果更加有趣了:渲染
代碼已經上傳至github,你能夠修改裏面的參數編譯,而後查看效果,注意每一個循環後面的Sleep()的參數不要超過3,由於每次加1你可能都要所以等待二三十秒才能出結果。循環
還有,要想生成不一樣的圖案,你必須修改種子而後從新編譯,抱歉,可能會花費額外的3-6秒鐘,可是我目前尚未想到解決方案使隨機數生成器不徹底依賴時間。im
(感想:忽然感受有機生命體的產生沒這麼偶然了。。對了,說到有機,今天老師開始上有機化學了!看藥品說明書的時候終於看得懂鍵線式了)
祝我本身生日快樂吧,今天是我存在於這個世界上的第16年!
還有一件事,明天我若是有時間的話會研究一下迷宮生成,初步打算是使用深度優先算法和隨機Prim算法實現。
------------------------------------------------------------------------------如下內容寫於2019/3/2 17:28
如今每次循環結束只渲染更新的部分,因此不會閃屏了,即便不用Sleep也是如絲般順滑(每一個循環之間時間<=60ms),對於我這樣的人類來講足夠了。
順便展現下,同樣東西失去控制時的樣子:
它在1s以內就幾乎填滿了40x40的區域!