一份菜单
void menu()
{
printf("*********************\n");
printf("***** 1. play *****\n");
printf("***** 0. exit *****\n");
printf("*********************\n");
}
玩游戏否
void test()
{
int input;
srand(time(NULL));
do{
menu();
printf("请选择\n");
scanf_s("%d", &input);
switch (input)
{
case 1:
game();
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("输入非法,请从新输入\n");
break;
}
} while (input);
}
初始化一下数组
void chushihua(char qi[HANG][LIE], int hang, int lie)
{
int i, j;
for (i = 0; i < hang; i++)
for (j = 0; j < lie; j++)
qi[i][j] = ' ';
}
来个棋盘
void display(char qi[HANG][LIE], int hang, int lie)
{
int i;
for (i = 0; i < hang; i++)
{
int j;
for (j = 0; j < lie; j++)
{
printf(" %c ", qi[i][j]);
if (j < lie - 1)
printf("|");
}
printf("\n");
if (i < hang - 1)
{
for (j = 0; j < lie; j++)
{
printf("---");
if (j < lie - 1)
printf("|");
}
printf("\n");
}
}
玩家下一颗子
void mine(char qi[HANG][LIE], int hang, int lie)
{
int x, y;
printf("你的回合\n");
while (1)
{
printf("请输入一个位置\n");
scanf_s("%d %d",&x,&y);
if (x>=1 && x<=3 && y>=1 && y<=3 && qi[x - 1][y - 1] == ' ')
{
qi[x - 1][y - 1] = '*';
break;
}
else
printf("输入错误\n");
}
}
电脑下一颗子
void ai(char qi[HANG][LIE], int hang, int lie)
{
int x, y;
printf("电脑的回合\n");
while (1)
{
x = rand() % 3;
y = rand() % 3;
if (x >= 0 && x <= 2 && y >= 0 && y <= 2 && qi[x][y] == ' ')
{
qi[x][y] = '#';
break;
}
}
}
靠什么赢
char duijue(char qi[HANG][LIE], int hang, int lie)
{
int i,j;
int count = 0;
for (i = 0; i < hang; i++)
{
if (qi[0][i] == qi[1][i] && qi[1][i] == qi[2][i] && qi[0][1] != ' ')
return qi[0][i];
else if (qi[i][0] == qi[i][1] && qi[i][1] == qi[i][2] && qi[i][0] != ' ')
return qi[i][0];
else if (qi[0][0] == qi[1][1] && qi[1][1] == qi[2][2] && qi[0][0] != ' ')
return qi[0][0];
else if (qi[0][2] == qi[1][1] && qi[1][1] == qi[2][0] && qi[0][2] != ' ')
return qi[0][2];
}
for (i = 0; i < hang;i++)
for (j = 0; j < lie;j++)
if (qi[i][j] != ' ')
{
count++;
}
if (count >= hang*lie)
return 'q';
}
来个函数测试一下
void game()
{
int set;
char qi[HANG][LIE] = { 0 };
chushihua(qi,HANG,LIE);
display(qi,HANG,LIE);
while (1)
{
mine(qi, HANG, LIE);
display(qi, HANG, LIE);
set=duijue(qi, HANG, LIE);
//panding();
if (set == '*')
{
printf("玩家获胜\n");
break;
}
else if (set == '#')
{
printf("电脑获胜\n");
break;
}
else if (set == 'q')
{
printf("平局\n");
break;
}
ai(qi, HANG, LIE);
display(qi, HANG, LIE);
set=duijue(qi, HANG, LIE);
if (set == '*')
{
printf("玩家获胜\n");
break;
}
else if (set == '#')
{
printf("电脑获胜\n");
break;
}
else if (set == 'q')
{
printf("平局\n");
break;
}
//panding();
}
}
主函数
int main()
{
test();
system("pause");
return 0;
}
头文件
#define HANG 3
#define LIE 3
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
void chushihua(char qi[HANG][LIE],int hang,int lie);
void display(char qi[HANG][LIE], int hang, int lie);
void mine(char qi[HANG][LIE], int hang, int lie);
void ai(char qi[HANG][LIE], int hang, int lie);
char duijue(char qi[HANG][LIE], int hang, int lie);
easy