C語言版五子棋(剛學完鏈棧跟著做的)

2021-08-27 14:14:58 字數 2672 閱讀 8255

思路:把棋盤的每一格作為乙個小結構,整個棋盤就是乙個結構陣列,裡邊有座標和在此座標列印什麼(我是用「十」來列印棋盤),因為我在外部設了乙個變數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...