在这里我分成了玩家移动以及电脑移动,在设计时你要知道你面向的不是程序员玩这个游戏而是玩家,所以他们不知道是从0,1,2,3排列的,所以你就需要在他们输入的棋子坐标上减一,来进行下一步操作,而且我们下棋子要在‘ ’处下,而不能下重复,或者越界,所以我是这么处理的
电脑下棋逻辑一样。
4.判断输赢,这里我是绕糊涂了,需要仔细思考,比如我在对角判断那就卡了半小时(谁还不是个小白了)
编辑
char udge(char chess[ROW][COL]) { //胜利行 int password = 0; for (int row = 0; row < ROW; row++) { password = 0; for (int col = 1; col <COL; col++) { if (chess[row][col] == chess[row][col - 1]&&chess[row][col]!=' ') { password++; if (password == ROW - 1) { printf("行\n"); return chess[row][col]; } } } } //胜利列 for (int col = 0; col <COL; col++) { password = 0; for (int row = 1; row < ROW; row++) { if (chess[row][col] == chess[row-1][col] && chess[row][col] != ' ') { password++; if (password == COL - 1) { printf("列\n"); return chess[row][col]; } } } } //左到右对角 password == 0; for (int row = 1; row < ROW; row++) { int col = row; if (chess[row][col] == chess[row - 1][col - 1] && chess[row][col] != ' ') { password++; if (password == 2) { printf("左到右对角\n"); return chess[row][col]; } } } //右到左对角 password = 0; for (int row = 1; row < ROW; row++) { int col = ROW - row -1; if (chess[row][col] == chess[row - 1][col+1] && chess[row][col] != ' ') { password++; if (password == ROW-1) { printf("右对焦\n"); return chess[row][col]; } } } //平局 for (int row = 0; row < ROW; row++) { password = 0; for (int col = 1; col < COL; col++) { if (chess[row][col]!= ' ') { password++; if (password == sqrt(ROW)) { return 'H'; } } } } return 'G'; }
在对角一定要多思考
在主函数中对应写入
do { DisplayBoard(chess); printf("请输入你要下的坐标>"); Playermove(chess,row,col); judge=udge(chess); if (judge == 'x') { printf("<<<玩家胜利>>>"); printf("\n"); DisplayBoard(chess); system("pause"); break; } if (judge == 'H') { printf("<<<和局>>>"); printf("\n"); DisplayBoard(chess); system("pause"); break; } printf("\n"); printf("电脑操作>"); Computermove(chess); judge = udge(chess); if (judge == 'o') { printf("<<<电脑胜利>>>"); printf("\n"); DisplayBoard(chess); system("pause"); break; } if (judge == 'H') { printf("<<<和局>>>"); printf("\n"); DisplayBoard(chess); system("pause"); break; } } while (ct);
下面我们要做的就是剪线头的事情了,剪完运行;(这里把全局变量值改变理论上可以进行N子棋对弈,但是不太好玩)
这里写的希望大家可以理解,如果有不懂或者有错误的地方,请大伙留言评论或者私信!!!