【C語言】如何使用數(shù)組實現(xiàn)三子棋(電腦智能堵棋)-創(chuàng)新互聯(lián)

文章的目錄
  • 一、前言
  • 二、代碼的整體框架
  • 三、實現(xiàn)三子棋的各種功能和邏輯的串聯(lián)
    • 3.1創(chuàng)建初始界面(進行玩家選擇)
    • 3.2棋盤的初始化和棋盤的搭建
    • 3.3玩家下棋
    • 3.4電腦下棋
    • 3.5電腦的智能下棋
    • 3.6判斷輸贏并打印
  • 四、完整代碼
  • 五、結語

成都創(chuàng)新互聯(lián)網(wǎng)站建設公司一直秉承“誠信做人,踏實做事”的原則,不欺瞞客戶,是我們最起碼的底線! 以服務為基礎,以質(zhì)量求生存,以技術求發(fā)展,成交一個客戶多一個朋友!專注中小微企業(yè)官網(wǎng)定制,成都網(wǎng)站設計、成都做網(wǎng)站,塑造企業(yè)網(wǎng)絡形象打造互聯(lián)網(wǎng)企業(yè)效應。一、前言

三子棋是一種民間傳統(tǒng)游戲,又叫九宮棋、圈圈叉叉棋、一條龍、井字棋等。游戲分為雙方對戰(zhàn),雙方依次在9宮格棋盤上擺放棋子,率先將自己的三個棋子走成一條線就視為勝利,而對方就算輸了,但是三子棋在很多時候會出現(xiàn)和棋的局面。

相信大家都玩過三子棋,那既然學習了C語言,有沒有想親手寫一個呢?自己寫的可能也會更有趣吧,快付出行動吧,我們一起完成三子棋代碼的書寫。

先讓我們看看完成的效果圖,來確定我們的目標任務。
在這里插入圖片描述

?????????????

二、代碼的整體框架

我們完成一個程序前要建立一個框架,main函數(shù)放在test.c文件中并且對游戲需要的函數(shù)進行引用,實現(xiàn)游戲的各種功能的函數(shù)全部在game.c文件中完成。game.h文件中包含了程序所需的各種頭文件并且包換對實現(xiàn)游戲功能的各種函數(shù)的聲明。

在本次游戲設計中,為什么使用了3個文件難道不能放在一個文件中呢?

三子棋的實現(xiàn)需要多個模塊的功能相互串聯(lián),多個文件可以分別處理各自模塊的功能,能更好處理各個模塊之間的邏輯并且便于后期調(diào)試,也使得代碼的可讀性提高。所以在寫一個長的代碼時,我們要提前建立一個框架,不僅是為了別人讀懂,也是為了后面進行維護和更新提供便利,還可以培養(yǎng)我們對日常生活中一些事情的由繁化簡的思維。希望大家都養(yǎng)成這種良好的習慣。

三、實現(xiàn)三子棋的各種功能和邏輯的串聯(lián) 3.1創(chuàng)建初始界面(進行玩家選擇)

打印菜單并且對游戲進行難度選擇

void menu1()
{printf("*********************************\n");
	printf("******    1. 開始游戲       *****\n");
	printf("******    0. 退出游戲       *****\n");
	printf("*********************************\n");
}
void menu2()
{printf("**************************************\n");
	printf("******    1.玩家vs電腦(傻瓜版)********\n");
	printf("******    2.玩家vs玩家        ********\n");
	printf("******    3.玩家vs電腦(智能版)********\n");
	printf("**************************************\n");
}

void game1()
{}
void game2()
{}
void game3()
{}
int main()
{int input1 = 0;
	int input2 = 0;
	srand((unsigned int)time(NULL));
	do
	{menu1();
		printf("請選擇:>");
		scanf("%d", &input1);
		menu2();
		printf("請選擇:>");
		scanf("%d", &input2);
		switch (input1)
		{case 1:
			if (1 == input2)
			{		game1();
			}
			else if (2 == input2)
			{		game2();
			}
			else if (3 == input2)
			{		game3();
			}
			break;
		case 0:
			printf("退出游戲\n");

			break;
		default:
			printf("選擇錯誤,重新選擇\n");
			break;
		}
	} while (input1);
	return 0;
}

運行效果圖

在這里插入圖片描述

3.2棋盤的初始化和棋盤的搭建
?
void InitBoard(char board[ROW][COL], int row, int col)
{int i = 0;
	int j = 0;
	for (i = 0; i< row; i++)
	{for (j = 0; j< col; j++)
		{	board[i][j] = ' ';
		}
	}
}
void DisplayBoard(char board[ROW][COL], int row, int col)
{int i = 0;
	for (i = 0; i< row; i++)
	{int j = 0;
		for (j = 0; j< col; j++)
		{	printf(" %c ", board[i][j]);
			if (j< col - 1)
				printf("|");
		}
		printf("\n");
		if (i< row - 1)
		{	int j = 0;
			for (j = 0; j< col; j++)
			{		printf("---");
				if (j< col - 1)
					printf("|");
			}
			printf("\n");
		}
	}
}
void game1()
{//存儲數(shù)據(jù) - 二維數(shù)組
	char board[ROW][COL];
	//初始化棋盤 - 初始化空格
	InitBoard(board, ROW, COL);
	//打印一下棋盤 - 本質(zhì)是打印數(shù)組的內(nèi)容
	DisplayBoard(board, ROW, COL);
}
void game2()
{//存儲數(shù)據(jù) - 二維數(shù)組
	char board[ROW][COL];
	//初始化棋盤 - 初始化空格
	InitBoard(board, ROW, COL);
	//打印一下棋盤 - 本質(zhì)是打印數(shù)組的內(nèi)容
	DisplayBoard(board, ROW, COL);
}
void game3()
{//存儲數(shù)據(jù) - 二維數(shù)組
	char board[ROW][COL];
	//初始化棋盤 - 初始化空格
	InitBoard(board, ROW, COL);
	//打印一下棋盤 - 本質(zhì)是打印數(shù)組的內(nèi)容
	DisplayBoard(board, ROW, COL);
}

運行效果圖

在這里插入圖片描述

3.3玩家下棋
?
void PlayerMove1(char board[][COL], int row, int col)
{int x = 0;
	int y = 0;
	printf("玩家走:>\n");
	while (1)
	{printf("請輸入下棋的坐標:>");
		scanf("%d %d", &x, &y);
		//判斷坐標合法性
		if (x >= 1 && x<= row && y >= 1 && y<= col)
		{	//下棋
			//坐標是否被占用
			if (board[x - 1][y - 1] == ' ')
			{		board[x - 1][y - 1] = '*';
				break;
			}
			else
			{		printf("坐標被占用, 請重新輸入\n");
			}
		}
		else
		{	printf("坐標非法, 請重新輸入\n");
		}
	}
}

運行效果圖

在這里插入圖片描述

3.4電腦下棋
?
void ComputerMove1(char board[ROW][COL], int row, int col)
{printf("電腦走:>\n");
	int x = 0;
	int y = 0;
	while (1)
	{x = rand() % row;
		y = rand() % col;
		if (board[x][y] == ' ')
		{	board[x][y] = '#';
			break;
		}
	}
}

運行效果圖

在這里插入圖片描述

3.5電腦的智能下棋
?
int IntelligentComputerMove(char board[ROW][COL], int row, int col, char ch)//ch為'#'進行下棋,ch為'*'進行堵截
{//檢查電腦能否獲得勝利/堵截玩家
	int i = 0;
	//電腦對行的智能堵截
	for (i = 0; i< row; i++)
	{int j = 0;
		for (j = 0; j< col; j++)
		{	if (board[i][0] == board[i][1] && board[i][0] == ch && board[i][2] == ' ')
			{		board[i][2] = '#';
				return 1;
			}
			if (board[i][0] == board[i][2] && board[i][0] == ch && board[i][1] == ' ')
			{		board[i][1] = '#';
				return 1;
			}
			if (board[i][1] == board[i][2] && board[i][1] == ch && board[i][0] == ' ')
			{		board[i][0] = '#';
				return 1;
			}
		}
	}
	//電腦對列的智能堵截
	for (i = 0; i< row; i++)
	{int j = 0;
		for (j = 0; j< col; j++)
		{	if (board[0][j] == board[1][j] && board[0][j] == ch && board[2][j] == ' ')
			{		board[2][j] = '#';
				return 1;
			}
			if (board[0][j] == board[2][j] && board[0][j] == ch && board[1][j] == ' ')
			{		board[1][j] = '#';
				return 1;
			}
			if (board[1][j] == board[2][j] && board[1][j] == ch && board[0][j] == ' ')
			{		board[0][j] = '#';
				return 1;
			}
		}
	}
	//電腦對主對角線的智能堵截
	if (board[0][0] == board[1][1] && board[1][1] == ch && board[2][2] == ' ')
	{board[2][2] = '#';
		return 1;
	}
	if (board[0][0] == board[2][2] && board[0][0] == ch && board[1][1] == ' ')
	{board[1][1] = '#';
		return 1;
	}
	if (board[1][1] == board[2][2] && board[1][1] == ch && board[0][0] == ' ')
	{board[0][0] = '#';
		return 1;
	}
	//電腦對副對角線的智能堵截
	if (board[0][2] == board[1][1] && board[0][2] == ch && board[2][0] == ' ')
	{board[2][0] = '#';
		return 1;
	}
	if (board[0][2] == board[2][0] && board[0][2] == ch && board[1][1] == ' ')
	{board[1][1] = '#';
		return 1;
	}
	if (board[1][1] == board[2][0] && board[1][1] == ch && board[0][2] == ' ')
	{board[0][2] = '#';
		return 1;
	}
	return 0;//若電腦無法贏棋或無法自動,則返回0
}
void ComputerMove2(char board[ROW][COL], int row, int col)
{printf("電腦走:>\n");
	int flag1 = 0;
	int flag2 = 0;
	flag1 = IntelligentComputerMove(board, ROW, COL, '#');//電腦智能贏棋
	if (flag1 == 0)//若電腦無法贏棋,則進行阻攔
	{flag2 = IntelligentComputerMove(board, ROW, COL, '*');//電腦智能堵截
		if (flag2 == 0)//若贏棋和自動都不滿足,電腦自動下棋
		{	int x = 0;
			int y = 0;
			while (1)
			{		x = rand() % row;
				y = rand() % col;
				if (board[x][y] == ' ')
				{board[x][y] = '#';
					break;
				}
			}
		}
	}
}

運行效果圖

在這里插入圖片描述

3.6判斷輸贏并打印
?
int IsFull(char board[ROW][COL], int row, int col)
{int i = 0;	int j = 0;	for (i = 0; i< row; i++)
	{for (j = 0; j< col; j++)
		{	if (board[i][j] == ' ')
			{		return 0;
				//棋盤沒滿
			}
		}
	}
	return 1;
	//棋盤滿了
}
char IsWin(char board[ROW][COL], int row, int col)//1. 玩家贏了 - *//2. 電腦贏了 - #//3. 平局 - Q//4. 游戲繼續(xù) - C
{int i = 0;
	//判斷三行
	for (i = 0; i< row; i++)
	{if (board[i][0] == board[i][1] && board[i][1] == board[i][2] && board[i][1] != ' ')
		{	return  board[i][1];
			//		
		}
	}
	//判斷三列
	for (i = 0; i< col; i++)
	{if (board[0][i] == board[1][i] && board[1][i] == board[2][i] && board[1][i] != ' ')
		{	return board[1][i];
		}
	}
	//判斷對角線
	if (board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[1][1] != ' ')
	{return board[1][1];
	}
	if (board[0][2] == board[1][1] && board[1][1] == board[2][0] && board[1][1] != ' ')
	{return board[1][1];
	}	//判斷平局
//如果棋盤滿了返回1, 不滿返回0	
	int ret = IsFull(board, row, col);	
	if (ret == 1)
	{return 'Q';
	}
	return 'C';
}

運行效果圖

在這里插入圖片描述

建議大家也像這樣寫完一個函數(shù)的功能運行一下,能及時發(fā)現(xiàn)程序是否可以完成我們的目的,別等到代碼寫完再找就難了。

四、完整代碼

game.h —— 包含了程序所需的各種頭文件并且包換對實現(xiàn)游戲功能的各種函數(shù)的聲明

?
//頭文件的包含
#include#include#include//符號的定義
#define ROW 3
#define COL 3
//函數(shù)的聲明

//初始化棋盤的
void InitBoard(char board[ROW][COL], int row, int col);
//打印棋盤的函數(shù)
void DisplayBoard(char board[ROW][COL], int row, int col);
//玩家下棋
void PlayerMove1(char board[ROW][COL], int row, int col);
void PlayerMove2(char board[ROW][COL], int row, int col);
//電腦下棋
void ComputerMove1(char board[ROW][COL], int row, int col);
void ComputerMove2(char board[ROW][COL], int row, int col);
智能電腦下棋
static int IntelligentComputerMove(char board[ROW][COL], int row, int col, char ch);
//判斷游戲是否有輸贏
char IsWin(char board[ROW][COL], int row, int col);
?

test.c —— 對游戲需要的函數(shù)進行引用

?
#define _CRT_SECURE_NO_WARNINGS 1

#include "game.h"
void menu1()
{printf("*********************************\n");
	printf("******    1. 開始游戲       *****\n");
	printf("******    0. 退出游戲       *****\n");
	printf("*********************************\n");
}
void menu2()
{printf("**************************************\n");
	printf("******    1.玩家vs電腦(傻瓜版)********\n");
	printf("******    2.玩家vs玩家        ********\n");
	printf("******    3.玩家vs電腦(智能版)********\n");
	printf("**************************************\n");
}
void game1()
{//存儲數(shù)據(jù) - 二維數(shù)組
	char board[ROW][COL];
	//初始化棋盤 - 初始化空格
	InitBoard(board, ROW, COL);
	//打印一下棋盤 - 本質(zhì)是打印數(shù)組的內(nèi)容
	DisplayBoard(board, ROW, COL);
	char ret = 0;
	//接受游戲狀態(tài)
	while (1)
	{//玩家下棋
		PlayerMove1(board, ROW, COL);
		DisplayBoard(board, ROW, COL);
		//判斷玩家是否贏得游戲
		ret = IsWin(board, ROW, COL);
		if (ret != 'C')
			break;		
		//電腦下棋
		ComputerMove1(board, ROW, COL);
		DisplayBoard(board, ROW, COL);
		//判斷電腦是否贏得游戲
		ret = IsWin(board, ROW, COL);
		if (ret != 'C')
			break;
	}
	if (ret == '*')
	{printf("玩家贏了\n");
	}
	else if(ret == '#')
	{printf("電腦贏了\n");
	}
	else
	{printf("平局\n");
	}
	DisplayBoard(board, ROW, COL);
}
void game2()
{//存儲數(shù)據(jù) - 二維數(shù)組
	char board[ROW][COL];
	//初始化棋盤 - 初始化空格
	InitBoard(board, ROW, COL);
	//打印一下棋盤 - 本質(zhì)是打印數(shù)組的內(nèi)容
	DisplayBoard(board, ROW, COL);
	char ret = 0;
	//接受游戲狀態(tài)
	while (1)
	{//玩家下棋
		PlayerMove1(board, ROW, COL);
		DisplayBoard(board, ROW, COL);
		//判斷玩家是否贏得游戲
		ret = IsWin(board, ROW, COL);
		if (ret != 'C')
			break;
		//玩家2下棋
		PlayerMove2(board, ROW, COL);
		DisplayBoard(board, ROW, COL);
		//判斷是否贏得游戲
		ret = IsWin(board, ROW, COL);
		if (ret != 'C')
			break;
	}
	if (ret == '*')
	{printf("玩家1贏了\n");
	}
	else if (ret == '#')
	{printf("玩家2贏了\n");
	}
	else
	{printf("平局\n");
	}
	DisplayBoard(board, ROW, COL);
}
void game3()
{//存儲數(shù)據(jù) - 二維數(shù)組
	char board[ROW][COL];
	//初始化棋盤 - 初始化空格
	InitBoard(board, ROW, COL);
	//打印一下棋盤 - 本質(zhì)是打印數(shù)組的內(nèi)容
	DisplayBoard(board, ROW, COL);
	char ret = 0;
	//接受游戲狀態(tài)
	while (1)
	{//玩家1下棋
		PlayerMove1(board, ROW, COL);
		DisplayBoard(board, ROW, COL);
		//判斷玩家是否贏得游戲
		ret = IsWin(board, ROW, COL);
		if (ret != 'C')
			break;
		//電腦下棋
		ComputerMove2(board, ROW, COL);
		DisplayBoard(board, ROW, COL);
		//判斷電腦是否贏得游戲
		ret = IsWin(board, ROW, COL);
		if (ret != 'C')
			break;
	}
	if (ret == '*')
	{printf("玩家贏了\n");
	}
	else if (ret == '#')
	{printf("電腦贏了\n");
	}
	else
	{printf("平局\n");
	}
	DisplayBoard(board, ROW, COL);
}
int main()
{int input1 = 0;
	int input2 = 0;
	srand((unsigned int)time(NULL));
	do
	{menu1();
		printf("請選擇:>");
		scanf("%d", &input1);
		menu2();
		printf("請選擇:>");
		scanf("%d", &input2);
		switch (input1)
		{case 1:
			if (1 == input2)
			{		game1();
			}
			else if(2 == input2)
			{		game2();
			}
			else if (3 == input2)
			{		game3();
			}
		break;
		case 0:
			printf("退出游戲\n");

			break;
		default:
			printf("選擇錯誤,重新選擇\n");
			break;
		}
	} while (input1);
	return 0;
}

game.c —— 實現(xiàn)游戲的各種功能的函數(shù)

?
#define _CRT_SECURE_NO_WARNINGS 1

#include "game.h"
void InitBoard(char board[ROW][COL], int row, int col)
{int i = 0;
	int j = 0;
	for (i = 0; i< row; i++)
	{for (j = 0; j< col; j++)
		{	board[i][j] = ' ';
		}
	}
}
void DisplayBoard(char board[ROW][COL], int row, int col)
{	int i = 0;
	for (i = 0; i< row; i++)
	{int j = 0;
		for (j = 0; j< col; j++)
		{	printf(" %c ", board[i][j]);
		if(j	int j = 0;
			for (j = 0; j< col; j++)
			{		printf("---");
			if(jint x = 0;
	int y = 0;
	printf("玩家走:>\n");
	while (1)
	{printf("請輸入下棋的坐標:>");
		scanf("%d %d", &x, &y);
		//判斷坐標合法性
		if (x >= 1 && x<= row && y >= 1 && y<= col)
		{	//下棋
			//坐標是否被占用
			if (board[x - 1][y - 1] == ' ')
			{		board[x - 1][y - 1] = '*';
				break;
			}
			else
			{		printf("坐標被占用, 請重新輸入\n");
			}
		}
		else
		{	printf("坐標非法, 請重新輸入\n");
		}
	}
}
void PlayerMove2(char board[][COL], int row, int col)
{int x = 0;
	int y = 0;
	printf("玩家2走:>\n");
	while (1)
	{printf("請輸入下棋的坐標:>");
		scanf("%d %d", &x, &y);
		//判斷坐標合法性
		if (x >= 1 && x<= row && y >= 1 && y<= col)
		{	//下棋
			//坐標是否被占用
			if (board[x - 1][y - 1] == ' ')
			{		board[x - 1][y - 1] = '#';
				break;
			}
			else
			{		printf("坐標被占用, 請重新輸入\n");
			}
		}
		else
		{	printf("坐標非法, 請重新輸入\n");
		}
	}
}
void ComputerMove1(char board[ROW][COL], int row, int col)
{printf("電腦走:>\n");
	int x = 0;
	int y = 0;
	while (1)
	{x = rand() % row;
		y = rand() % col;
		if (board[x][y] == ' ')
		{	board[x][y] = '#';
			break;
		}
	}
}
int IntelligentComputerMove(char board[ROW][COL], int row, int col, char ch)//ch為'#'進行下棋,ch為'*'進行堵截
{//檢查電腦能否獲得勝利/堵截玩家
	int i = 0;
	//電腦對行的智能堵截
	for (i = 0; i< row; i++)
	{int j = 0;
		for (j = 0; j< col; j++)
		{	if (board[i][0] == board[i][1] && board[i][0] == ch && board[i][2] == ' ')
			{		board[i][2] = '#';
				return 1;
			}
			if (board[i][0] == board[i][2] && board[i][0] == ch && board[i][1] == ' ')
			{		board[i][1] = '#';
				return 1;
			}
			if (board[i][1] == board[i][2] && board[i][1] == ch && board[i][0] == ' ')
			{		board[i][0] = '#';
				return 1;
			}
		}
	}
	//電腦對列的智能堵截
	for (i = 0; i< row; i++)
	{int j = 0;
		for (j = 0; j< col; j++)
		{	if (board[0][j] == board[1][j] && board[0][j] == ch && board[2][j] == ' ')
			{		board[2][j] = '#';
				return 1;
			}
			if (board[0][j] == board[2][j] && board[0][j] == ch && board[1][j] == ' ')
			{		board[1][j] = '#';
				return 1;
			}
			if (board[1][j] == board[2][j] && board[1][j] == ch && board[0][j] == ' ')
			{		board[0][j] = '#';
				return 1;
			}
		}
	}
	//電腦對主對角線的智能堵截
	if (board[0][0] == board[1][1] && board[1][1] == ch && board[2][2] == ' ')
	{board[2][2] = '#';
		return 1;
	}
	if (board[0][0] == board[2][2] && board[0][0] == ch && board[1][1] == ' ')
	{board[1][1] = '#';
		return 1;
	}
	if (board[1][1] == board[2][2] && board[1][1] == ch && board[0][0] == ' ')
	{board[0][0] = '#';
		return 1;
	}
	//電腦對副對角線的智能堵截
	if (board[0][2] == board[1][1] && board[0][2] == ch && board[2][0] == ' ')
	{board[2][0] = '#';
		return 1;
	}
	if (board[0][2] == board[2][0] && board[0][2] == ch && board[1][1] == ' ')
	{board[1][1] = '#';
		return 1;
	}
	if (board[1][1] == board[2][0] && board[1][1] == ch && board[0][2] == ' ')
	{board[0][2] = '#';
		return 1;
	}
	return 0;//若電腦無法贏棋或無法自動,則返回0
}
void ComputerMove2(char board[ROW][COL], int row, int col)
{printf("電腦走:>\n");
	int flag1 = 0;
	int flag2 = 0;
	flag1 = IntelligentComputerMove(board, ROW, COL, '#');//電腦智能贏棋
	if (flag1 == 0)//若電腦無法贏棋,則進行阻攔
	{flag2 = IntelligentComputerMove(board, ROW, COL, '*');//電腦智能堵截
		if (flag2 == 0)//若贏棋和自動都不滿足,電腦自動下棋
		{	int x = 0;
			int y = 0;
			while (1)
			{		x = rand() % row;
				y = rand() % col;
				if (board[x][y] == ' ')
				{board[x][y] = '#';
					break;
				}
			}
		}
	}
}
int IsFull(char board[ROW][COL], int row, int col)
{int i = 0;	int j = 0;	for (i = 0; i< row; i++)
	{for (j = 0; j< col; j++)
		{	if (board[i][j] == ' ')
			{		return 0;
				//棋盤沒滿
			}
		}
	}
	return 1;
	//棋盤滿了
}
char IsWin(char board[ROW][COL], int row, int col)//1. 玩家贏了 - *//2. 電腦贏了 - #//3. 平局 - Q//4. 游戲繼續(xù) - C
{int i = 0;
	//判斷三行
	for (i = 0; i< row; i++)
	{if (board[i][0] == board[i][1] && board[i][1] == board[i][2] && board[i][1] != ' ')
		{	return  board[i][1];
			//		
		}
	}
	//判斷三列
	for (i = 0; i< col; i++)
	{if (board[0][i] == board[1][i] && board[1][i] == board[2][i] && board[1][i] != ' ')
		{	return board[1][i];
		}
	}
	//判斷對角線
	if (board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[1][1] != ' ')
	{return board[1][1];
	}
	if (board[0][2] == board[1][1] && board[1][1] == board[2][0] && board[1][1] != ' ')
	{return board[1][1];
	}	//判斷平局
//如果棋盤滿了返回1, 不滿返回0	
	int ret = IsFull(board, row, col);	
	if (ret == 1)
	{return 'Q';
	}
	return 'C';
}
五、結語

以上是我對三子棋游戲的實現(xiàn),如果時間充足還是要從前到尾看一遍,肯定會有收獲的,盡量不要直接跳轉(zhuǎn)到完整代碼直接復制!!!如果有大佬感興趣可以進一步優(yōu)化。
因本人能力還有待提高,如有錯誤可以及時指出。感謝大家觀看和支持。

你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

本文名稱:【C語言】如何使用數(shù)組實現(xiàn)三子棋(電腦智能堵棋)-創(chuàng)新互聯(lián)
文章地址:http://muchs.cn/article20/djegjo.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、虛擬主機移動網(wǎng)站建設、云服務器、ChatGPT、用戶體驗

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務器托管