首页 » 软件开发 » C/C++编程日记:逻辑井字棋(圈叉)游戏开发(棋盘落子棋子和棋游戏开发)

C/C++编程日记:逻辑井字棋(圈叉)游戏开发(棋盘落子棋子和棋游戏开发)

萌界大人物 2024-07-24 08:46:21 0

扫一扫用手机浏览

文章目录 [+]

33的棋盘中,只要一条线上出现三个一样的棋子就获胜(玩家或电脑);如果棋盘已经放满还未出现三个棋子一条线则打成平手。

具体细节:

初始化棋盘(用空格初始化)

C/C++编程日记:逻辑井字棋(圈叉)游戏开发(棋盘落子棋子和棋游戏开发) 软件开发
(图片来自网络侵删)

//初始化棋盘

voidinitChess(charchessbox[ROW][COL]){ for(introw=0;row<ROW;row++){ for(intcol=0;col<COL;col++){ chessbox[row][col]=' ';}}}

打印棋盘

//打印棋盘

voidprintChess(charchessbox[ROW][COL]){ system("cls");printf("+---+---+---+\n");for(introw=0;row<ROW;row++){ printf("| %c | %c | %c |\n",chessbox[row][0],chessbox[row][1],chessbox[row][2]);printf("+---+---+---+\n");}}

电脑落子(用o表示电脑落子)

//电脑落子(用o表示)

voidcomputerMove(charchessbox[ROW][COL]){ srand(time(0));while(1){ introw=rand()%3;intcol=rand()%3;if(chessbox[row][col]==' '){ chessbox[row][col]='o';break;}}}

玩家落子

//玩家落子(用x表示)

voidplayerMove(charchessbox[ROW][COL]){ introw,col;while(1){ printf("请输入您的落子地点:");scanf("%d %d",&row,&col);if(row>=3||col>=3){ printf("您输入的落子位置有误,请重新输入:");continue;}if(chessbox[row][col]==' '){ chessbox[row][col]='x';break;}printf("该位置已有棋子,请重新输入:");}}

三个棋子一条线

在一行或一列实现三个棋子一条线

//行

for(introw=0;row<ROW;row++){ if(chessbox[row][0]!=' '&&chessbox[row][0]==chessbox[row][1]&&chessbox[row][0]==chessbox[row][2]){ returnchessbox[row][0];}}//列

for(intcol=0;col<COL;col++){ if(chessbox[0][col]!=' '&&chessbox[0][col]==chessbox[1][col]&&chessbox[0][col]==chessbox[2][col]){ returnchessbox[0][col];}}

对角线实现三个棋子一条线

if(chessbox[0][0]!=' '&&chessbox[0][0]==chessbox[1][1]&&chessbox[0][0]==chessbox[2][2]){ returnchessbox[0][0];}if(chessbox[2][0]!=' '&&chessbox[2][0]==chessbox[1][1]&&chessbox[2][0]==chessbox[0][2]){ returnchessbox[2][0];}

和棋

棋盘放满还未获胜,则为和棋,打成了平手。

在这里插入代码片//和棋 if(isFull(checkbox)){ return'a';}

输赢约定:

返回x代表玩家获胜

if(isWinner(chessbox)=='x'){ printf("恭喜您赢啦!\n");break;}

返回o代表电脑获胜

if(isWinner(chessbox)=='o'){ printf("很遗憾,您输了!\n");break;}

返回a代表和棋(打成平手)

if(isWinner(chessbox)=='a'){ printf("你和电脑同一水平呦!\n");break;}

判断棋盘是否放满:

返回1代表棋盘已满

返回0代表棋盘未满

//判断棋盘是否摆满//1表示满;0表示不满。

intisFullChess(charchessbox[ROW][COL]){ for(introw=0;row<ROW;row++){ for(intcol=0;col<COL;col++){ //找到空格,说明未满

if(chessbox[row][col]==' '){ return0;}}}return1;}

源代码:

如果你在学习C/C++的过程中遇到了问题,可以来加入

标签:

相关文章

语言中的借用,文化交融的桥梁

自古以来,人类社会的交流与发展离不开语言的传播。在漫长的历史长河中,各民族、各地区之间的文化相互碰撞、交融,产生了许多独特的语言现...

软件开发 2025-01-01 阅读1 评论0

机顶盒协议,守护数字生活的新卫士

随着科技的飞速发展,数字家庭逐渐走进千家万户。在这个时代,机顶盒成为了连接我们与丰富多彩的数字世界的重要桥梁。而机顶盒协议,作为保...

软件开发 2025-01-01 阅读1 评论0

语言基础在现代社会的重要性及方法步骤

语言是人类沟通的桥梁,是社会发展的基础。语言基础作为语言学习的基石,对于个人、社会乃至国家的发展具有重要意义。本文将从语言基础在现...

软件开发 2025-01-01 阅读2 评论0

粤语电影,传承文化,点亮时代之光

粤语电影,作为中国电影产业的一朵奇葩,以其独特的地域特色、丰富的文化内涵和鲜明的艺术风格,赢得了广大观众的喜爱。本文将从粤语电影的...

软件开发 2025-01-01 阅读3 评论0

苹果游戏语言,塑造未来娱乐体验的基石

随着科技的飞速发展,游戏产业逐渐成为全球娱乐市场的重要支柱。在我国,游戏产业更是蓬勃发展,吸引了无数玩家和投资者的目光。而在这其中...

软件开发 2025-01-01 阅读1 评论0