重點**塊介紹
本系統是乙個簡易的五子棋系統,是我在大一學期c語言入門時進行編寫的。本系統完全使用c語言進行開發,系統中分為人人對戰和人機對戰。人人對戰時黑棋白棋都需要人工通過輸入座標確定位置。人機對戰每一回合電腦會自動生成乙個棋子。本系統的開發運用了模組化思想,不同的功能通過不同的函式封裝,在主函式中呼叫即可。
本系統適合c語言初學者練習開發,運用的是較簡單的語句,執行邏輯比較好理解,我將在文章末尾分析源**。
microsoft visual studio 2010
c語言實現人人對戰
實現人機對戰(自動生成棋子)
判斷5字連線輸贏
棋盤的繪製:對於棋盤的繪製,我首先會初始化乙個二維陣列矩陣。在沒有棋子的時候全部初始化為0,若為黑旗子則在相應位置設為1,為白棋子在相應位置設為2。在繪製棋盤的函式中,為0時將繪製棋盤邊框,為1,2時則繪製棋子。
判斷輸贏的實現邏輯:棋盤每次增加乙個棋子時都會進行三次遍歷,當檢測到第乙個棋子時就將初始化乙個flag值,在上下左右斜向每發現乙個相同棋子就將flag值加1,當flag==5時,則判斷為有一方已經勝利。
void
menu()
//繪製ui主介面
void
drawqipan
(int qipan[row]
[col]
)//棋盤繪製函式
void
drawqizi
(int type,
char
*tableline)
//棋子繪製函式
void
isfull
(int qipan[row]
[col]
)//判斷棋盤是否全滿
void
randomcreatxy
(int
*point_x,
int*point_y)
//自動生成棋子座標
void
judgewin
(int qipan[row]
[col]
)//判斷輸贏函式
void
person_person()
//人人對戰函式
void
person_computer()
//人機對戰函式
intmain()
//主函式
void
drawqipan
(int qipan[row]
[col])if
(j>
0&& j
if(j==col-1)
}}if(i>
0&&i
if(j>
0&& j
if(j==col-1)
}}if(i==row-1)
if(j>
0&& j
if(j==col-1)
}}printf
("\n");
}}void
drawqizi
(int type,
char
*tableline)
通過檢索二維陣列的值的變化來繪製棋盤與棋子
void
judgewin
(int qipan[row]
[col]
)else
if(flag==1)
}}else
} itemp=i;jtemp=j;count=1;
while((
++itemp<20)
&&(5!=count)
)else
if(flag==1)
}}else
} itemp=i;jtemp=j;count=1;
while((
++itemp<20)
&&(++jtemp<20)
&&(count=5)
)else
if(flag==1)
}}else
} itemp=i;jtemp=j;count=1;
while((
--itemp>=0)
&&(--jtemp>=0)
&&(count!=5)
)else
if(flag==1)
}}else}}}}}
函式的重點在分別進行的左右,上下以及斜向三次遍歷。
void
randomcreatxy
(int
*point_x,
int*point_y)
在棋盤限度內每次隨機生成兩個座標,傳值給棋盤繪製函式。 軟體工程 軟體工程系統定義 需求開發與需求管理
系統定義階段 需求分析概述 軟體需求分析層次 需求分析的過程 需求開發 需求管理 待更新 更新日誌 最近更新 系統定義是軟體生命週期的第一階段,有著根據使用者的具體要求解決系統做什麼的重要任務。系統定義階段主要完成三部分,即問題提出 可行性研究 需求分析 問題提出與可行性分析兩部分的工作內容需體現在...
軟體工程 軟體專案開發計畫
1 引言 1 1編寫目的 闡明編寫開發計畫的目的,指出讀者物件。1 2專案背景 可包括 a 專案的委託單位 開發單位和主管部門 b 該軟體系統與其他系統的關係。1 3定義 列出本檔中用到的專門術語的定義和縮寫詞的原文。1 4參考資料 可包括 a 專案經核准的計畫任務書 合同或上級機關的批文 b 文件...
軟體工程系列 軟體開發形式化說明技術
形式化方法就是基於數學的技術描述系統的性質,消除自然語言書寫的系統規格說明書的 矛盾 二義性 含糊性 不完整性 及抽象層次混亂性。有窮狀態機 有窮狀態機包括下述的5個部分 狀態集j 輸入集k 由當前狀態和當前輸入確定下個狀態 次態 的轉換函式t 初始態s 和終態集f。轉換規則為 當前狀態 選單 事件...