/*
tic-tac-toe游戏获胜判断
程序判断3x3的矩阵是否有获胜的一方
输出表示获胜的一方的字符'X'或'O' 或无人胜出
矩阵中的数字1 表示该位置有一个'X'
矩阵中的数字0 表示该位置有一个'O'
*/
#include <stdio.h>
//判断'X'或'O'是否存在s个字符 返回胜出结果
int get_result(int x,int o,int s)
{
int r = -1;
if(x == s){
r = 1;
}else if(o == s){
r = 0;
}
return r;
}
int main()
{
const int size = 3;
int board[size][size];
int result = -1;//-1:没人赢 1: X赢 0: O赢
int i,j;
int numofX;
int numofO;
//读入矩阵
for( i=0; i < size; i++){
for( j=0; j < size; j++){
scanf("%d",&board[i][j]);
}
}
//检查行
for(i = 0; i < size && result == -1; i++){
numofX = numofO = 0;
for(j = 0; j < size; j++){
if(board[i][j] == 1){
numofX ++;
}else if(board[i][j] == 0){
numofO ++;
}
}
result = get_result(numofX,numofO,size);
}
//检查列
if(result == -1){
for(j = 0; j < size && result == -1; j++){
numofX = numofO = 0;
for(i = 0; i < size; i++){
if(board[i][j] == 1){
numofX ++;
}else if(board[i][j] == 0){
numofO ++;
}
}
result = get_result(numofX,numofO,size);
}
}
//检查正对角线 0,0 1,1 2,2
if(result == -1){
numofX = numofO = 0;
for(i = 0; i < size; i++){
if(board[i][i] == 1){
numofX ++;
}else if(board[i][i] == 0){
numofO ++;
}
}
result = get_result(numofX,numofO,size);
}
//检查斜对角线 2,0 1,1 0,2
if(result == -1){
numofX = numofO = 0;
for(j = size - 1; j >= 0; j--){
if(board[j][size-j-1] == 1){
numofX ++;
}else if(board[j][size-j-1] == 0){
numofO ++;
}
}
result = get_result(numofX,numofO,size);
}
//输出胜负平
if(1 == result){
printf("X胜出\n");
}else if(0 == result){
printf("O胜出\n");
}else{
printf("平局\n");
}
return 0;
}
C实现"井"字棋判断
最新推荐文章于 2023-11-26 12:42:56 发布