
課程名稱:電腦遊戲製作
謝慧民的網站 > 課程網站 > 首頁 > 致遠資管_謝慧民_94_2_電腦遊戲製作

第十四次上課:(2006.6.8)
- 期末考筆試題目、期末考上機題目:第一題參考程式、第二題參考程式、第三題參考程式、第四題參考程式1、第四題參考程式2、第四題參考程式3 (2006.6.20)
- 期末總成績(2006/06/19)。
- 期末考試:open book,筆試50%一個小時,上機考2小時,考試時間:6/15 9:00-12:00,範圍:期中考以後,以書上第二章的變化出題。
- 第一次作業未交名單(學號後三碼)(6/18):101, 105, 140, 178, 701, 706, 042, 080
- 第二次作業未交名單(學號後三碼)(6/18):101,105, 128, 131, 178, 701, 035, 080, 085
- 還沒交的同學請快補交。
- 利用上星期的加分練習繼續做當滑鼠按下時,把圖貼在畫布上的程式:在全域變數加一個bool的變數m_turndown,當滑鼠移動時給false,當滑鼠按下時給true,也就是再加case WM_LBUTTONDOWN:,把case WM_MOUSEMOVE:的內容copy過去改,然後在Mypaint函式裡面畫完car的程式後面加一行判斷if(m_turndown==true)BitBlt(mdc_tmp,0,0,600,450,mdc,0,0,SRCCOPY);,如果滑鼠按下去那就把剛剛畫在畫布的東西設給暫存畫布mdc_tmp,這樣當滑鼠按下時這個暫存畫布才會再加入這個位置的圖,滑鼠滑動則不會:範例14-1。
- 遮罩圖的裡面是黑色外面是白色,原圖要處理成外面是黑色裡面是角色本身,再變化大小成我們需要的尺寸,將這兩個圖複製到專案目錄底下,必須要練習不能使用範例的圖。
- 加分練習十四:承上個練習加入程式碼,使按滑鼠右鍵後清空所有的圖:這時還要增加一個mdc_clean及一個圖hbmp_clean,然後產生物件將圖加到mdc_clean裡面(作法與mdc_tmp相同),增加case WM_RBUTTONDOWN:判斷按右鍵的處理,一樣複製左鍵的資料,然後再增加一個bool全域變數m_rturndown,把m_turndown改為m_lturndown以區別左右鍵,在右鍵裡面當然要設m_rturndown=true,在Mypaint裡面在畫car前加入兩行程式碼if(m_rturndown==true)BitBlt(mdc,0,0,600,450,mdc_clean,0,0,SRCCOPY);
if(m_rturndown==true)BitBlt(mdc_tmp,0,0,600,450,mdc_clean,0,0,SRCCOPY);//如果按了滑鼠右鍵,則清空mdc_tmp及mdc成只有底圖的mdc_clean,然後再繼續畫圖,使用剛剛練習的遮罩圖取代car,注意尺寸要設定成新的圖的尺寸:範例14-2。

第十三次上課:(2006.6.1)
- 複習上星期的程式變換填滿的參數,進入help看參數的設定值,重做上星期的作業二(橡皮擦)。
- 使用mdc暫存畫布,把所有要畫的東西先畫在mdc上,再使用BitBlt(hdc,0,0,600,450,mdc,0,0,SRCCOPY);將mdc的內容全部貼在hdc內,這樣所有的東西就會一次顯示出來,減少影像的晃動:範例13-1。
- 再加一個mdc_tmp放一張乾淨的hbmp_tmp,滑鼠移動後畫在mdc上的東西要清除,必須在hdc畫完後使用BitBlt(mdc,0,0,600,450,mdc_tmp,0,0,SRCCOPY);將mdc還原為單純的背景圖,這樣滑鼠移動橡皮擦就不會發生擦拭的作用,這裡還要把先前用來塗掉前一個滑鼠座標畫上去的形狀的程式碼註記起來,不讓他發生作用,則背景就不會殘留白色影像:範例13-2。
- 製作遮罩圖:找一張照片使用photoimpact載入,再來使用貝茲曲線描想要的物件外型,接著切換到非選取部分塗上黑色,再來作一張新的圖大小與這張圖相同,將選取部分貼到這張空白的圖上,並合併基底,再來使用魔術棒選取黑色區域,塗滿其他非白色的顏色,再選擇裡面白色區域將他塗成黑色,切換選取外面區域,將他塗成白色,於是我們完成的這張遮罩圖,裡面是黑色,外面是白色(都是要存成.bmp檔,才可以讓程式使用):1.原圖外面黑色、2.遮罩圖。
- 加分練習十三:然後參考2-6的做法使用mdc_buffer,將背景圖及角色遮罩圖、原圖畫在上面,且為透空,再來把這些東西加到上一個範例取代橢圓圖為這張角色的透空圖,可以使用滑鼠移動來移動這角色張圖:操作成果錄製。範例13-3。

第十二次上課:(2006.5.25)2006/5/18因颱風放假停一次,本次廣播系統損壞無法使用
- 承上次的加分練習,增加筆刷,在全域變數區加入筆刷宣告為HS_VIRTICAL,在initinstance函式內加入產生筆刷物件的程式碼,設定筆刷顏色,在WM_MOUSEMOVE裡面在筆的底下使用SelectObject選擇哪支筆刷,就可以畫出正方形內有垂直線條,滑鼠移動也會隨著移動:範例12-1。
- 加分練習十二:下載ch2的範例,使用ch2-4裡面有橢圓ELLIPSE的程式碼,將正方形改為橢圓形,裡面塗成實心,顏色可以設定不同,讓滑鼠位置在橢圓的中間,滑鼠移動時仍然要刪去原來的圖形,讓畫面只留那個橢圓:範例12-2。
- 作業二:參考ch2-5將背景圖bg.bmp載入練習十二的場景,當滑鼠移入場景,就會塗掉背景圖,有如橡皮差的功能:操作成果錄製 (繳交期限:2006.6.8)

第十一次上課:(2006.5.11)
- Visual C++遊戲設計魔法寶典:
-
- 講解期中考試題程式碼,第二題滑鼠移入矩形區域,滑鼠位置出現'*',在外面則沒有該符號,只是改變寫出的字元切換為空白而已。
- 加分練習十一:利用第二題去改,當滑鼠移動時這個矩形會跟著滑鼠移動,然後移動後原來的矩形要消失,基本上需要使用全域變數紀錄現在的滑鼠座標位置及前一次的滑鼠座標位置,當滑鼠移動時先將前一個矩形塗成背景色(白色),然後在畫上這個矩形,宣告HPEN 及sPen設定畫筆編號及筆觸,在InitInstance裡面產生筆的物件,並設定筆的顏色,需要兩支筆,一支顏色白色用來塗掉原來的矩形,一支顏色定義為非白色,畫出現在的矩形:上課範例rect_mouse_move
- 筆刷為填滿封閉區域的物件,與HPEN類似要產生物件設定顏色才可使用,如果要改變顏色必須使用SelectObject選那支筆及那個筆刷,就可以改變下一個繪圖物件的邊框及塗滿的顏色,由書上範例修改的程式:ch2_1

第十次上課:(2006.5.4)建模、旋轉的錐體(勞委會產學合作_業界講師張家銘講授)。
- 第十次上課書面資料連結。
- 關掉光的引擎, 同一面的端點設定同一顏色,可以得到四個不同顏色的面,在攝影機寫上操作滑鼠左鍵會影響兩個軸的轉動:上課範例9-1。
- 使用滑鼠右鍵Zoom in,Zoom out座標軸的參考(不正確的範例)。
- 建一個角錐模型,底長寬都是10,高也是10,設定旋轉、位移、位移後旋轉的繪圖:上課範例9-3
- DirectX 9.0b下載位置(解壓縮執行setup.exe):dx90bsdk.exe (先安裝visual C++,再安裝DirectX 9.0b,安裝完check路徑是否拿到最前面-->Tools-->Options-->Directories-->切換到include及library調整DXSDK的項目到最上面)
- 翻轉方向不同:參考程式

第九次上課:(2006.4.27)3D圖的展示、攝影機視點等控制(勞委會產學合作_業界講師張家銘講授)。
- 第九次上課書面資料連結。
- Alpha值控制,兩張圖重疊,由透明漸漸轉為不透明:上課範例8-1。
- 劃一個3D的座標軸:上課範例8-2

第八次上課:(2006.4.20)2D圖的展示、動畫及混合效果(勞委會產學合作_業界講師張家銘講授)。
- 第八次上課書面資料連結。
- 圖形展示及動畫:上課範例7-1。
- 使用著色混合設定製作透空及混色重疊效果:上課範例7-2
- 使用滑鼠移動拉動圖形:參考程式

期中考:(2006.4.13)

第七次上課:(2006.3.30)踩地雷程式撰寫續、圖學理論與實作(勞委會產學合作_業界講師張家銘講授)。
- 期中考:4/13日早上9:00-12:00,上機考,open book,題目四題,上課上過的內容稍微變化,不會太難。
- 4/7日停止繳交加分練習(第四個已公佈答案不算),全部的加分練習參考答案將上傳。
- 第七次上課書面資料連結。
- 劃一個圓,使用數學函式sin及cos:上課範例。
- 練習畫星星,使用i+=144,畫出5條線:參考答案
- DirectX遊戲系統實作,執行成果為一個有滑鼠鍵盤互動對照的圖示:上課範例
- 加分練習六:滑鼠移到哪裡畫圓心到滑鼠位置的線及圓心到0度的線,滑鼠位置寫出角度值。(成果圖)--->參考答案

第六次上課:(2006.3.23)踩地雷程式撰寫續、圖學理論與實作(勞委會產學合作_業界講師張家銘講授)。
- 第六次上課書面資料連結。
- 按右鍵標示地雷,再按右鍵取消標示地雷:上課範例。
- 如果全部非地雷格子都翻開,則出現你贏了的對話視窗。上課範例
- 加分練習五:執行點選格子碰到地雷出現對話視窗。(成果圖)--->參考答案
- 作業一:按到地雷出現對話視窗後(成果圖),按確定鈕後,接著就在方格內顯示地雷的位置(成果圖)。(4/4前email到hmhsieh@ms3.hinet.net繳交,請壓縮你的專案,檔名使用:學號_home1.rar)

第五次上課:(2006.3.16)踩地雷程式撰寫續(勞委會產學合作_業界講師張家銘講授)。
- 這次上課由於業師需要趕到台北開會,因此上課至11:00,缺一個小時分兩次上課補課,即3.23日及3.30日從8:35開始上課。
- 第五次上課書面資料連結。
- 加分練習四:以上程式打完偵錯,執行後點選格子就會翻開非地雷的資料,直到外圍都有數字為止(可利用第四次的範例作業修改)。--->參考答案

第四次上課:(2006.3.9)踩地雷程式撰寫(勞委會產學合作_業界講師張家銘講授)。
- 第四次上課書面資料連結。
- 加分練習三: 畫出m x n的格子及邊緣線,然後寫程式在方陣的方格內產生設定數量_bomb的地雷,再標示所有非地雷方格的對應數字,例如該方格四周八格有兩顆地雷,則這一格標示為”2”,地雷假設標示為”*”,則利用視窗畫布來繪製這些資料。寫一個class來定義建構子及Draw函式,並定義方格長寬_gh及_gw、陣列大小,建構子內亂數產生地雷位置、設定是否為陣列地雷(值為-1)及非地雷的方格標示其周圍的地雷數字、Draw函式做迴圈劃出格子及地雷符號、數字,請參考成果圖。--->參考答案

第三次上課:(2006.3.2)VC++視窗程式講解及操作(勞委會產學合作_業界講師張家銘講授)。
- 第三次上課書面資料連結。
- 範例下載:滑鼠點選位置顯示xy座標、劃一個矩形、劃一個10x10的方格
- 加分練習二: 滑鼠點到哪裡,線就畫到哪裡。-->要使用全域變數來暫存座標值:在WinProc()外面加一個宣告int a_x,a_y;到函式裡面case最後ReleaseDC之前做暫存的設定:a_x=x;a_y=y;就可以存上次滑鼠點選的位置,再將這個位置設給MoveToEx()函式,畫筆起點就會重設成上次滑鼠點選的位置。 --->參考答案
- 99乘法表Java程式範例

第二次上課:(2006.2.23)遊戲外掛程式議題、VC++視窗程式講解及操作(勞委會產學合作_業界講師張家銘講授)。
- 第二次上課書面資料連結。
- 加分練習一:製作一個視窗程式,讓滑鼠移動的座標顯示於視窗名稱,課堂沒做出來,要補交的同學增加修改視窗內的Hello world!為你的學號及姓名。--->參考答案
- 記得上課要帶講義並做筆記。
- 資料下載:致遠課程表、課程大綱、致遠教材細部、講義(大部分時間會使用VC++及DirectX)。

第一次上課:(2006.2.16)業界遊戲市場介紹、介紹DirectX 9(勞委會產學合作_業界講師講授)。
- 由講師張家銘(email: totomif50@yahoo.com.tw)講解遊戲界的概況、遊戲市場的走向、遊戲人要具備的知識及進入遊戲界要注意的細節:參考資料連結。
- 第一次上課書面資料連結。
- 課程進度安排介紹、使用教科書及參考書(大部分時間會使用DirectX)。


版權所有c2007 謝慧民