建设门户网站的好处,河北地图,网站设计理念,宿迁市建设局网站怎么投诉一、问题概述
大家都玩过棋盘游戏吧#xff0c;像五子棋一样#xff0c;玩家或者是电脑一人下一次#xff0c;当玩家或者是电脑的某一方先将各自的五个棋子下成一条线时#xff0c;谁就赢#xff0c;棋盘游戏就会结束。 当然#xff0c;我今天要介绍的是三子棋#xff…一、问题概述
大家都玩过棋盘游戏吧像五子棋一样玩家或者是电脑一人下一次当玩家或者是电脑的某一方先将各自的五个棋子下成一条线时谁就赢棋盘游戏就会结束。 当然我今天要介绍的是三子棋和五子棋的原理是一样的当玩家或者是电脑的某一方先将各自的三个棋子下成一条线时谁就赢棋盘游戏就会结束。
下面我们用如下棋盘模拟一下电脑上的棋盘 有一点点小不要嫌弃哈。这就是初始的棋盘。那些空格的位置就是需要下棋的地方。
二、解决方案 1初始化棋盘将棋盘可以要下的地方初始化为空格这里我们用二维数组来存放这些空格以便后边的替换
2开始游戏时先让玩家玩输入玩家要下的坐标然后让电脑玩给定随机的坐标即可。
3当三个坐标成一条直线时则下的那一方就赢。判断坐标成一线 三、实现代码
//ThreeChess.h #define _CRT_SECURE_NO_WARNINGS 1
#pragma once
#define Row 3
#define Col 3
#includestring.h
#includetime.h
#includestdlib.h
#includestdio.h//打印棋盘
void PrintChess(char arr[][Col],int row)
{printf(%c|%c|%c\n,arr[0][0],arr[0][1],arr[0][2]);printf(------\n);printf(%c|%c|%c\n,arr[1][0],arr[1][1],arr[1][2]);printf(------\n);printf(%c|%c|%c\n,arr[2][0],arr[2][1],arr[2][2]);
}//玩家下棋
void Player(char arr[][Col],int row)
{int x 0;int y 0;printf(玩家玩\n);printf(请输入坐标:);scanf(%d%d,x,y);x x-1;y y-1;while(arr[x][y] ! ){printf(输入数据不合法请重新输入!\n);printf(请输入坐标:);scanf(%d%d,x,y);x x-1; //现实中的坐标和计算机中的坐标相差1所以横纵坐标各减1y y-1;}if(arr[x][y] ){arr[x][y] *;}PrintChess(arr,row);
}//电脑下棋
void Computer(char arr[][Col],int row)
{int x rand()%row;int y rand()%Col;printf(电脑玩\n);while(arr[x][y] ! ){x rand()%row;y rand()%Col;}if(arr[x][y] ){arr[x][y] #;}PrintChess(arr,row);
}int Check(char arr[][Col])
{int j 0;int i 0;int count 0;//判断是否三个坐标为一条线for(i 0;i 3;i){if((((arr[i][0] arr[i][1])(arr[i][1] arr[i][2]))(arr[i][1] *)) ||(((arr[0][i] arr[1][i]) (arr[1][i] arr[2][i]))(arr[1][i] *)) ||(((arr[0][0] arr[1][1])(arr[1][1] arr[2][2]))(arr[1][1] *)) ||(((arr[0][2] arr[1][1])(arr[1][1] arr[2][0]))(arr[1][1] *))){ return 1; }if((((arr[i][0] arr[i][1])(arr[i][1] arr[i][2]))(arr[i][1] #)) ||(((arr[0][i] arr[1][i]) (arr[1][i] arr[2][i]))(arr[1][i] #)) ||(((arr[0][0] arr[1][1])(arr[1][1] arr[2][2]))(arr[1][1] #)) ||(((arr[0][2] arr[1][1])(arr[1][1] arr[2][0]))(arr[1][1] #))){ return -1; }for(j 0; j 3;j){if(arr[i][j] ! ){count;}}}if(count 9){printf(平局\n);}}void Game()
{char arr[Row][Col];int i 0;int j 0;memset(arr, ,sizeof(char)*Row*Col);PrintChess(arr,Row);while(1){Player(arr,Row);if(Check(arr) 1){printf(玩家赢\n);return;}Computer(arr,Row);if(Check(arr) -1){printf(电脑赢\n);return;}}
}//ThreeChess.c #includeThreeChess.h
#define _CRT_SECURE_NO_WARNINGS 1void FunTest()
{int select 0;while(1){printf(------------------------------------\n);printf(------------- 1. play---------------\n);printf(------------- 2. exit---------------\n);printf(请选择:\n);scanf(%d,select);switch(select){case 1:Game();break;case 2:return;default:break;}}
}int main()
{FunTest();return 0;
}四、运行结果