欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

五子棋

程序员文章站 2022-06-14 11:00:18
...
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
//整体思路:
//1.打印一个菜单使界面更加友好
//2.定义一个二维数组来表示棋盘
//3.对棋盘进行初始化,这里让棋盘全部为空格即初始化
//4.首先打印初始化的棋盘
//5.玩家落子并且检验游戏是否结束
//6.电脑落子并且减压游戏是否结束
//再回到第三步

////一、5*5的棋盘
////此处的宏定义是为了数组的定义使用常量,方便以后的修改改动地方少
//#define ROW 5
//#define COL 5
////2.先定义棋盘大小
//char g_chess_board[ROW][COL];
//
//int IsFull() {
//	for (int row = 0; row < ROW; row++) {
//		for (int col = 0; col < COL; col++) {
//			if (g_chess_board[row][col] == ' ') {
//				return 0;
//			}
//		}
//	}
//	return 1;
//}
//
////1.打印菜单
//void PrintMenu() {
//	printf("####################\n");
//	printf("        1.play      \n");
//	printf("        0.exit      \n");
//	printf("####################\n");
//}
////3.对棋盘进行初始化
////在这里我们用x表示玩家,o表示电脑,' '表示空
//void InitBoard() {
//	for (int row = 0; row < ROW; row++) {
//		for (int col = 0; col < COL; col++) {
//			g_chess_board[row][col] = ' ';//对3*3棋盘的每一个元素进行初始化为
//										  //空格;
//		}
//	}
//}
////4.打印一个5*5的棋盘
//void PrintBoard() {
//	for (int row = 0; row < ROW; row++) {
//		printf("| %c | %c | %c | %c | %c |\n", g_chess_board[row][0], g_chess_board[row][1],
//			g_chess_board[row][2],g_chess_board[row][3],g_chess_board[row][4]);
//		if (row != ROW - 1) {
//			printf("|---|---|---|---|---|\n");
//		}
//	}
//}
////5.玩家落子
////检验是否结束游戏(在检验游戏游戏是否结束的时候一共有三种情况:
//			  //玩家赢得比赛、电脑赢得比赛、和棋(棋盘满了但是没有分出胜负))
//void PlayerMove() {
//	while (1) {
//		//先提示玩家输入坐标
//		printf("请玩家输入坐标row col:");
//		//玩家落子
//		int row = -1;
//		int col = -1;
//		scanf("%d %d", &row, &col);
//		//对输入进行校验
//		if (row < 0 || row >= ROW || col < 0 || col >= COL) {
//			printf("输入不合理,请重新输入:\n");
//			continue;
//		}
//		if (g_chess_board[row][col] != ' ') {
//			printf("当前位置已经有棋子了,请重新输入:\n");
//			continue;
//		}
//		//玩家输入合理,则给该位置赋值为'x'
//		g_chess_board[row][col] = 'x';
//		break;
//	}
//}
////5.电脑落子
////本次电脑下棋采用生成随机数的方式
////检验是否结束游戏
//void ComputerMove() {
//	printf("电脑落子\n");
//	int row = 0;
//	int col = 0;
//	srand((unsigned)time(NULL));
//	while (1) {
//		//产生随机数
//		row = rand() % ROW;//[0,4]
//		col = rand() % COL;//[0,4]
//		if (g_chess_board[row][col] == ' ') {
//			g_chess_board[row][col] = 'o';
//			break;
//		}
//	}
//}
//char CheckWin() {
//	//判断胜利的条件:行、列、对角线
//	//1.行的判断
//	for (int row = 0; row < ROW; row++) {
//		if (g_chess_board[row][0] == g_chess_board[row][1]
//			&& g_chess_board[row][0] == g_chess_board[row][2]
//			&& g_chess_board[row][0] == g_chess_board[row][3]
//			&& g_chess_board[row][0] == g_chess_board[row][4]) {
//			return g_chess_board[row][0];
//		}
//	}
//	//2.列的判断
//	for (int col = 0; col < COL; col++) {
//		if (g_chess_board[0][col] == g_chess_board[1][col]
//			&& g_chess_board[0][col] == g_chess_board[2][col]
//			&& g_chess_board[0][col] == g_chess_board[3][col]
//			&& g_chess_board[0][col] == g_chess_board[4][col]) {
//			return g_chess_board[0][col];
//		}
//	}
//
//	//3.主对角线的判断
//	if (g_chess_board[0][0] == g_chess_board[1][1]
//		&& g_chess_board[0][0] == g_chess_board[2][2]
//		&& g_chess_board[0][0] == g_chess_board[3][3]
//		&& g_chess_board[0][0] == g_chess_board[4][4])
//	{
//		return g_chess_board[0][0];
//	}
//	//3.次对角线的判断
//	if (g_chess_board[0][4] == g_chess_board[1][3]
//		&& g_chess_board[0][4] == g_chess_board[2][2]
//		&& g_chess_board[0][4] == g_chess_board[3][1]
//		&& g_chess_board[0][4] == g_chess_board[4][0])
//	{
//		return g_chess_board[0][4];
//	}
//	//4.全盘满,和棋的情况
//	if (IsFull()) {
//		return 'p';
//	}
//	//5.未满返回空格,继续进行
//	else
//		return ' ';
//}
//int main() {
//	int input = 0;
//	PrintMenu();
//	printf("请输入选择:\n");
//	scanf("%d", &input);
//	if (input == 1) {
//		char winner = ' ';
//		InitBoard();
//		while (1) {
//			PrintBoard();
//			PlayerMove();
//			winner = CheckWin();
//			if (winner != ' ') {
//				//游戏结束,玩家获胜
//				break;
//			}
//			PrintBoard();
//			printf("\n");
//			ComputerMove();
//			winner = CheckWin();
//			if (winner != ' ') {
//				//游戏结束,电脑获胜
//				break;
//			}
//		}
//		if (winner == 'x') {
//			printf("玩家获胜!\n");
//		}
//		else if (winner == 'o') {
//			printf("电脑获胜!\n");
//		}
//		else if (winner == 'p') {
//			printf("和棋\n");
//		}
//	}
//	else if (input == 0) {
//		printf("退出游戏!\n");
//	}
//	system("pause");
//	return 0;
//}

上一篇: 五子棋

下一篇: 五种IO模型