C .
ODE
G
AMELET
# 隨機迷宮生成演算法(Random Maze Generation Algorithm) 突然就想來寫個迷宮,自從我會寫程式之後,一直沒有嘗試過隨機生成迷宮,這是在我真正接觸程式之前,就覺得很酷的東西,結果現在才第一次寫這個。 這次是邊寫邊想的,意外地寫得很順利,寫完之後才去查了一般隨機生成迷宮都是怎麼寫的,然後我找到最接近本次寫法的應該是**深度優先搜尋法(Depth-first Search)**,只是不同的在於我遇到死路時,是從過去經過的點當中,隨機取一個點出來繼續生成路線,而深度優先搜尋法是退回到上一格,再繼續生成路線,所以相較於深度優先搜尋的隨機性可能更高一些。 不確定這個演算法有沒有什麼名字,有誰知道的話可以告訴我。 ### 步驟 1. 隨機選一個點。 2. 檢查有沒有鄰近格(非開放格,也非封閉格)。 - 如果有,將當前的位置設為開放格,並移動到鄰近格,重複步驟 2。 - 如果沒有,將當前的位置設為封閉格,並執行步驟 3。 3. 檢查有無開放格。 - 如果有,則隨機取一個作為當前位置,並執行步驟 2。 - 如果沒有,則結束演算法。 ## 其他實作 [Gazuwa 派對](https://paint.gamelet.online/?version=0.0.19) [浮冰](https://paint.gamelet.online/?version=0.0.16) [迴旋鏢實作](https://paint.gamelet.online/?version=0.0.15) [布雷森漢姆直線演算法](https://paint.gamelet.online/?version=0.0.13) [平台遊戲的地圖碰撞](https://paint.gamelet.online/?version=0.0.12) [可拖曳、拆分背包實作](https://paint.gamelet.online/?version=0.0.11) [網格地圖碰撞測試](https://paint.gamelet.online/?version=0.0.10) [環境陰影實作(人物面向版)](https://paint.gamelet.online/?version=0.0.8) [環境陰影實作](https://paint.gamelet.online/?version=0.0.7) [Gazuwa 模擬器](https://paint.gamelet.online/?version=0.0.4) [線](https://paint.gamelet.online/?version=0.0.2) ## Authors **[cook14709](/profile/cook14709)**
# CgEventsExp 本模組用於 CG 編輯器的擴充。 可至專案內 **Test** 資料夾,查看各動作、檢查的範例。 ### 動作 - 更新 - 顯示 - 更新文字 - 更新顯示物件 - 更新畫面遮罩 - 攝影機 - 設置攝影機焦點 - 系統 - 控制台輸出 - 儲存Cookies - 讀取Cookies - 開啟URL - 取得日期 - 輸出檔案 - 上傳檔案 - 彈出視窗 - 彈出確認視窗 - 彈出選項視窗 - 彈出輸入視窗 - 彈出複製字串視窗 - 彈出載入視窗 - 關閉彈出視窗 - 彈出複數字串輸入視窗 - PIXI 視窗 - 顯示自訂義 PIXI 視窗 - 關閉自訂義 PIXI 視窗 - 背包視窗 - 顯示背包視窗 - 更新背包視窗 - 變數 - 儲存區域變數 - 儲存全域變數 - 複數儲存區域變數 - 複數儲存全域變數 - 複數儲存物件變數 - 儲存 Json 變數 - 補間動畫 - 數學 - 計算兩點距離 - 函數 - Array.splice() - Array.slice() - JSON.stringify() - JSON.parse() - Object.keys() - Window.btoa() - Window.atob() - String.split() - 音效 - 加載 URL 音訊 - 播放 URL 音效 - 設置 URL 音樂 - 音效濾鏡 - 播放音效 - 特效 - 文字特效 - 逐字動畫 - 文字捲動動畫 - 滾動文字特效 - 特殊工具 - 背包 - 設置背包 - 設置物品 - 設置背包物品 - 取得背包資料 - 整理背包 - 伺服器 - 狀態 - 儲存玩家狀態 - 取得玩家狀態 - 儲存玩家狀態 - 使用者名稱 - 取得玩家狀態 - 使用者名稱 - 分數 - 取得分數 - 上傳分數 - 使用者 - 取得使用者 - 道具 - 隱藏我的背包 - 事件 - 觸發事件 - 權重觸發事件 - 移除 - 移除物件 - 移除全域變數 - Base - 資源管理器 - 取得文字 - 取得 JSON - 隨機數產生器 - 設置隨機數產生器 - 使用隨機數產生器 - 柏林噪聲 - 設置柏林噪聲 - 使用一維柏林噪聲 - 使用二維柏林噪聲 - 使用三維柏林噪聲 ### 觸發 - 彈出視窗 - 視窗確認 - 視窗關閉 - PIXI 視窗 - 按下 PIXI 自訂義視窗 - 背包視窗 - 背包視窗選擇 ### 檢查 - 虛擬工具 - 背包 - 檢查背包 - 迴圈 - For Index - For...in - 變數 - 檢查物件函數結果 - 檢查物件屬性數量 ## 作者 **[cook1470](/profile/cook1470)** ### **[More modes](/profile/[email protected])** # CgEventsExp The engine of CgEvents. You can go to the Test folder in the project to view examples of actions and inspections. ### Actions - Update - Display - Update Text - Update Display - Update Root Mask - Camera - Camera Set Focus - System - Console - Set Cookies - Get Cookies - Open Url - Get Date - Export File - Upload File - Dialogs - Show Confirm Dialog - Show Select Dialog - Show Input Dialog - Show Copy String Dialog - Show Loading Dialog - Close Dialog - Show Inputs Dialog - PIXI Dialog - Show Custom PIXI Dialog - Close Custom PIXI Dialog - Backpack Dialog - Show Backpack Dialog - Update Backpack Dialog - Variable - Set Local - Set Global - Set Local Array - Set Global Array - Set Object Array - Set Json - Tween - Math - Distance Formula - Functions - Array.splice() - Array.slice() - JSON.stringify() - JSON.parse() - Object.Keys() - Window.btoa() - Window.atob() - String.split() - Sound - Load URL Sound - Play URL Sound - Set URL Music - Sound Filter - Play Sound - Effects - Text - Typing Animation - Text Scrolling Animation - Scrolling Text Effect - Special Tools - backpack - Set Backpack - Set Item - Bag Set Item - Get Backpack - Sort Backpack - Server - State - Set User State - Get User State - Set Username State - Get Username State - Scores - Get Score - Submit Score - User - Get User - Items - Hide Backpack - Event - Trigger Event - Weight Trigger Event - Remove - Remove Object - Remove Global Var - Base - Resource Manager - Get Text - Get JSON - Random Generator - Set Random Generator - Use Random Generator - Perlin Noise - Set Perlin Noise - Use 1D Perlin Noise - Use 2D Perlin Noise - Use 3D Perlin Noise ### Triggers - Dialogs - Dialog Confirm - Dialog Close - PIXI Dialog - PIXI Button Dialog Confirm - Backpack Dialog - Backpack Dialog Select ### Checks - Special Tools - backpack - Check Backpack - Loop - For Index - For...in - variable - Check Object Function Result - Check Object Properties Count
# TwilightWarsEventsExp 本專案為光暈戰記的擴充模組,主要是建立在 **[TwilightWarsLib](/edit/TwilightWarsLib)** 的基礎之上,添加一些小東西。本專案並不包含 **[TwilightWarsEvents](/edit/TwilightWarsEvents)** 模組。 本模組並不會覆蓋原有的動作、檢查,所有本模組新增的檢查、動作等,都會被整合在**光暈戰記 / 擴充包**內,且不會新增任何跟光暈無關的檢查或動作,希望是一個純淨的光暈模組,跟光暈無關的相關事件,有需要的話會在 **[CgEventsExp](/edit/CgEventsExp)** 做更新。 本專案開放查詢原始碼,所有的檢查、動作,皆有在本專案的 **Test** 資料夾內做實際範例,歡迎自行查看使用方法,也歡迎自行進入程式區內,看各個檢查、動作是如何完成。 本人希望弄一個可以讓大家互相交流、維護,甚至更新的這麼一個光暈同人模組,我覺得這樣共同成長,才會讓嘎母變得更成熟,所以如果你有什麼好想法,也都歡迎提供給我。 另外個人創了一個第三方的 **[嘎母討論區(Discord)](https://discord.gg/hZKQzRfPJM)** ,主要是希望大家有一個好的交流平台,可以一起討論一些設計,除了光暈,還有其他非光暈的專案等等,甚至是能夠一起合作,讓作者們有機會推出更多優質的作品。 有任何 BUG 的話都歡迎回報,會盡量在最短的時間內處裡掉。 **[Google 試算表 - 光暈戰記](https://docs.google.com/spreadsheets/d/1kRPdI6caisjZuHJGmCjB3kHBveR2RVAeTJoyCmqOZVs/edit?usp=sharing)** 本專案有些需要查詢的地方,例如武器道具的索引值等等,可以由此試算表查詢。 @ - 不支援開放式遊戲室、觀戰系統,可能會造成加入遊戲室者、觀戰者遊戲卡住。 ## 事件表工具 - ImageIndex 查詢器 ## 動作 - 角色 - 新增角色 - 角色說話 - 清除角色對話 - 角色持有金幣 - 取得角色屬性 - 角色發動攻擊 - 角色跳至定點 - 取得角色身體動畫 - 設定角色身體動畫 - 移動角色位置 - 角色重生位置 - 人物走至定點 - 人物面向 - 設定AI參數 - 範圍傷害/治療 - 角色設置彈匣 - 替換角色部件 - 跟隨人物 - 尋找前往目標 - 角色加減血 - 人物裝備武器 - 施展技能 - 取得擊殺數 - 角色切換主副手 - 集氣並施展技能 - 行為 - 搖頭 - 閃現 - 任務流程 - 任務完成 - 任務失敗 - 遊戲繼續 - 遊戲暫停 - 略過事件按鈕 - 設定遊戲規則 - 特效 - 新增標題文字 - 移除特效 - @自訂動態特效 - 自訂動態特效說話 - 進度條特效 - 操控進度條 - 角色 - 角色濾鏡 - 眼冒金星特效 - @集氣特效 - 初始人物色調 - 外流生命值特效 - 影分身特效 - 角色頭特效 - 技能 - 光彈特效 - 震地特效 - 衝擊波特效 - 設置角色燃燒 - 噴射火焰 - 黑龍 - 黑龍波 - 血爆特效 - 炸彈爆炸特效 - 地圖 - 視野縮放 - 爆炸特效 - 塵土飛楊特效 - 治療特效 - 散發光環特效 - 飛濺特效 - 爆炸痕跡特效 - @自訂地圖特效/貼圖 - 移除地圖特效/貼圖 - @自訂特效/貼圖濾鏡 - 新增地圖動畫 - 操控地圖動畫 - 隨機取得可行走座標 - 火焰燃燒特效 - 煙霧上升特效 - 煙火特效 - 地圖冰凍特效 - 基礎飛鳥特效 - 快跳文字特效 - 替身木樁特效 - 畫面 - 畫面遮色 - 畫面濾鏡 - 下雨特效 - 打雷特效 - 目標提示特效 - 魄力標題動畫特效 - 武器道具 - 新增武器道具 - 新增可拾取道具 - 取得骰子點數 - 發射火箭 - 設定道具屬性 - 移除地板武器道具 - 修復盾牌 - 地圖 - 取得滑鼠相對位置 - 增加可走區域 - 新增地圖標示文字 - 移除地圖標示文字 - 新增地圖物件 - 移除地圖物件 - 新增地圖標示箭頭 - 取得地勢高度 - 取得隨機座標 - 路徑搜尋 - 地圖物件說話 - 設定地圖格子 - 設定臨時地圖格子 - 移除可走區域 - 地圖機關 - 新增燭火 - 新增拉桿開關 - 新增告示牌 - 新增可推石塊 - 新增淹水機關 - 操作拉桿開關 - 系統 - 離開遊戲 - 下一場遊戲 - 執行光暈事件表 - 音訊 - 播放光暈戰記音效 - 設置光暈戰記音樂 - 特殊工具 - 數據化地圖 - 新增數據化地圖核心 - 新增數據化地圖資料 - 移除數據化地圖資料 - 取得數據化地圖物件 - 更新數據化地圖區域大小 - 生成數據化地圖 - 儲存數據化地圖至 Cookies - 從 Cookies 讀取數據化地圖 - 角色錄製 - 開始錄製 - 停止錄製 - 開始播放 - 計算 - 計算角色位置 - 視窗 - 任務提示視窗 - 初始化任務提示視窗 - 設置任務提示格內容 ## 檢查 - 角色 - 角色位置 - 角色數值比較 - 人物面向 - 角色所在區域 - 說話內容 - 角色狀態 - 角色離開玩家視線 - 地圖 - 可行走座標 - 滑鼠位置 - 檢查地勢高度 - 可通過路徑 - 可通過路徑(路徑搜尋) - 找出所有座標 - 武器道具 - 骰子點數 - 特效 - 自訂動態特效位置 - 自訂動態特效所在區域 ## 觸發 - 角色 - 角色進入戰場 - 角色死亡 - 角色發動攻擊 - 角色受傷 - 角色座標改變 - 地圖機關 - 拉桿開關 - 告示牌按鈕 - 特效 - 自訂動態特效撞到障礙物 - 自訂動態特效碰到角色 - 自訂動態特效抵達目的地 - 自訂動態特效時間到 - 技能 - 黑龍消失 - 武器道具 - 拾取武器道具 - 掉落武器道具 - 骰子點數 ## 作者 **[cook1470](/profile/cook1470)** ### **[More modes](/profile/[email protected])**
# 瓦片地圖引擎(TilemapEngine) 瓦片地圖,是由一格一格的方塊所組成,本模組提供了簡單的函示庫,可以快速的渲染出一個瓦片地圖。 ## 讓我們開始吧! 本模組結合了 CgEventsEngine(CG事件表引擎),提供一些簡單的事件表動作,若不寫程式的話,也可以進行一些基本的操作。 ### 如何開始? 一般專案在新建完成後,都一定會有一個叫做 app.ts 的檔案,寫程式的位置如下表示。 ```typescript export class App { constructor() { // 程式寫在這裡,例如: console.log("Hello CG.") } } export const APP = new App(); ``` ### 創建瓦片地圖 以下為創建瓦片地圖,並將其顯示到舞台中的程式範例。 ```typescript // 新增一個瓦片地圖的資源物件。 let mapResource = new TilemapResource(); // 新增地圖的圖片資源到資源物件中,並且等待瀏覽器加載完成。 mapResource.addTileset('TileMapEngine.image.FD_Free_Tiles') .loadTileset(() => { // 加載完後才會開始做這裡的事情。 // 初始化舞台大小。 CG.Base.pixi.initialize(600, 600); // 將地圖資源初始化一個空地圖,長寬為 10x10,瓦片大小為 48,圖層有 3 個。 mapResource.emptyMap(10, 10, 48, 3); // 把圖層 0 的所有瓦片換成瓦片集 0 中,第 3 個瓦片。 mapResource.setLayerAllTile(0, 0, 3); // 新增一個瓦片地圖,並使用剛剛的地圖資源。 let tilemap = new Tilemap(mapResource); // 將瓦片地圖放置到舞台中。 CG.Base.pixi.root.addChild(tilemap); }) ``` ### 匯出地圖資料 地圖資源的資料,可以使用函數來匯出 JSON,並且將其下載成檔案。 ```typescript // 將地圖資料匯出成 JSON,並下載成檔案。 let json = mapResource.exportJson(); let element = document.createElement('a'); element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(JSON.stringify(json))); element.setAttribute('download', 'map' + '.' + 'json'); // map 為檔案名稱, json 為副檔名,皆可隨意定義。 document.body.appendChild(element); element.click(); document.body.removeChild(element); ``` ### 匯入地圖資料 除了生成空白地圖,也可使用檔案匯入地圖資料來生成以前儲存的地圖。 ```typescript let mapResource = new TilemapResource(); // 定義地圖資源路徑。 let mapSource = 'test/map.json'; // 使用 resourceManager 匯入專案資源,後方填入地圖資源路徑。 CG.Base.resourceManager.addAppSource(mapSource); mapResource.addTileset('TileMapEngine.image.FD_Free_Tiles') .loadTileset(() => { CG.Base.pixi.initialize(600, 600); // 使用 resourceManager 取得專案資源的 JSON,並將其匯入地圖資源中。 let json = CG.Base.resourceManager.getJSON(mapSource); mapResource.importJson(json); let tilemap = new Tilemap(mapResource); CG.Base.pixi.root.addChild(tilemap); }) ``` ### 編輯地圖屬性、材質 若要以程式對瓦片地圖進行編輯,可參考下列簡易的示範。 其餘更多函示詳細說明,皆有在函示上進行備註,可自行參閱。 ```typescript // 設定座標 (1,2) 的 height 屬性為 1 mapResource.setTileAttribute(1, 2, 'height', 1); // 讀取座標 (1,2) 的 height 屬性,儲存在 height 這個變數中。 let height = mapResource.getTileAttribute(1, 2, 'height'); // 於控制台輸出() 內的內容。 console.log("座標 (1,2) 的高度為 " + height); // 座標 (1,2) 的高度為 1 // 設定圖層 0 座標 (2,2) 的瓦片為,瓦片集 0 中的第 2 個瓦片。 mapResource.setLayerTile(0, 2, 2, 0, 2); tilemap.reRender(); // 重新渲染瓦片地圖。 ``` ## Authors **[cook14709](/profile/cook14709)**
ⒸCode.Gamelet.com | Privacy Policy | Terms of Service