三子棋

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#define Max_row 3
#define Max_col 3
void Menu(){
printf("******************\n");
printf(“1.游戏开始\n”);
printf(“0.退出游戏\n”);
printf("******************\n");
}

char chessboard[Max_row][Max_col];

void SetChessboard(){
for (int row = 0;row < Max_row; ++row){
for (int col = 0; col < Max_col; ++col){
chessboard[row][col] = ’ ‘;
}
}
}
void Print(){
for (int row = 0; row < Max_row; ++row){
printf("| %c | %c | %c |\n", chessboard[row][0],
chessboard[row][1], chessboard[row][2]);
if (row != Max_row - 1){
printf("|—|---|—|\n");
}
}
}
void PeopleGo(){
printf(“玩家落子!!!\n”);
while (1){
printf(“请输入一组坐标:”);
int row = 0;
int col = 0;
scanf("%d %d", &row, &col);
if (row >= Max_row || col >= Max_col || row < 0 || col < 0){
printf(“请使用规范操作,蠢货!!!\n”);
continue;
}
if(chessboard[row][col] !=’ '){
printf(“您输入的坐标已经被占了!!!\n”);
continue;
}
chessboard[row][col] = ‘x’;
break;
}
}
// x玩家胜,o电脑胜,q和棋
char CheckOver(){
//检查行,列,对角线
for (int row = 0; row < Max_row; ++row){
if (chessboard[row][0] == chessboard[row][1] &&
chessboard[row][0] == chessboard[row][2]){
return chessboard[row][0];
}
}
for (int col = 0; col < Max_col; ++col){
if (chessboard[0][col] == chessboard[1][col] &&
chessboard[0][col] == chessboard[2][col]){
return chessboard[0][col];
}
}
if ((chessboard[0][0] == chessboard[1][1] && chessboard[0][0] == chessboard[2][2]) ||
(chessboard[0][2] == chessboard[1][1] && chessboard[0][2] == chessboard[2][0])){
return chessboard[1][1];
}
if (IsFull()){
return ‘q’;
}
return ’ ';
}
void ComputerGo(){
printf(“电脑落子!\n”);
while (1){
int row = rand() % Max_row;
int col = rand() % Max_col;
if (chessboard[row][col] != ’ ’ ){
continue;
}
else{
chessboard[row][col] = ‘o’;
break;
}
}
}
int IsFull(){
for (int row = 0; row < Max_row; ++row){
for (int col = 0; col < Max_col; ++col){
if (chessboard[row][col] == ’ '){
return 0;
}
}
}
return 1;
//必须把所有的位置都找完
}
void Game(){
//0.创建棋盘
char winner = ’ ';
SetChessboard();
while (1){
system(“cls”);
//1.打印棋盘
Print();
//2.玩家走
PeopleGo();
//3.检测游戏是否结束

	winner = CheckOver();
	if (winner != ' '){
		break;
	}
		//4.电脑走
		ComputerGo();
		//5.检测游戏是否结束
	winner = CheckOver();
	if (winner != ' '){
		break;
	}
} 
		system("cls ");
		if (winner == 'x'){
			printf("你赢了!!\n");
		}
		else if (winner == 'o'){
			printf("你输了!!\n");
		}
		else if (winner == 'q'){
			printf("和棋!!\n");
		}
		else{
			printf("出错了!!\n");
		}
		Print();

}
int main(){
Menu();
while (1){
int choice;
scanf("%d", &choice);
if (choice == 1){
Game();
system(“cls”);
Menu();
}
else if(choice == 0){
break;
}
}
system(“pause”);
return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值