game.h
void Menu();
void Initialize(char arr[ROW][COL],int row, int col);
void Output(char arr[ROW][COL],int row, int col);
void Plarer(char arr[ROW][COL],int row, int col);
void Computer(char arr[ROW][COL],int row, int col);
int Judge(char arr[ROW][COL],int row, int col);
game.c
#include"game.h"
void Menu()
{
printf("***********************\n");
printf("****** 1. play *****\n");
printf("****** 0. exit *****\n");
printf("***********************\n");
}
void Initialize(char arr[ROW][COL],int row, int col)
{
int i = 0;
for(i = 0; i < row; i++)
{
int j = 0;
for(j = 0; j < col; j++)
{
arr[i][j] = ' ';
}
}
}
void Output(char arr[ROW][COL],int row, int col)
{
int i = 0;
int j = 0;
int n = 0;
printf(" ");
for(i = 1; i <= row; i++)
{
printf(" %d ", i);
}
printf("\n");
for(i = 0,n = 0; i < row; i++,n++)
{
printf(" %d ", i + 1);
for(j = 0; j < col; j++)
{
printf(" %c ", arr[i][j]);
if(j < col-1)
{
printf("|");
}
}
printf("\n ");
if(n < row-1)
{
for(j = 0; j < col; j++)
{
printf("--- ");
}
}
printf("\n");
}
}
void Plarer(char arr[ROW][COL],int row, int col)
{
int i = 0;
int j = 0;
printf("玩家输入坐标》");
while(1)
{
scanf("%d%d", &i, &j);
if(arr[i-1][j-1] == ' ')
{
arr[i-1][j-1] = 'X';
break;
}
else
{
printf("坐标错误,请重新输入:");
}
}
}
void Computer(char arr[ROW][COL],int row, int col)
{
printf("电脑走为\n");
while(1)
{
int i = rand()%row;
int j = rand()%row;
if(arr[i][j] == ' ')
{
arr[i][j] = 'Y';
break;
}
}
}
int Judge(char arr[ROW][COL],int row, int col)
{
int i = 0;
int j = 0;
int n = 0;
int m = 1;
for(i = 0; i < row; i++)
{
for(j = 0,n = 1; j < col-1; j++)
{
if(arr[i][j] == arr[i][j+1]&&arr[i][j] != ' ')
{
n++;
if(n == CHESS)
{
return arr[i][j];
}
}
else
{
n = 1;
}
}
}
for(j = 0; j < col; j++)
{
for(i = 0, n = 1; i < row-1; i++)
{
if(arr[i][j] == arr[i+1][j]&&arr[i][j] != ' ')
{
n++;
if(n == CHESS)
{
return arr[i][j];
}
else;
}
else
{
n = 1;
}
}
}
while(m + CHESS <= row)
{
for(i = 0,j = m, n = 1; j < col; i++, j++)
{
if(arr[i][j] == arr[i+1][j+1]&&arr[i][j] != ' ')
{
n++;
if(n == CHESS)
{
return arr[i][j];
}
}
else
{
n = 1;
}
}
m++;
}
m = 0;
while(m + CHESS <= row)
{
for(i = m,j = 0, n = 1; j < col; i++, j++)
{
if(arr[i][j] == arr[i+1][j+1]&&arr[i][j] != ' ')
{
n++;
if(n == CHESS)
{
return arr[i][j];
}
}
else
{
n = 1;
}
}
m++;
}
m = row - 1;
while(m >= 2)
{
for(i = 0,j = m, n = 1; j > 0; i++, j--)
{
if(arr[i][j] == arr[i+1][j-1]&&arr[i][j] != ' ')
{
n++;
if(n == CHESS)
{
return arr[i][j];
}
}
else
{
n = 1;
}
}
m--;
}
m = 0;
while(m <row)
{
for(j = row-1,i = m, n = 1; j > 0; i++, j--)
{
if(arr[i][j] == arr[i+1][j-1]&&arr[i][j] != ' ')
{
n++;
if(n == CHESS)
{
return arr[i][j];
}
}
else
{
n = 1;
}
}
m++;
}
for(i = 0; i < row; i++)
{
for(j = 0; j < col; j++)
{
if(arr[i][j] == ' ')
{
return 1;
}
}
}
return 'e';
}
4.1.c
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include"game.h"
void game()
{
char ret = 0;
char arr[ROW][COL];
Initialize(arr, ROW, COL);
Output(arr, ROW, COL);
while(1)
{
Plarer(arr, ROW, COL);
system("cls");
Output(arr, ROW, COL);
ret = Judge(arr, ROW, COL);
if(ret == 'X')
{
printf("恭喜玩家胜\n");
break;
}
else if(ret == 'e')
{
printf("平局\n");
break;
}
Computer(arr, ROW, COL);
system("cls");
Output(arr, ROW, COL);
ret = Judge(arr, ROW, COL);
if(ret == 'Y')
{
printf("恭喜电脑胜\n");
break;
}
else if(ret == 'e')
{
printf("平局\n");
break;
}
}
}
void Text()
{
int a = 0;
srand((unsigned)time(NULL));
do
{
Menu();
printf("请选择》");
scanf("%d", &a);
switch(a)
{
case 1 :
game();
break;
case 0 :
printf("退出游戏\n");
break;
default :
printf("输入错误,请输入(1或0)");
break;
}
}while(a);
}
int main()
{
Text();
system("pause");
return 0;
}