思路:把棋盤的每一格作為乙個小結構,整個棋盤就是乙個結構陣列,裡邊有座標和在此座標列印什麼(我是用「十」來列印棋盤),因為我在外部設了乙個變數x,y,所以隨時可以根據外部座標來查詢當前座標對應的棋子,就可以改變他的元素
typedef structchess;
移動:改變x ,y,並將顏色改變
落子:在結構陣列中找到當前座標的元素,並改變其列印的字元(●和○)
悔棋:這個就是用的鏈棧,落子的同時將此點的座標,列印都記錄
判斷勝負:就是用的最簡單的方法,別的還沒想到- -
首先初始化棋盤:
void initchessboard(chess ch[15])
}}
畫出初始棋盤(裡面用到了一些windows的函式在後面):
void showchessboard(chess ch[15])
printf("%s",ch[i][j].color);
setcolor(7,0);
}printf("\n");
}printf("1.悔棋\n2.退出遊戲");
}
main函式中:
#include #include #include #include #include "chess.h"
#include "linkedstack.h"
extern int x,y;//從外部引入x,y
int main()
else if(key == '1' || key == '2')
}else if(key == 75)
else if(key == 72)
else if(key == 77)
else if(key == 80)
if(x > 14) x = 0;
if(x < 0) x = 14;
if(y < 0) y = 14;
if(y > 14) y = 0;
showchessboard(ch);
if(losewin(ch[y][x],ch) == 1)else
break;
}}
判斷輸贏(我用的最簡單的方法,其他還沒想到。。。。):
//判斷輸贏
int losewin(chess c,chess ch[15])
for(i = c.x + 1;i < 15;i++)
if(count >= 4)
return 1;
//縱向排查
count = 0;
for(j = c.y + 1;j < 15;j++)
for(j = c.y - 1;j >= 0;j--)
if(count >= 4)
return 1;
//右斜方向排查
count = 0;
for(i = c.x - 1,j = c.y - 1;j >= 0 && i >= 0;i--,j--)
for(i = c.x + 1,j = c.y + 1;j < 15 && i < 15;i++,j++)
if(count >= 4)
return 1;
//左斜方向排查
count = 0;
for(i = c.x - 1,j = c.y + 1;j < 15 && i >= 0;i--,j++)
for(i = c.x + 1,j = c.y - 1;j >= 0 && i < 15;i++,j--)
//printf("%d\t%d\n",c.x,c.y);
if(count >= 4)
return 1;
return 0;
}
下面是鏈棧的一些操作:
//初始化
void initls(ls * ls)
//壓棧(插入)
void pushls(ls * ls,chess ch)
//彈棧(刪除)
chess popls(ls * ls)
//清空棧(沒用到)
void clearls(ls * ls)
ls->length = 0;
ls->top = null;
}//銷毀棧(沒用到)
void desls(ls * ls)
再下面是用windows.h做的一些函式(從老師那抄的- -):
/* 設定控制台標題 */
void settitle(char * title)
/* 0-黑色, 1-藍色, 2-綠色, 3-淺綠色, 4-紅色, 5-紫色, 6-黃色, 7-白色,
* 8-灰色, 9-淡藍色, 10-淡綠色, 11-淡淺綠色 12-淡紅色 13-淡紫色 14-淡黃色 15-亮白色
*//* 設定文字顏色 */
void setcolor(int forecolor, int backgroundcolor)
/* 設定文字游標 */
void setposition(int x, int y)
/* 清空某塊區域 */
void clear(int x,int y,int rowcount)
}}
C語言版五子棋
include windows.h include include include ifndef cplusplus include 包含bool false endif cplusplus define board 16 coord g chesspos 儲存游標位置 short g chessi...
五子棋之c語言版
實現五子棋版本 define crt secure no warnings include include include define row 10 define col 10 char border row col int play row 0 int play col 0 用來記錄玩家和電腦最...
C語言五子棋
實戰五子棋 思路 1.棋盤由邊緣數字和橫豎線及棋子構成 2.先init初始化,畫出棋盤的數字邊緣,為了第一次下棋的時候能看見棋盤樣子,其實可以封裝起來用 3.落子之後呼叫draw cross畫出整個棋盤,依舊是先畫邊緣數字,再畫棋子,一行一行畫 4.判斷輸贏。include include defi...