今天分享一个简单的用C语言编写的小游戏:三子棋游戏。
这是头文件 sanziqi.h
#ifndef _Sanziqi_H
#define _Sanziqi_H
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#define row 3
#define col 3
void Inte_qipan(char arr[row][col], int r, int c);
void Display(char arr[row][col], int r, int c);
void Computer_move();
void perople_move();
char Is_win();
int Shengyu_Shu(char arr[row][col], int r, int c);
#endif;xie
游戏功能部分 game.c
#define _CRT_SECURE_NO_WARNINGS 1
#include "sanziqi.h"
void Inte_qipan(char arr[row][col], int r, int c)//棋盘初始化
{
int i = 0;
int j = 0;
for (i = 0; i<row; i++)
{
for (j = 0; j<col; j++)
{
arr[i][j] = ' ';
}
}
}
void Display(char arr[row][col], int r, int c)//棋盘显示
{
int i = 0;
printf("______________\n");
for (i = 0; i < row; i++)
{
printf("%c | %c | %c |\n", arr[i][0], arr[i][1], arr[i][2]);
printf("______________\n");
}
}
void Computer_move(char arr[row][col], int r, int c)//电脑走
{
while (1)
{
r = rand() % row;
c = rand() % col;
if (arr[r][c] == ' ')
{
arr[r][c] = 'o';//电脑走一步用o表示
break;
}
}
}
char Is_win(char arr[row][col], int r, int c)//判断输赢或者平局
{
//一行或一列或一斜是相同的符号,则哪个玩家赢
int i = 0;
for (i = 0; i < row; i++)
{
if (arr[i][0] == arr[i][1] && arr[i][0] == arr[i][2] && arr[i][1] != ' ')//一行相等
return arr[i][1];
if (arr[0][i] == arr[1][i] && arr[0][i] == arr[2][i] && arr[1][i] != ' ')//一列相等
return arr[0][i];
if (arr[0][0] == arr[1][1] && arr[0][0] == arr[2][2] && arr[1][1] != ' ')//斜相等
return arr[1][1];
if (arr[2][0] == arr[1][1] && arr[2][0] == arr[0][2] && arr[1][1] != ' ')//斜相等
return arr[1][1];
if (Shengyu_Shu(arr, r, c) == 0)
return ' ';
else
return 'p';
}
}
void perople_move(char arr[row][col], int r, int c)//人走y
{
int x = 0;
int y = 0;
while (1)
{
printf("请输入你的坐标:");
scanf("%d%d", &x, &y);
x--;
y--;
if ((0 <= x&&x <row) && (0 <= y&&y < col))
{
if (arr[x][y] == ' ')
{
arr[x][y] = 'x';//人走一步用表示
break;
}
else
printf("该位置已经被占用!\n");
}
else
{
printf("输出错误,请重新输入。\n");
}
}
}
int Shengyu_Shu(char arr[row][col], int r, int c)
{
int i = 0;
int j = 0;
for (i = 0; i < row; i++)
{
for (j = 0; j < row; j++)
{
if (arr[i][j] == ' ');
{
return 0;
}
}
}
return 1;
}
函数实现部分mian.c
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include "sanziqi.h"
void menu()//菜单
{
printf("+--------------------------------+\n");
printf("+ 1-play +\n");
printf("+ 0-exit +\n");
printf("+--------------------------------+\n");
}
void game()
{
int r = row;
int c = col;
int x = 0;
int y = 0;
char k;//用来判断输赢情况
char arr[row][col] = {0};
Inte_qipan(arr, r, c);//棋盘初始化
do
{
Display(arr, r, c);//显示棋盘
Computer_move(arr, r, c);//电脑走
k=Is_win(arr, r, c);
if (k != ' ')
break;
Display(arr, r, c);
perople_move(arr, r, c);//人走
k=Is_win(arr, r, c);
if (k != ' ')
break;
Display(arr, r, c);
} while (k==' ');
Display(arr, r, c);
if (k == 'p')
{
printf("平局!\n");
}
else if (k == 'o')
{
printf("电脑赢!");
}
else if (k == 'x')
{
printf("你赢啦!\n");
}
}
int main()
{
srand((unsigned)time(NULL));
menu();
int num;
printf("请选择:");
scanf("%d", &num);
switch (num)
{
case 1:
printf("进入游戏!\n");
game();
break;
case 0:
printf("不玩了!\n");
break;
default:
printf("输入格式错误。\n");
break;
}
system("pause");
return 0;
}
以上就是三子棋游戏的实现啦!