国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

黒白棋

2019-11-17 05:36:54
字體:
供稿:網(wǎng)友
本程序提供五子棋、黑白棋雙人對下的環(huán)境,以及黑白棋人機(jī)對下的功能。其界面模擬windows, 操作簡便,所有操作都通過鼠標(biāo)完成。
 進(jìn)入程序后,從game菜單可選擇游戲的種類,在游戲進(jìn)行過程中采用鼠標(biāo)左鍵下子,右鍵悔棋。
 整個源程序總共由mouse.c、timedate.c、bmp.c、bww.c、bww.PRj五個文件組成,約1500余行。其中mouse.c包含鼠標(biāo)相關(guān)的語句;timedate.c用于顯示當(dāng)前的日期與時間;bmp.c用于顯示16色位圖作為程序的封面以及便于中文的顯示;
bww.c是整個程序的核心部分,下面將就bww.c中的各個重要函數(shù)作一下簡要的介紹: void init():該函數(shù)用于圖形以及鼠標(biāo)的初始化。 void anniu(int x0, int y0, int x1, int y1, int color1, int color2):該函數(shù)通過在一塊平面區(qū)域的四面用兩種顏色畫線,使之產(chǎn)生凸起或凹陷的立體效果。 void showmenu();
void helpmenu();
void filemenu();      這五個函數(shù)主要用于菜單欄及各級菜單的顯示。 
void topic();
void about(); void wuziqi():通過調(diào)用該函數(shù)進(jìn)入五子棋的雙人對下環(huán)境。
void heibaiqi():通過調(diào)用該函數(shù)進(jìn)入黑白棋的雙人對下環(huán)境。
void mind2cpu():通過調(diào)用該函數(shù)進(jìn)入黑白棋的人機(jī)對下環(huán)境。 void draw(int type):該函數(shù)根據(jù)type參數(shù)值的不同,畫出符合需要的棋盤。void win(int type, int winner):通過對該函數(shù)的調(diào)用,顯示勝利的信息,并詢問接著要執(zhí)行的操作。void gameover():通過對該函數(shù)的調(diào)用,退出本程序。 int xiazi(int xx, int yy, int type):該函數(shù)在棋盤坐標(biāo)為(xx, yy)處下type參數(shù)所定義的棋子。 void control(int type):該函數(shù)用于五子棋與黑白棋的雙人對下環(huán)境,通過循環(huán)不斷地接受鼠標(biāo)的的按鍵信息,然后調(diào)用相應(yīng)的函數(shù)執(zhí)行所要求的功能。 void judge():該函數(shù)判定棋盤上是否有同種顏色的棋子連成了五顆以上或棋盤以被占滿,即判定是否以分出了勝敗,還是平手。 void huiqi():該函數(shù)用于執(zhí)行五子棋的悔棋功能。 void hdisplay();
void display(); void copyqipan():該函數(shù)將每一步的棋盤狀況復(fù)制到一個備份數(shù)組中,以實(shí)現(xiàn)黑白棋的悔棋功能。
int copy_chess (int source[8][8],int dest[8][8]):該函數(shù)將前一數(shù)組各項(xiàng)復(fù)制到后一數(shù)組當(dāng)中。主要用于黑白棋的人工智能。 void hhuiqi(int type):該函數(shù)調(diào)用display()函數(shù)實(shí)現(xiàn)黑白棋的悔棋功能。 int hpass(int my_self):該函數(shù)判定my_self代表一方是否無處可下,但不在屏幕上顯示,主要用于黑白棋的人工智能。
int pass(int turn):該函數(shù)判定turn代表一方是否無處可下,并在屏幕上顯示“PASS”字樣。long hvalue(int pad[8][8], int turn):該函數(shù)根據(jù)分值表判定turn這一方在pad[8][8]數(shù)組所表示的情況下的的分。主要用于黑白棋的人工智能。int core_think(int my_self):通過遞歸調(diào)用判定電腦走哪一步最合適,MAXSTEP定義了電腦所想的步數(shù),目前我將其值定為4。void hjudge():該函數(shù)計(jì)算棋盤當(dāng)前狀況雙方的子數(shù),并顯示出來,用于兩個黑白棋中。int change(int cx, int cy,  int playerorder,  int a):判定playerorder一方在(cx, cy)處下子是否能引起改變,根據(jù)a的不同以決定是否要在棋盤上表示出來,用于pass的判定,和顯示一方下子所引起的雙方棋子的變化。
int try_xy(int x, int y, int chess[8][8], int my_self):判定my_self一方在(x, y)處下子是否能引起改變,將此改變記錄在chess[8][8]中。以上即是bww.c文件中主要函數(shù)的介紹。由于黑白棋的人工智能是后來才想到要編的,所以有些函數(shù)有些重復(fù),并且黑白棋的人工智能很難達(dá)到非常高,我是編了好長時間才作成這一個讓我可以接受的程度。而且這種算法的效率也很低,導(dǎo)致當(dāng)MAXSTEP為5時,電腦每走一步就要等好長時間。希望今后我能夠找到解決這些不足的好方法。
該程序全部由我在TC2.0的環(huán)境下編寫完成。注:本程序要求在windows 98/95操作系統(tǒng)下運(yùn)行。在Win me/2000/NT下運(yùn)行會產(chǎn)生錯誤。(鼠標(biāo)不可見)
點(diǎn)擊下載原程序:>>>>> 


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 宜宾市| 普洱| 嘉义县| 彰武县| 凌海市| 洪雅县| 梁河县| 天全县| 天等县| 郓城县| 红安县| 玉树县| 叙永县| 黑水县| 沁源县| 洱源县| 北票市| 横峰县| 大名县| 门源| 东辽县| 金湖县| 象州县| 潼关县| 元谋县| 丰原市| 怀远县| 肇庆市| 增城市| 泸溪县| 建德市| 永寿县| 望江县| 太谷县| 革吉县| 临颍县| 玛多县| 塔城市| 汉沽区| 洱源县| 宜城市|