三连棋游戏 C语言源代码 网络提供 自行修改编译通过
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
//三连棋游戏(两人轮流在一有九格方盘上划加字或圆圈, 谁先把三个同一记号排成横线、直线、斜线, 即是胜者)
//由网络提供,自行修改,在vc6.0++中,复制即可编译通过
//我的QQ号码:354441467 交流交流编程!
# include
# include
char matrix[3][3];
void init_matrix(void);
void disp_matrix(void);
void get_player_move(void);
void get_computer_move(void);
char check(void);
int main(void)
{
char done;
done = ' ';
init_matrix();
do
{
disp_matrix();
get_player_move();
done = check();
if (done != ' ')
{
break;
}
get_computer_move();
done = check();
}
while (done==' ');
disp_matrix();
if (done=='X')
{
printf("you win\n");
}
else
{
printf("computer win\n");
}
return 0;
}
void init_matrix(void)
{
int i, j;
for (i=0; i<3; i++)
{
for (j=0; j<3; j++)
{
matrix[i][j] = ' ';
}
}
}
void disp_matrix(void)
{
int i;
printf("|-|-|-|\n");
for (i=0; i<3; i++)
{
printf("|%c|%c|%c|", matrix[i][0], matrix[i][1], matrix[i][2]);
printf("\n|-|-|-|\n");
}
}
void get_player_move(void)
{
int val_x, val_y;
int x, y;
printf("Enter coordinates for your X:");
scanf("%d,%d", &val_x, &val_y);
x = val_x - 1;
y = val_y - 1;
if (matrix[x][y] != ' ')
{
printf("Invalid move,try again.\n");
get_player_move();
}
else
{
matrix[x][y]='X';
}
}
void get_computer_move(void)
{
int i, j;
for(i=0; i<3; i++)
{
for (j=0; j<3; j++)
{
if (matrix[i][j] == ' ')
{
break;
}
}
break;
} //一定要跳出循环
if (i*j==9)
{
printf("draw\n");
exit(0);
}
else
{
matrix[i][j] = 'Y';
}
}
char check(void)
{
int i;
/*检查横行*/
for(i=0;i<3;i++)
{
if (matrix[i][0]==matrix[i][1] && matrix[i][0]==matrix[i][2])
{
return matrix[i][0];
}
}
/*检查竖行*/
for(i=0;i<3;i++)
{
if (matrix[0][i]==matrix[1][i] && matrix[0][i]==matrix[2][i])
{
return matrix[0][i];
}
}
/*检查对角线*/
if(matrix[0][0]==matrix[1][1] && matrix[1][1]==matrix[2][2])
{
return matrix[0][0];
}
if(matrix[0][2]==matrix[1][1]&&matrix[1][1]==matrix[2][0])
{
return matrix[0][2];
}
return ' ';
}