Download presentation
Presentation is loading. Please wait.
1
程式設計期末報告 陳益群 黃士展
2
程式內容 名稱:五子棋 內容:傳統的五子棋,還有其他模式之玩法
使用說明:用上下左右鍵控制其移動方向,利用空白鍵下棋。先達到五顆同色棋連成一線者為贏。
3
工作日誌(1) 5月 week1—棋盤的製作 5月 week 2—棋子移動時之判斷 5月 week3 —下棋勝負之判斷
4
工作日誌(2) 6月 week1---程式其他模式製作 6月week2---整合所有物件 6月 week3----除錯
5
發展文件 (1)分析問題 五子棋目的為同色棋子五顆連成一條線者勝 需要先設計棋盤,利用矩陣儲存棋子,再判斷是否連成一條線。
6
(2)分析過程—函式 判斷副函式: int find1(int); int find2(int);int find3(int); int find4(int); 玩家棋子:int play_1(void); int play_2(void); 限時模式:int time_1(int); int time_2(int); 電腦隨機:int computer(void); 動畫:void first(void); void second(void); void win_1(void); void win_2(void); void number(void); void first(void); void second(void); void win_1(void); void win_2(void); void number(void);
7
(2)分析過程 需要: First,second 副函式管理開頭動畫 Play_1,Play_2副函式管理下棋的過程 Time_1,time_2副函式管理限時時間 win_1,win_2副函式管理勝利動畫 Computer副程式管理電腦隨機下棋 Number 副函式管理倒數動畫
8
(2)分析過程 需要利用gotoxy來移動游標位址來下棋 以kbhit()來偵測鍵盤動作 以if判斷棋子是否連成一條線與判斷鍵盤輸入指令是否符合選項 用switch分類選項執行符合條件的動作
9
(2)分析過程 --程式結構 main 棋盤介面 普通模式 Play1 判斷 Play2 限時模式 Time_1 Time_2 亂入模式
主程式 棋盤介面 動畫與選項 普通模式 Play1 Int play_1(void) 判斷 Int Find1,2,3,4 Play2 Int play_2(void) 限時模式 Time_1 Int time_1 Int play_1(void)) Time_2 Int time_2 亂入模式 電腦隨機 Int computer(void) Int find1,2,3,4) (2)分析過程 --程式結構
10
程式測試(1) 1.棋盤製作:尋找可用之圖形,最終選擇使用全形繁體所提供之圖形格子,以及因螢幕大小選擇使用15*15之棋盤
2.棋子之顯示:利用迴圈使未下之棋子閃爍,但因使用延遲函式,因此會影響到反應時間,最終經多次測試選擇了最適切之延遲時間 3.棋子之移動:使用無限迴圈及getch抓取按鍵,並使其移動,但在判斷式上複雜,必須考慮許多可能,因此可說是程式碼中較為複雜的地方,在測試途中時常發現缺陷,要馬上補上判斷式修改
11
程式測試(2) 勝負之判斷:勝負判斷因五子棋規則明瞭,因此有較簡潔之判斷式,反而是迴圈的邏輯較耗時間,時常想的與結果不同,導致判斷不出輸贏
下一子之位子:下一子顯示位置之判斷看似簡潔,但常常會有漏看之可能性,導致程式bug,經過多次測試才將其改到不會相撞
12
限時模式:用sleep去抓大約的時間,主要是在已寫好的主程式上附加東西,因此相對好寫,但一開始無法掌握較好的寫法,時常讓程式陷入死當的狀態
亂入模式:因放棋子的位置是電腦隨機,但有些結果用隨機反而會使程式當掉,因此改用較為複雜的寫法,但也解決了死當的問題
13
分工 陳益群---動畫 黃士展----遊戲內容
Similar presentations