此作業的要求參見[
作業要求
課程** [
專案名稱及分值
遊戲名稱
滿分分值
功能點提示
實時時鐘
20當前時刻、繪製指標
作業提交要求
除**及git以外,要求 wbs、psp,要求使用部落格報告完成的功能和截圖,講解
關鍵技術和**片斷。其中wbs要求包括不限於每個子任務的工時估算時間和實
際耗時,精確到分鐘。子任務可以包括分析、設計、**、測試、除錯、文件,
鼓勵精確到二級子任務如功能點等。
專案git位址
專案psp
型別任務
開始時間
結束時間
中斷時間(分鐘)
delta時間(分鐘)
準備課程學習
11.29 14:42
11.29 15:07025
程式設計功能實現
11.29 15:07
11.29 20:16
121188
程式設計除錯
11.29 19:27
11.29 20:16043
文件技術文件說明
11.30 9:50
11.30 13:36
14779
專案wbs
關鍵技術
在標頭檔案中加入include
,繪製圖形舉例:
void main()
繪製靜態秒針
int center_x, center_y; //中心座標,秒針的起始座標
center_x = width/2;
center_y = high/2;
int secondlength; //秒鐘的長度
secondlength = width / 5;
int secondend_x, secondend_y; //秒鐘的終點座標
秒針根據時間轉動
使用getlocaltime(&ti)
獲取系統時間,獲取秒針一秒鐘轉動的角度secondangle = (double)ti.wsecond * 2 * pi / 60
,記錄秒針終點座標
secondend_x = (int)center_x + secondlength * sin(secondangle);
secondend_y = (int)center_y - secondlength * cos(secondangle);
時針、分針的繪製及轉動與秒針類似,具體**如下:
float secondangle = 0;//秒針對應轉動角度
systemtime ti; //定義變數儲存系統時間
beginbatchdraw();
while (1)
表盤繪製
表盤的繪製,主要難點在於刻度的繪製。將乙個表盤分割為60等份,0,15,30,45,60表示的是表盤0,3,6,9時間;5,10,20,25,35,40,50,55表示的是表盤的整點時間。用if...else可以實現。
此外,我在繪製表盤名稱時,使用outtextxy(center_x-20 , center_y + width/6, "我的時鐘")遇到了問題,第三個引數為字串,編輯器提示我當前的字元太多,查詢了outtextxy()函式的定義,用char儲存字串,理論上是沒有問題的,最後查明原因是由於字元編碼不匹配引起的。用 char 表示字元時,英文占用乙個位元組,中文占用兩個位元組。使用了unicode、 mbcs兩種編碼方式,導致char型別的編碼出錯。
解決辦法:可以參考
//繪製表盤邊緣
setlinestyle(ps_solid, 2);
setcolor(white);
circle(center_x, center_y, width / 4);
//繪製刻度
int x, y;
for (int i = 0; i < 60; i++)
else if (i % 5 == 0) //5,10,20,25,35,40,50,55
else
}
5.完成效果圖
童晶老師的遊戲開發課程作業 飛機大戰的實現
此作業的要求參見 作業要求 課程 專案名稱及分值 遊戲名稱 滿分分值 功能點提示 飛機大戰 50移動飛機 發射子彈 敵機移動 消滅敵機 被敵機撞擊 存檔讀檔 作業提交要求 除 及git以外,要求 wbs psp,要求使用部落格報告完成的功能和截圖,講解 關鍵技術和 片斷。其中wbs要求包括不限於每個...
來自童晶老師的遊戲開發課程作業 貪吃蛇
此作業的要求 版本控制 其中getstdhandle 獲取指定的標準裝置的控制代碼,coord 表示乙個字元在控制台螢幕上的座標,setconsolecursorposition 設定控制台游標位置。通過找到小蛇的舊蛇頭座標以及下一步的方向確定新蛇頭的位置。通過判定新蛇頭的位置是否是食物的位置來決定...
張曉東老師的清華龍星課程
8月5號到9號,作為龍星課程的發起者之一,俄亥俄州立 osu 計算機系主任張曉東教授到清華講快取儲存方面的課程。因為相對不很對口,前兩天實驗室有人去,但我正忙著寫程式和文章,沒有去聽。今天上午才去聽了,感覺非常有幫助,不僅在知識技術層面上,還包括做學問的方法,思考問題的方法等等。張老師經常回國做講座...