黑白棋编程(黑白棋怎么玩)

2023-11-17 08:05:35 数码极客 bianji01

 

VC++ 编程题 井字棋游戏设计(高手请进)

#include #include #define SIZE 3typedef enum {CBLANK, CBLACK, CWHITE} CHESS;typedef enum {GM_WIN, GM_LOST, GM_UNKNOW, GM_ERROR} GAMEFLAG;void init_board(CHESS board[SIZE][SIZE]) //初始化int i, j;for (i = 0; i < SIZE; i++)for (j = 0; j < SIZE; j++){board[i][j] = CBLANK;}}void print_chess(CHESS board[SIZE][SIZE]) //打印棋盘int i, j;putchar( );for (i=0; i < SIZE; i++)printf("%2d", i+1);putchar(\n);for (i=0; i < SIZE; i++)printf("%-2d", i+1);for (j=0; j < SIZE; j++)switch (board[i][j])case CWHITE:putchar(O);break;case CBLACK:putchar(*);break;case CBLANK:putchar(_);break;default:putchar(?);break;putchar( );putchar(\n);}void swc(CHESS chess, int *black, int *white, int *bmax, int *wmax) //判断switch (chess)case CBLACK:*white = 0;(*black)++;break;case CWHITE:*black = 0;(*white)++;break;case CBLANK:*black = 0;*white = 0;break;default:break;} if (*black > *bmax) *bmax = *black;if (*white > *wmax) *wmax = *white;GAMEFLAG res(CHESS board[SIZE][SIZE]) //判断输赢int i, j;int win[4] = {0, 0, 0, 0};int rblack, rwhite, cblack, cwhite,loblack = 0, lowhite = 0,roblack = 0, rowhite = 0,bmax = 0, wmax = 0; for (i=0; i < SIZE; i++)rblack = 0;rwhite = 0;cblack = 0;cwhite = 0; swc(board[i][i], &loblack, &lowhite, &bmax, &wmax);swc(board[i][SIZE-i-1], &roblack, &rowhite, &bmax, &wmax); for (j=0; j < SIZE; j++)swc(board[i][j], &rblack, &rwhite, &bmax, &wmax);swc(board[j][i], &cblack, &cwhite, &bmax, &wmax); } } if (bmax >= 3)if (wmax >= 3)return GM_ERROR;return GM_WIN;if (wmax >= 3)return GM_LOST;return GM_UNKNOW;}}int move(CHESS board[SIZE][SIZE], CHESS chs, int x, int y)int bs = 1;if (board[x][y])bs = 0;else if (y >= SIZE || y < 0 || x >= SIZE || x < 0)bs = 0;elseboard[x][y] = chs;return bs;}int main()CHESS b[SIZE][SIZE];char *msg[] = {"BLACK WIN!\n", "WHITE LOST!", "NOT YET", "ERROR!!"};char *plr[] = {"NON", "BLACK", "WHITE"};CHESS p = CBLACK;GAMEFLAG flg;init_board(b);while ((flg = res(b)) == GM_UNKNOW)int x, y, bmv = 1;system("cls");print_chess(b);while (bmv){printf("%s回合,输入坐标:", plr[p]);scanf("%d%d", &x, &y);bmv = !move(b,p,x-1,y-1);}p = (CHESS)(CWHITE + CBLACK - p);printf("%s", msg[flg]);system("pause");return 0;世界上有多少种棋类游戏作者:棋,夜的私…文章来源:本站原创点击数:964更新时间:2007-2-9只是个简单的统计,不断完善中。1、围棋(go) 围棋已经远远超出了它的娱乐功能,它是一种理念,一种生活的态度,一种生命的哲学。当人们为计算机程序“深蓝”战胜世界国际象棋冠军卡斯帕罗夫而惊叹的同时,我想人工智能科学家们忽略了一点,那就是棋是智慧的延伸而不仅仅是智力的角逐,也许只有围棋才能把这些深层的东西体现出来。2、中国象棋(Chinese Chess)中国象棋具有悠久的历史。经过近百年的实践,象棋于北宋末定型成近代模式: 32 枚棋子, 有河界的棋盘,将在九宫之中等等。南宋时期,象棋 " 家澈户晓 " ,成为流行极为广泛的棋艺活动。中国象棋根植民间,应该是中国最普及的棋类运动。3、国际象棋(Chess)国际象棋无疑是全世界最普及的棋类,但是现制国际象棋在我国开展的时间不算长,从 1956 年开始,国际象棋才和我国传统的中国象棋与围棋一起列入国家开展的体育项目。起源于中国古代的传统黑白棋种之一。现代五子棋发展于日本,日文称之为"连珠",英译为"Renju","Gobang"或"FIR"(Five in a Row的缩写),亦有"连五子"、"五子连"、"串珠"、"五目"、"五目碰"、"五格"等多种称谓。有两种规则 无禁手采用最简单古老的规则。黑白双方依次落子,任一方先在棋盘上形成横向、竖向、斜向的连续的相同颜色的五个(含五个以上)棋子的一方为胜。有禁手(走禁手就输,禁手不能落子) 鉴于无禁手规则黑棋必胜,人们不断采用一些方法限制黑棋先行的优势,以平衡黑白双方的形式。禁手最简单地说就是一手棋形成长连(连成五个以上连续相同的棋子),或两个以上的活三,或者两个以上的四,并且这些四、活三和长连都要包括这一手棋。5、军棋与四国大战军棋又被称为盲象棋(BLIND CHESS) 是由南非(South-Africa)的一位叫Henry Michael Temple人于1899年发明的。他本人是一名国际象棋爱好者,因为自己的伙伴希望能玩一种反映战争的游戏,于是他借鉴国际象棋的棋子,发明了这种战争游戏。它使旁观者和下棋人共享其中的欢乐。军棋是一种成功的变形象棋。它和象棋最大的区别就是不允许看对方的棋子,更具有挑战性。四国大战, 4 人游戏时,相对的两家联盟与另外两家对抗,配合战斗的乐趣是其它棋类所没有的。6、 暗棋,是以中国象棋棋盘和棋子进行的一项棋类游戏,游戏时,棋子放在普通象棋棋盘的上半部分,棋盘的下半部分用于摆放双方被吃掉的棋子。 暗棋一开始必须靠双方不断地把只显示背面的棋子翻过来,但只能移动自己颜色的棋子,棋子的大小顺序是将、士、象、车、马、炮、兵,大子吃相同的子和小子,但小兵吃将,炮不能吃马。游戏规则很简单,棋子的移动可以一步步在有直线连接的相邻六个方向进行,如果相邻位置上有任何方的一个棋子,该位置直线方向下一个位置是空的,则可以直接 " 跳 " 到该空位上, " 跳 " 的过程中,只要相同条件满足就可以连续进行。谁最先把正对面的阵地全部占领,谁就取得胜利。8、黑白棋,又叫反棋 (Reversi) 、奥赛罗棋 (Othello) ,苹果棋,翻转棋。黑白棋在西方和日本很流行。游戏通过相互翻转对方的棋子,最后以棋盘上谁的棋子多来判断胜负。游戏通过相互翻转对方的棋子,最后以棋盘上谁的棋子多来判断胜负。黑白棋的棋盘是一个有 8*8 方格的棋盘。下棋时将棋下在空格中间,而不是像围棋一样下在交叉点上。开始时在棋盘正中有两白两黑四个棋子交叉放置,黑棋总是先下子。 把自己颜色的棋子放在棋盘的空格上,而当自己放下的棋子在横、竖、斜八个方向内有一个自己的棋子,则被夹在中间的全部翻转会成为自己的棋子。并且,只有在可以翻转棋子的地方才可以下子。  如果玩家在棋盘上没有地方可以下子,则该玩家对手可以连下。双方都没有棋子可以下时棋局结束,以棋子数目来计算胜负,棋子多的一方获胜。9、六子棋(connect6) 台湾交通大学资讯工程系副教授吴毅成发明六子棋新游戏,据称弥补了五子棋“先下者有利”的公平性困境。六子棋的简明规则:一、黑白两色棋子,纵横各十九道。 (完全可用围棋的棋盘棋子)二、黑方先落一子,此后双方轮流落子,一次两颗。三、先有六子连成一直线者,赢。补充:应该说明中国还有一种传统的六子棋。交战双方棋子数均为六颗,故称六子棋。六子棋的棋盘为3乘以3的方格。棋子可信手拿来,只要互相区分即可。 玩法 枪毙,行棋一方若将两颗棋子移至一起,且一头挨着对方的一颗棋时,则可吃子(称为枪毙)。抬子,行棋一方两个棋子夹住对方的一个棋子时,则可吃子(称为抬子)。挑子,行棋一方一个棋子插入对方的两个棋子中间时,则可吃对方两个棋子(称为挑子)。第一种吃子方法是最常用的,后两种走法一般在双方默认情况下不用。游戏中当一方的棋子被对方围困住无法行棋或者被吃到少于两颗棋子时,就被判为输棋。说的正确,一般我们都是使用第一种方法来玩。10、西洋双陆棋(Backgammon)11、将棋 日本棋种12、井字棋(Tic-Tac-Toe)也叫三子棋。“井字棋”的棋盘很简单,是一个3×3的格子,很像中国文字中的“井”字。“井字棋”游戏的规则是一方首先三子连成一线就胜利。太简单吧。14、斗兽棋(Animal),小时候常玩的动物棋,双方有八只棋子,依大小顺序为象、狮、虎、豹、狗、狼、猫、鼠。较大的可吃较小的,同类可以互吃,而鼠则可吃象。16、盘三又称“棋三”或"三棋",棋三是流传于中国民间的一种双人对弈的一类版图游戏。双方各持棋子若干(最少十二颗,一般多备几颗用于压对方被吃的棋子),棋子可信手拿来,只要互相能够区分即可。棋三的对弈过程分两步:放子,对弈双方依次将己方的棋子放入棋盘中,当自已的三个棋子成一直线时就可以吃对方一个棋子(用自己的棋子压在对方的棋子上面,只作标识用,暂时不能拿走)。直到棋盘上所有点都放满了棋子为止。走子,将放子时被吃掉的棋子清理出棋盘,腾出的空位便可以走子了,但不可下再下棋子。棋子每次只能走一格,走至能将己方的棋子连成一线,就可以吃掉对方任意一个棋子。直到有一方的棋子少于三粒时告负并结束。六连棋是在六边形格的棋盘上玩的图版游戏,亦是数学游戏,通常使用10乘10或11乘11的菱形棋盘(约翰·纳希则采用14×14的棋盘)。18、独粒钻石棋是一个人的游戏,起源于法国,是一种风靡世界的益智游戏,与中国发明的“华容道”、匈牙利人发明的“魔方”并称为“智力游戏界的三大不可思议。它类似于跳棋,但不能走步,只能跳。走棋时棋子跳过相邻的棋子到空位上,并把跳过的旗子吃掉。棋子可以沿棋盘的格线横跳、纵跳,但不能斜跳。

声明:易趣百科所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系315127732@qq.com
广告位招租
横幅广告