游戏说明
三子棋游戏其实和五子棋是同一类型,本程序简单修改就是五子棋游戏。要解决这类问题要解决下面几个问题:
1.棋盘问题
2.下棋(输入数据)
3.判断输赢
游戏实现
工程文件预览
test.cpp
三子棋的实现:
玩游戏,要么玩,要么不玩,并且有时候会玩很多把,所以有两个选择:>
1:玩游戏、 0:退出游戏、 若输入其他的,则告诉玩家选择错误,请重新选择!
通过do—while 来实现多次玩游戏,在其中用 if 判断玩家的选择。
//测试三子棋游戏。
#include<stdio.h>
#include"game.h"
void mune()
{
printf("*****************************\n");
printf("** 1.play 0.exit **\n");
printf("*****************************\n");
}
void game()//游戏的整个实现
{
char ret;
//数组-存放走出的棋盘信息
char board[ROW][COL]={0};
//初始化棋盘
InitBoard(board,ROW,COL);
//打印棋盘
DisplayBoard(board,ROW,COL);
//下棋
while(1)
{
//玩家下
PlayerMove(board,ROW,COL);
// DisplayBoard(board,ROW,COL);
//判断玩家是否赢
ret = IsWin(board,ROW,COL);
if(ret!='C')// C 表示继续
{
DisplayBoard(board,ROW,COL);
break;
}
//电脑下
ComputerMove(board,ROW,COL);
DisplayBoard(board,ROW,COL);
//判断电脑是否赢
ret = IsWin(board,ROW,COL);
if(ret!='C')// C 表示继续
{
break;
}
}
//判断谁赢
if(ret=='*')
{
printf(" * * 公子~获胜!!\n\n");
}
else if(ret=='#')
{
printf(" * * 电脑~获胜!!\n\n");
}
else
{
printf(" 公子~ 平局!!\n\n");
}
}
void test()
{
int input=0;
srand((unsigned int)time(NULL));//时间戳、stdlib.h、time.h
do
{
mune();
printf(" 公子~ 请选择:");
scanf("%d",&input);
if(input==1)
{
game();
}
else if(input==0)
{
printf("公子~ 我退下啦!!\n");
}
else
{
printf("公子~ 选择错误!请重新来过\n");
}
}while(input);
}
int main()
{
printf("这里是三子棋游戏,我编写的世界\n");
printf("———————————————\n");
test();
return 0;
}
game.h
一些函数的声明,先声明,再调用
1.InitBoard ————初始化棋盘
2.DisplayBoard ——打印棋盘
3.PlayerMove ———玩家下棋
4.ComputerMove — 电脑下棋
5.IsWin ——————判断输赢
#define ROW 10
#define COL 10
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// 声明
void InitBoard(char board[ROW][COL],int row,int col);
void DisplayBoard(char board[ROW][COL],int row,int col);
void PlayerMove(char board[ROW][COL],int row,int col);
void ComputerMove(char board[ROW][COL],int row,int col);
//四种状态:
//玩家赢 - '*'
//电脑赢 - '#'
//平局 - 'Q'
//继续 - 'C'
char IsWin(char board[ROW][COL],int row,int col);
game.cpp
//测试三子棋游戏。
#include<stdio.h>
#include"game.h"
void mune()
{
printf("*****************************\n");
printf("** 1.play 0.exit **\n");
printf("*****************************\n");
}
void game()//游戏的整个实现
{
char ret;
//数组-存放走出的棋盘信息
char board[ROW][COL]={0};
//初始化棋盘
InitBoard(board,ROW,COL);
//打印棋盘
DisplayBoard(board,ROW,COL);
//下棋
while(1)
{
//玩家下
PlayerMove(board,ROW,COL);
// DisplayBoard(board,ROW,COL);
//判断玩家是否赢
ret = IsWin(board,ROW,COL);
if(ret!='C')// C 表示继续
{
DisplayBoard(board,ROW,COL);
break;
}
//电脑下
ComputerMove(board,ROW,COL);
DisplayBoard(board,ROW,COL);
//判断电脑是否赢
ret = IsWin(board,ROW,COL);
if(ret!='C')// C 表示继续
{
break;
}
}
//判断谁赢
if(ret=='*')
{
printf(" * * 公子~获胜!!\n\n");
}
else if(ret=='#')
{
printf(" * * 电脑~获胜!!\n\n");
}
else
{
printf(" 公子~ 平局!!\n\n");
}
}
void test()
{
int input=0;
srand((unsigned int)time(NULL));//时间戳、stdlib.h、time.h
do
{
mune();
printf(" 公子~ 请选择:");
scanf("%d",&input);
if(input==1)
{
game();
}
else if(input==0)
{
printf("公子~ 我退下啦!!\n");
}
else
{
printf("公子~ 选择错误!请重新来过\n");
}
}while(input);
}
int main()
{
printf("这里是三子棋游戏,我编写的世界\n");
printf("———————————————\n");
test();
return 0;
}
运行结果
👇 👇