組員:
983304 蔡易霖
983321 陳欣裕
983326 簡志佳
主題名稱 - 計程車不要來撞我
發揮你的想像力,想像一下
當你正駕駛著一台逆向行駛的轎車,迎面而來的卻是一台接著一台的小黃計程車
此時!你不能剎車更不能轉向,只能勇往直前的閃躲
你有勇氣接受挑戰嗎?
本遊戲娛樂性十足,適合各年齡層使用
結果呈現
遊戲規則
1. 玩家控制一台計程車,可藉由左右鍵閃躲對向來車
2. 來車的數量隨著公里數增加而增加
3. 有三次撞車機會,LIFE 顯示 0 的時候 GAME OVER
4. 最後的分數就是玩家行駛的公里數
控制鍵
[F2] : New game
[←] : left
[→] : right
[Esc] : Exit
遊戲畫面
遊戲一開始詢問是否要全螢幕
loading 畫面,等待遊戲將模型載入
開始遊戲的畫面
左上角為玩家的生命數
右上角為行駛的公里數
發生碰撞就會扣掉生命,並顯示 LIFE -1
這裡可以看到里程碑顯示為 1 KM
當生命數降為 0 時,表示遊戲結束
遊戲影片
實作問題
我主要負責貼圖部份
貼圖的首要步驟就是找圖,這張天空真的是超像的啦,找到之後就開始裁減成2的次方數
glTexParameteri(GL_TEXTURE_2D,
GL_TEXURE_MIN_FILTER, GL_LINEAR);
glTexCoord2f(1.0f, 1.0f); glVertex3f( x, y, z );
然後在用上面三個程式碼完成貼圖,但是,天空貼太小會破圖,貼太大會變形
接著,再試著貼草地的圖,草地太大片,貼一塊會整個模糊,所以採用多塊拼貼
glTexCoord2f(50, 50);
原本連馬路都使用貼圖,但是找不到適合的圖,貼的好不好看也是難題,所以本遊戲內只有天空和草地使用貼圖
另外, 我還協助組員做碰撞偵測
最後,值得一提的是,我們的車子是亂數產生在車道上,所以每次遊戲時的來車會在不固定的位置朝玩家奔馳,還有發生碰撞後會有無敵時間,可以預防連續車禍。
請盡情享受此遊戲帶來的刺激吧
心得與討論
這是計圖的最後一個作業 - final project
經過組員的討論之後,我們決定要做一個老少咸宜的遊戲,並將我們這學期所學的技巧運用在這次的專案裡面。我們用了一開始教的繪畫2D模型(字)、3D模型(道路、里程碑),再來控制相機和模型(開場畫面、左右鍵、F2)、載入模型設定光源(樹、計程車、腳踏車),最後是貼圖(天空、草地)
沒想到經過一番努力之後,真的把這個小遊戲做出來了,不過它有個問題,我們覺得還滿嚴重的,因為它在別台電腦執行時會很 lag,不知道是少了甚麼設備還是我們寫法上的問題,而且目前還無解,害怕助教批改時不能痛快的來一場。
除了 lag 問題之外,實作完成真的很開心,在此特別感謝組員蔡易霖跟簡志佳的努力唷 :)
主題介紹
延續作業三,加入樹木模型並打光。
程式設計與寫作方法
因為是接續作業三,所以原本做好的各館模型都沒更動,只有在紅磚道兩側加了整排樹。
樹的模型是網路上找到的,利用glm讀入模型,接著再打光,就算完成此次作業了。
我沒有幫樹打上綠光,因為這樣整顆樹連樹枝都綠綠得很奇怪,所以我的樹是灰階的,有點像枯樹^__^
執行結果呈現
一開始的初始畫面
從紅磚道看過去的樹
從一館後面看過去的樹
心得與討論
這次作業其實有點麻煩,因為對光源設定還沒有很熟悉,時間又只有一週,所以只有稍微研究一下怎麼用,並沒有深入瞭解改了哪些參數會產生哪些結果,有點可惜,因為期末project好像會用到,這樣勢必要花時間研究了。
不過還好都很乖有去上課,有練習到一點點光源設定,所以還算幸運的完成作業四了。
報告完畢。
主題介紹
如題,必須畫出元智校園各建築物,並讓使用者可以游走校園 ^_^
程式設計與寫作方法
有了上次畫3D一館的經驗後,發現建模好麻煩,然後這次作業時間不長,又要畫6個建築物,所以我都用內建的四方體組合,大概畫出各館的型狀而已;glutSolidCube();
再用glScalef(); 讓建築物有高矮胖瘦的差別;最後用glTranslatef(); 放到我想放的位置,這樣就大概結束了。
為了可以區別都是四方體的各館,我分別用了不同顏色。
另外,我用上下左右鍵,分別代替前進、後退、左轉、右轉。
執行結果呈現

\
截圖截到我都頭暈了,只有兩張醜圖請大家見諒
心得與討論
雖然開始寫游走的三D程式了,但我一點都不期待,因為我寫完測試結果,走到頭好暈但建築物還沒擺好,根本悲劇......
好家在,這次作業還是順利結束了.........報~告~完~畢~ (嘔~)
主題介紹
這次的任務是要將 2D 的一館改成 3D 的,超困難~的感覺!!!
程式設計與寫作方法
這次比較聰明一點,先上完課再寫作業才不用亂試亂試的。
因為是3D的模型,不像2D只畫某一角度,而是每個面都要畫,所以我先設計六個面
( 其實上下兩面根本是空的所以只有四面:$ )
可是為了讓它的窗戶有凹進去的感覺,畫窗戶都變成畫牆壁,畫牆壁都變成畫窗戶了,這是這次最麻煩的地方。另外,這次用內建的函式(?!) 畫了我的圓柱,看起來比上次像多了,哈哈哈
GLUquadricObj *quadratic = gluNewQuadric();
gluCylinder();
各面剖析圖

執行結果呈現
我的旋轉方式是用方向鍵上下左右,很人性化唷~
但結果好像有點奇怪,旋轉時模型的角度失真嚴重,應該要近大遠小,可是...相反了QQ

不過有些地方很不錯,像是前面那一排還有前門樓梯那個圓柱,真是自以為的超像捏XDDDD
心得與討論
終於畫出3D圖了,雖然擔心了很久,但因為它是有規律的四腳柱,算完一點就可以很快得到其他點,所以很成功畫完了。
看到有人用工具軟體建模型,畫出來就是真的一棟一館,真的好厲害,希望有機會可以使用看看。
hw2 結束,報告完畢。
主題介紹 - 元智資家
在元智生活這麼久了,深深感到 資工系 跟 一館 脫離不了關係,連上通識課都可以在一館,真是宿命阿!!!
現在根本整天都待在一館,吃喝拉撒睡,一館這個家一次幫您搞定唷齁齁。
程式設計與寫作方法
話說... 我的程式沒有經過特別設計,顆顆,因為我第一次遇到OpenGL,哪知道怎麼寫阿,先畫圖再說囉~
然後拿老師給的程式開始玩,把它改成一館的外圍圖案,如下,連可愛的基地台都長出來了。
接著就加上窗戶欄杆這種小細節的東西,由於它們都長在很規律的位置,所以我很聰明的用for迴圈讓它們很規律的出現在畫布上,但是有一個麻煩的地方是畫一個方塊要給四個點座標,for迴圈裡面的座標要小心的給喔。
還有,一館真的長的太不奇特了,唯一突兀的地方就是那個圓柱了,可是OpenGL裡面好像沒有畫弧線的捏,不知道是不是我沒找到,反正我就一直給座標一直try,踹超久的,終於!!! 畫出來長方柱長得像圓柱了。
整體的寫作方法就是非常暴力,為了讓它不會清一色灰階,我加了幾顆樹,樹葉是用點的,點一大堆這樣。
執行結果呈現
結果一館好像不太成比例,不過圓柱有漸層感,而且我好喜歡側面看起來有凹進去的那一排。
心得與討論
這是我第一次寫程式畫圖,笨笨的連座標都用預設的(1.0,-1.0),這之間的座標都算到小數點後三位了,看到眼睛快脫窗才移到想要的位置,尤其是那個圓住的弧線,實在是搞死我,硬湊數字湊出來,真是非常幸運 : )
另外,那幾顆樹長得很方,自己都覺得好笑,不過我是用亂樹讓它點在一個方型裡,連點的大小都亂數唷,關於如何設定點的大小,google結果用glPointSize(GLfloat size)。
最後,hw1結束了,真開心自己畫出一棟2D一館,報告完畢。