经过一段时间的学习,也算小有收获。今天看课说要制造一款名为三子棋的小游戏(基于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,如果有大佬看出来的话,还请指正。)