此处代码写入头文件命名为game.h
#pragma once
#include <stdio.h>
#include<string.h>
#include <stdlib.h>
#include <time.h>
#define Col 3
#define Row 3
/*
* 当前版本:v1.0.0
*
* 作者:linqxxy
*
* 函数名称:GuessNum
*
* 完成日期:2019.3.26
*
* 函数功能:猜数字游戏实现
*
* 入口参数:无
*
* 出口参数:空
*
* 返回类型:void
*/
void GuessNum()//附加的猜数字游戏
{
int num = 0;
int random = rand() % 100;
while (1)
{
printf("请输入您猜的价格:");
scanf("%d", &num);
if (num > random)
{
printf("猜大了,请重新输入:\n");
}
else if (num < random)
{
printf("猜小了,请重新输入:\n");
}
else
{
printf("恭喜您,猜对了!\n");
break;
}
}
}
/*
* 函数名称:init
*
* 函数功能:初始化数组为空格
*
* 入口参数:arr[Row][Col],row,col
*
* 出口参数:空
*
* 返回类型:void
*/
void init(char arr[Row][Col], int row, int col)//将数组初始化为全为空格
{
int i = 0, j = 0;
for (i = 0; i < row; i++)
{
for (j = 0; j < col; j++)
{
arr[i][j] = ' ';
}
}
}
/*
* 函数名称:print
*
* 函数功能:打印棋盘
*
* 入口参数:arr[Row][Col],row,col
*
* 出口参数:空
*
* 返回类型:void
*/
void print(char board[Row][Col], int row, int col)//打印棋盘
{
int i = 0;
printf(" 0 1 2\n");
for (i = 0; i < row; i++)
{
printf("%d %c| %c | %c\n", i,board[i][0], board[i][1], board[i][2]);
if (i != row - 1)
{
printf(" ---|---|---\n");
}
}
}
/*
* 函数名称:ComputerMove
*
* 函数功能:电脑落子
*
* 入口参数:arr[Row][Col],row,col
*
* 出口参数:空
*
* 返回类型:void
*/
void ComputerMove(char board[Row][Col], int row, int col)
{
printf("电脑落子\n");
while (1)
{
int randnum1 = rand() % row ;
int randnum2 = rand() % col ;
if (board[randnum1][randnum2] == ' ')
{
board[randnum1][randnum2] = 'X';
break;
}
}
}
/*
* 函数名称:PlayerMove
*
* 函数功能:玩家落子
*
* 入口参数:arr[Row][Col],row,col
*
* 出口参数:空
*
* 返回类型:void
*/
void PlayerMove(char board[Row][Col], int row, int col)
{
printf("玩家落子\n");
while (1)
{
int x = 0, y = 0;
scanf("%d%d", &x, &y);
if (x >=0 && x< row && y >= 0 && y < col)
{
if (board[x][y] == ' ')
{
board[x][y] = 'O';
break;
}
else
{
printf("落点已经有棋子了,请重新输入\n");
}
}
else
{
printf("您的输入有误!");
}
}
}
/*
* 函数名称:IsFull
*
* 函数功能:判断棋盘是否下满
*
* 入口参数:arr[Row][Col],row,col
*
* 出口参数:空
*
* 返回类型:char
*/
char IsFull(char board[Row][Col], int row, int col)
{
int i = 0, j = 0;
for (i = 0; i < row; i++)
{
for (j = 0; j < col; j++)
{
if (board[i][j] == ' ')
{
return 0;
}
}
}
return 1;
}
/*
* 函数名称:IsWin
*
* 函数功能:判断是否胜利
*
* 入口参数:arr[Row][Col],row,col
*
* 出口参数:空
*
* 返回类型:char
*/
char IsWin(char board[Row][Col],int row, int col )
{
int i = 0, j = 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[i][1];
}
}
if (board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[1][1] != ' ')
{
return board[1][1];
}
else if (board[2][0] == board[1][1] && board[1][1] == board[0][2] && board[1][1] != ' ')
{
return board[1][1];
}
else if (IsFull(board, Row, Col))
{
return 'f';
}
return 0;
}
/*
* 函数名称:ThirdFlags
*
* 函数功能:游戏逻辑实现
*
* 入口参数:无
*
* 出口参数:空
*
* 返回类型:void
*/
void ThirdFlag()
{
srand((unsigned)time(NULL));
char board[Row][Col] = { 0 };
init(board, Row, Col);
print(board, Row, Col);
while (1)
{
ComputerMove(board, Row, Col);
print(board, Row, Col);
if (IsWin(board, Row, Col) == 'X')
{
printf("电脑胜利,请下次加油\n");
break;
}
PlayerMove(board, Row, Col);
print(board, Row, Col);
if (IsWin(board, Row, Col) == 'O')
{
printf("恭喜您胜利了\n");
break;
}
print(board, Row, Col);
if (IsWin(board, Row, Col) == 'f')
{
printf("棋盘满了,请下次加油\n");
break;
}
}
}
/*
* 函数名称:Menu
*
* 函数功能:菜单功能
*
* 入口参数:空
*
* 出口参数:空
*
* 返回类型:void
*/
void menu()
{
int N = 0;
printf("*********************************\n");
printf("* 1.猜数字 *\n");
printf("* 2.三子棋 *\n");
printf("* 3.扫雷 *\n");
printf("* 4.退出 *\n");
printf("*********************************\n");
scanf("%d", &N);
switch (N)
{
case 1:
GuessNum();
break;
case 2:
ThirdFlag();
break;
case 3:
Clearance();
break;
case 4:
printf("ByeBye!");
break;
default:
printf("您的输入有误\n");
break;
}
}
主函数中调用game.h
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<string.h>
#include <stdlib.h>
#include <time.h>
#include "game.h"
//主函数程序入口
void main()
{
srand((unsigned)time(NULL));
menu();
system("pause");
}