三子棋小游戏(C语言)

  经过一段时间的学习,也算小有收获。今天看课说要制造一款名为三子棋的小游戏(基于C语言),看了一下老师大概的思路,尝试自己制作,耗时一天终于做出来了。

  写的虽然有些粗糙但是展示出来我感觉效果很不错。废话不多说代码如下。

首先是整体框架

#include "ADD.h"//这里是调用相关函数的头文件,我把相关的头文件也放到了这里面。
void menu()
{
	printf("**************************\n");
	printf("****  1.play  0.exit  ****\n");
	printf("**************************\n");

}
void game()
{
	char arr[HANG][LIE] = { 0 };
	chushihua(arr, HANG, LIE);//填充二维数组“arr”将里面的内容都填充为空格
	chushihua2(arr,HANG,LIE);//初始化棋盘
	neirong(arr,HANG,LIE);//实现游戏内容
}
int main()//三子棋。
{
	int input = 0;
	do//用do..while循环实现游戏
	{
		menu();//打印游戏开始界面
		printf("请选择:");
		scanf("%d", &input);
		switch (input)//这里实现选择
		{
		case 1:
			game();
			break;
		case 0:
			break;
		default:
			printf("输入错误,请重新输入!!");
		}


	} while (input);//这里对应了上面的选择“1”为真“0”为假自动跳出循环
    return 0;
}

  这是在test.c源文件里面的内容,接下来是函数声明以及宏定义还有相关头文件。代码如下:

#define HANG 3
#define LIE 3
#include 
#include 
#include 
#include 
#include 

int Add(int x, int y);
void chushihua(char arr[HANG][LIE],int hang,int lie);
void chushihua2(char arr[HANG][LIE],int hang,int lie);
void neirong(char arr[HANG][LIE],int hang,int lie);

  上面这段代码需要放在一个名为“ADD.h”新建项头文件里,意为申明函数

  接下来就是函数的实现(真正粗糙的是这里,如果有大佬看到望指点,勿喷)。代码如下:

#include "ADD.h"
void chushihua(char arr[HANG][LIE],int hang,int lie)
{
	int i = 0;
	for (i = 0; i < hang; i++)
	{
		int j = 0;
		for (j = 0; j < lie; j++)
		{
			arr[i][j] = ' ';
		}
	}
}

void chushihua2(char arr[HANG][LIE],int hang,int lie)
{
	int i = 0;
	for (i = 0; i < hang;i++)
	{
		int j = 0;
		for (j = 0; j < lie; j++)
		{
			if (j == lie - 1)
			{
				printf(" %c ", arr[i][j]);
				break;
			}
			printf(" %c |", arr[i][j]);
				
		}
		printf("\n");
		for (j = 0; j < lie ; j++)
		{
			if (i == hang - 1)
			{
				break;
			}
			if (j == lie - 1)
			{
				printf("---");
				break;
			}
			printf("---|");
		}
		printf("\n");
	}
}

void neirong(char arr[HANG][LIE],int hang,int lie)
{
	char ch1 = '*';
	char ch2 = '/';
	int a = 0;
	int b = 0;
	int c = 0;
	int d = 0;
	system("cls");//这个是清屏命令,使运行起来更简洁
	chushihua2(arr, hang, lie);
	while (1)
	{
		scanf("%d%d", &a, &b);
		arr[a][b] = ch1;
		system("cls");
		if ((arr[0][0] == '*' && arr[0][1] == '*' && arr[0][2] == '*') || (arr[1][0] == '*' && arr[1][1] == '*' && arr[1][2] == '*') || (arr[2][0] == '*' && arr[2][1] == '*' && arr[2][2] == '*') || (arr[0][0] == '*' && arr[1][0] == '*' && arr[2][0] == '*') || (arr[0][1] == '*' && arr[1][1] == '*' && arr[2][1] == '*') || (arr[0][2] == '*' && arr[1][2] == '*' && arr[2][2] == '*') || (arr[0][0] == '*' && arr[1][1] == '*' && arr[2][2] == '*') || (arr[0][2] == '*' && arr[1][1] == '*' && arr[2][0] == '*'))
		{
			chushihua2(arr, hang, lie);
			printf("恭喜你,获得本次游戏胜利!\n");
			return 0;
		}
		chushihua2(arr,hang,lie);
		while (1)//制造死循环使电脑能够实现下棋
		{
			srand((unsigned)time(NULL));//引用了时间戳产生随机数
			c = (rand() % 10)%2;
			d = (rand() % 10) % 2;
			if ((c != a) && (c < 3) && (d  != b) && (d < 3)&&(arr[c][d]==' '))
			{
				arr[c][d] = ch2;
				system("cls");
				chushihua2(arr,hang,lie);
				break;
			}
			if ((arr[0][0] == '/' && arr[0][1] == '/' && arr[0][2] == '/') || (arr[1][0] == '/' && arr[1][1] == '/' && arr[1][2] == '/') || (arr[2][0] == '/' && arr[2][1] == '/' && arr[2][2] == '/') || (arr[0][0] == '/' && arr[1][0] == '/' && arr[2][0] == '/') || (arr[0][1] == '/' && arr[1][1] == '/' && arr[2][1] == '/') || (arr[0][2] == '/' && arr[1][2] == '/' && arr[2][2] == '/') || (arr[0][0] == '/' && arr[1][1] == '/' && arr[2][2] == '/') || (arr[0][2] == '/' && arr[1][1] == '/' && arr[2][0] == '/'))
			{
				chushihua(arr, hang, lie);
				printf("不要灰心,再接再励。\n");
				return 0;
			}
		}
	}
}

而这段代码需要放在一个名为“ADD.c”的源文件新建项里,意为定义函数。

  这是在VS里实现的。

完成了这么个确实是小有成就感(嘿嘿)。(自己玩目前是没有什么bug,如果有大佬看出来的话,还请指正。)

你可能感兴趣的:(算法,c语言)