160 likes | 495 Views
3D 遊戲程式設計 期末專案 DEMO. 98703023 資科三 陳柏錡 98703028 資科三 黃時耘 98703046 資科三 施建帆. 遊戲介紹. 有鑑於 tetris battle 的風行, 在經過組員討論後 決定製作 3 D版的俄羅斯方塊。 理想目標:做出3D版的俄羅斯方塊(底部為一平面, 方況有依據x、y、z軸旋轉的方式,要 疊滿一平面才會消一行) 實際結果:礙於旋轉以及判定等過於麻煩,所以還是 只有寫出利用方塊來製作俄羅斯方塊(不 同於一般只是圖片). 程式編寫流程簡介. 畫面產生 方塊 建模 往下掉落
E N D
3D遊戲程式設計期末專案DEMO 98703023 資科三 陳柏錡 98703028 資科三 黃時耘 98703046 資科三 施建帆
遊戲介紹 有鑑於tetrisbattle的風行,在經過組員討論後決定製作3D版的俄羅斯方塊。 理想目標:做出3D版的俄羅斯方塊(底部為一平面, 方況有依據x、y、z軸旋轉的方式,要 疊滿一平面才會消一行) 實際結果:礙於旋轉以及判定等過於麻煩,所以還是 只有寫出利用方塊來製作俄羅斯方塊(不 同於一般只是圖片)
程式編寫流程簡介 • 畫面產生 • 方塊建模 • 往下掉落 • 停留在底部並判定高度 • 左右移動&旋轉(!) • 邊界 • 方塊碰撞判定(!) • 消行 • 音效&上色 • 增加遊戲性
(一)畫面產生 • 畫面 • 直接利用老師提供的lab當範例做出世界 • 邊界產生 • 利用glutsoildCube繪製邊界
(二)方塊建模 • 方塊繪製 • 一樣利用glutsoildCube的方式來製作出各種方塊 • 利用kind的方式來繪製不同的方塊 • 在一剛開始的時候利用rand的方式來決定種類
(三)往下掉落 • Drop • 隨著時間軸行進,利用timefuction使方塊持續掉落 • 當高度小於1時就回到原始高度從新繪製方塊
(四)停留在底部並判定高度 • 停留底部 • 我們利用array來儲存當前位子是否有方塊 • 再利用for迴圈繪製已經掉落的方塊 • 判定高度 • 原本是利用一個array來儲存各x軸的高度 • 出現問題
(五)左右移動&旋轉(!) • 移動 • 非常簡單,只是改一下方塊x軸上的值 • 旋轉 • 非常困難 • 原本想利用直接改變方塊位置(出現問題!) • 解決辦法 • 繪製更多種類的方塊(又出現更多的麻煩) • 邊界旋轉問題
(六)邊界 • 判定邊界 • 不能讓方塊移出原本限定的範圍 • 大於xx、小於yy即可
(七)方塊碰撞判定(!) • 上下 • 每當往下掉落前都須先判定下一高度是否已有方塊存在 • 左右 • 同上,只是難度大增 (方塊形狀不一以及要判定的點很多)
(八)消行 • 判定 • 當每跑完一次現有的方塊時,多家判定是否湊滿一行 • 另用雙層迴圈的方時由下往上判定 • 如果消行,當前高度以上的方塊高度都減1
(九)音效&上色 • 音效 • 利用playsound的方式來播放背景音樂、音效 • 問題:無法同時播放BGM與音效 • 顏色 • 上課沒學好,不會做 • 只有簡單的單色方塊,沒有陰影以及光影變化
(十)增加遊戲性 • 難度 • 會隨著遊戲進行,掉落速度越來越快(感覺不出來..) • 關卡 • 設計了幾個簡單的關卡,可以讓遊戲更有趣 • 空白鍵 • 每個俄羅斯方塊都有的功能(〞.ω.)a
(十一)未完成部分 • 分數 • 不知道如何顯示文字 • 結束畫面 • 沒有game over跳出來啊! • Hold&Forwarding • 該有的功能卻沒有╮(﹋﹏﹌)╭ • 畫面精細度 • 光影變化、方塊貼圖效果、背景
(十二)後記 • 寫專案的過程 • 總是有人一直在玩蛋蛋龍(FB遊戲) • 期末考的壓力(都在寫程式,沒有讀書啊〒△〒) • 提前爆肝(熬夜討論以及分工寫程式) • 永遠解決不完的BUG(現在還是有莫名其妙的問題)