用C语言写了个米字旗游戏,算是初级版本吧。
后续有时间的话会继续更新,其中没有什么难点
就是从上到下写出来的
好了,下面我们来看看运行后的界面
PS:第一棋手的棋子用“O”代替。第二位棋手的棋子用“X”代替
开始下棋:
棋子不在范围内,重新输入
O赢了,游戏结束
以下就是本次代码,
/*
米字旗
*/
#include<stdio.h>
int main(){
int map[3][3] = {}; /*记录棋盘状态的二维数组
每个位置对应一个位置
0表示空位置
1表示第一个棋手的位置
2表示第二个棋手的位置
*/
int num = 0; //记录棋子占住的位子个数
int posy = 0,posx = 0; //记录下一个棋子所在位置的行号和列号
int player = 1; /*当前棋手,
1表示第一个棋手,
2表示第二个棋手
*/
int win = 0; /*表示比赛结果,
0表示和棋,
1表示第一个棋手赢了,
2表示第二个棋手赢了
*/
int row = 0,col = 0;
printf("欢迎来到米字棋的世界\n");
printf("* * *\n* * *\n* * *\n");
for(num = 0;num <= 8;num++){
//获得下一个棋子的位置
do{
printf("请输入棋子的位置:");
scanf("%d %d",&posy,&posx);
posx--;
posy--;
}while(posx < 0 || posx > 2 || posy < 0 ||
posy >2 || map[posy][posx]);
//修改数组中记录的棋盘状态
map[posy][posx] = player;
//打印变化后的棋盘
for(row = 0;row <= 2;row++){
for(col = 0;col <= 2;col++){
if(!map[row][col]){
printf("*");
}
else if(map[row][col] == 1){
printf("O");
}
else{
printf("X");
}
}
printf("\n");
}
//修改当前棋手
player = 3 - player;
//判断输赢
if(map[0][0] && map[0][0] == map[1][1] && map[0][0] == map[2][2]){
win = map[0][0];
break;
}
if(map[0][2] && map[0][2] == map[1][1] && map[0][2] == map[2][0]){
win = map[0][2];
break;
}
if(map[0][0] && map[0][0] == map[0][1] && map[0][0] == map[0][2]){
win = map[0][0];
break;
}
if(map[0][0] && map[0][0] == map[1][0] && map[0][0] == map[2][0]){
win = map[0][0];
break;
}
if(map[0][1] && map[0][1] == map[1][1] && map[0][1] == map[2][1]){
win = map[0][1];
break;
}
if(map[0][2] && map[0][2] == map[1][2] && map[0][2] == map[2][2]){
win = map[0][2];
break;
}
if(map[1][0] && map[1][0] == map[1][1] && map[1][0] == map[1][2]){
win = map[1][0];
break;
}
if(map[2][0] && map[2][0] == map[2][1] && map[2][0] == map[2][2]){
win = map[2][0];
break;
}
}
//提示游戏结果
if(!win){
printf("和棋\n");
}
else if(win == 1){
printf("O赢了\n");
}
else{
printf("X赢了\n");
}
return 0;
}