ÕâÀï¾Í¼òµ¥·¢Ò»¸ön×ÖÆåÓÎÏ·£¬ºÍ¾®×ÖÆåÒ»Ñù£¬²»¹ýÕâ¸öÓÎÏ·Äã¿ÉÒÔ×Ô¶¨ÒåÆåÅ̵ĴóС¡£
¾®×ÖÆåÊÇ3×3´óС£¬Âú×ãÈý¸öƽÆë¾Í»ñµÃʤÀû¡£
С±¼Ð´µÄÕâ¸öÓÎÏ·£¬Äã¿ÉÒÔ×Ô¶¨ÒåΪ10×10´óС£¬Âú×ã6¸öƽÆë¾Í»ñµÃʤÀû£¬¶¼ÊÇ¿ÉÒÔËæ±ã¶¨ÒåµÄ¡£
Èç¹û¸ÐÐËȤµÄ»°¾Í¿ÉÒÔÀ´³¢ÊÔһϣ¬»òÐíÄã¿ÉÒÔÕÒµ½Ò»Ð©bug

(ÖÁÓÚΪʲô˵ËüÊÇ“È˹¤ÖÇÕÏ”ÄØ£¿ÒòΪËüÊÇËæ»úÏµģ¬²¢²»»áÈ¥Õë¶ÔÄ㣬ËüºÜÓÐ×Ô¼ºµÄÏë·¨£¬²»¹ýÓÐÒ»´ÎС±¼²âÊÔµÄʱºò£¬Ã»ÓÐ×¢Òâµ½£¬¾Í±»Ëü·´É±ÁË……)
Äã¿´¶®ÁËÂð£¿
ÕâÀïµÄ×Ô¶¨ÒåµÄÊÇ10×10´óСµÄ£¬Ê¤ÀûÌõ¼þÊÇ´óÓÚµÈÓÚ5£¬ÓÎÏ··½Ê¹ÓõÄÊÇ´óдO





ÔõôÑù£¬¸Ð¾õ»¹²»´í°É,»¹²»¿ìÈ¥Ö§³ÖÒ»ÏÂС±¼
´´½¨ÁËÁ½¸ö.cÎļþtest.cºÍgame.c£¬Ò»¸öÍ·Îļþgame.h
#define _CRT_SECURE_NO_WARNINGS
#include"game.h"
int main()
{
int num = 1;
srand((unsigned int)time(NULL));
do
{
if (num == 1)
{
//´òÓ¡Ò»¸ö¿ªÊ¼Ãæ°å
playboard();
}
printf("ÊäÈë1Ôò½øÐÐÓÎÏ·£¬ÊäÈë0Ôò½áÊø³ÌÐò\n");
//ÊäÈëÑ¡Ôñ
num = choose();
//ͨ¹ýÊäÈëµÄÑ¡ÔñÀ´ÅжÏÊÇ·ñ½øÐÐÓÎÏ·
switch (num)
{
case 1://¿ªÊ¼ÓÎÏ·
{
do
{
playgame();
num = 0;
printf("ÊÇ·ñÖØÐ¿ªÊ¼ÓÎÏ·,ÖØÐ¿ªÊ¼ÊäÈë1£¬½áÊøÓÎÏ·ÊäÈë0:>");
scanf("%d", &num);
if (num == 1)
;
else if (num == 0)
break;
else
printf("ÊäÈë´íÎó£¬");
} while (1);
break;
}
case 0:
{
printf("½áÊø³ÌÐò\n");
break;
}
default:
{
printf("\nÊäÈë´íÎó£¬Î´ÄÜʶ±ðÄãµÄÑ¡Ôñ£¬ÇëÖØÐÂÊäÈë\n\n");
break;
}
}
//ÅжÏÊÇ·ñÌø³öÑ»·
if (num == 0)
break;
} while (1);
return 0;
}
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#define WID 10
#define NID 10
#define SIC 5
void playboard()
{
printf("**********************************\n");
printf("**********************************\n");
printf("************ 1.play **************\n");
printf("************ 0.exit **************\n");
printf("**********************************\n");
printf("**********************************\n");
}
int choose()
{
int num = 0;
printf("ÇëÊäÈëÄãµÄÑ¡Ôñ:>");
scanf("%d", &num);
return num;
}
void space(char arr[WID][NID], int x, int y)
{
int i = 0;
for (i = 0; i < x; i++)
{
int j = 0;
for (j = 0; j < y; j++)
{
arr[i][j] = ' ';
}
}
}
board(char arr[WID][NID],int x,int y)
{
int i = 0;
int j = 0;
printf("\n-");
for (i = 0; i < x; i++)
{
printf("----");
}
printf("-\n");
printf("0");
for (i = 1; i <= x; i++)
{
printf(" %d ", i);
}
printf("\n");
printf("-");
for (i = 0; i < x; i++)
{
printf("----");
}
printf("-\n");
for (i = 0; i < x; i++)
{
int k = 0;
printf("%d", i+1);
for (j = 0; j < y; j++)
{
printf("|");
printf(" %c ", arr[i][j]);
}
printf("|\n");
printf("-");
for (k = 0; k < x; k++)
{
printf("----");
}
printf("-\n");
}
}
void axis(int* x,int* y)
{
scanf("%d %d", &*x, &*y);
*x=(*x) - 1;
*y=(*y) - 1;
}
void sure(char arr[WID][NID],int x,int y,char c)
{
arr[x][y] = c;
}
void human_machine(int* x, int* y)
{
*x = rand() % WID;
*y = rand() % NID;
}
int judge(char arr[WID][NID],int x,int y)
{
if (arr[x][y] == ' ')
return 0;
else
return 1;
}
int judgesure(char arr[WID][NID], int x, int y,char siz)
{
int count = 0;
int i = 0;
for (i = 1; i <= y; i++)
{
if (arr[x][y - i] == siz)
count++;
else
break;
}
for (i = 1; i <= NID-y-1; i++)
{
if (arr[x][y + i] == siz)
count++;
else
break;
}
if (count >= SIC - 1)
return 1;
count = 0;
for (i = 1; i <= x; i++)
{
if (arr[x-i][y] == siz)
count++;
else
break;
}
for (i = 1; i <= NID - x-1; i++)
{
if (arr[x+i][y ] == siz)
count++;
else
break;
}
if (count >= SIC - 1)
return 1;
count = 0;
if (WID >= NID)
{
for (i = 1; i <= y; i++)
{
if (arr[x - i][y - i] == siz)
count++;
else
break;
}
for (i = 1; i <= NID - y - 1; i++)
{
if (arr[x + i][y + i] == siz)
count++;
else
break;
}
if (count >= SIC - 1)
return 1;
count = 0;
for (i = 1; i <= y; i++)
{
if (arr[x + i][y - i] == siz)
count++;
else
break;
}
for (i = 1; i <= NID - y - 1; i++)
{
if (arr[x - i][y + i] == siz)
count++;
else
break;
}
if (count >= SIC - 1)
return 1;
count = 0;
}
if (WID <= NID)
{
for (i = 1; i <= x; i++)
{
if (arr[x - i][y - i] == siz)
count++;
else
break;
}
for (i = 1; i <= NID - x; i++)
{
if (arr[x + i][y + i] == siz)
count++;
else
break;
}
//}
if (count >= SIC - 1)
return 1;
count = 0;
for (i = 1; i <= x; i++)
{
if (arr[x + i][y - i] == siz)
count++;
else
break;
}
for (i = 1; i <= NID - x; i++)
{
if (arr[x - i][y + i] == siz)
count++;
else
break;
}
if (count >= SIC - 1)
return 1;
}
return 0;
}
int judgefill(char arr[WID][NID])
{
int count = 0;
int i = 0;
int j = 0;
for (i = 0; i < WID; i++)
{
int j = 0;
for (j = 0; j < NID; j++)
{
if (arr[i][j] != ' ')
count++;
}
}
return WID*NID-count;
}
void playgame()
{
//½¨Á¢Ò»¸ö¶þάÊý×é
char arr[WID][NID];
//°ÑÊý×é³õʼ»¯Îª¿Õ¸ñ
space(arr,WID,NID);
int over = 0;
int i = 0;
int count = 0;
int X = 0;
int Y = 0;
int* P1 = &X;
int* P2 = &Y;
do
{
//´òÓ¡Ò»¸ön×ÖÆåµÄÃæ°å
board(arr, WID, NID);
do
{
printf("ÊäÈëÄãÑ¡ÔñµÄ×ø±ê:>");
//ÓÎÏ·ÕßÊäÈë×ø±ê
axis(P1, P2);
//ÅжÏÓÎÏ·ÕßÊäÈëµÄ×ø±êÊÇ·ñÒÑÊäÈë,ÒÑÊäÈë·µ»Ø1£¬Î´ÊäÈë·µ»Ø0
int z = judge(arr, X, Y);
if (z == 1)
printf("´ËλÖÃÒÑÊäÈ룬ÇëÖØÐÂ");
else
break;
//printf("%d %d", X, Y);
} while (1);
//°ÑO¼ÇÂ¼×ø±êµ½Êý×éÉÏ
sure(arr, X, Y, 'O');
//ÅжÏÊÇ·ñ»ñµÃʤÀû,ʤÀû¾Í·µ»Ø1£¬Ã»ÓÐʤÀû¾Í·µ»Ø0
over = judgesure(arr, X, Y, 'O');
if (over == 1)
{
printf("Äã»ñµÃʤÀû\n");
board(arr, WID, NID);
break;
}
//ÅжÏÊÇ·ñÌîÂúÁ˱í¸ñ
if (judgefill(arr) == 0)
{
printf("ƽ¾Ö");
break;
}
do
{
//µçÄÔÊäÈë×ø±ê
human_machine(P1, P2);
//ÅжϵçÄÔÊäÈëµÄ×ø±êÊÇ·ñÒÑÊäÈë,ÒÑÊäÈë·µ»Ø1£¬Î´ÊäÈë·µ»Ø0
int z = judge(arr, X, Y);
if (z == 0)
{
//°ÑX¼ÇÂ¼×ø±êµ½Êý×éÉÏ
sure(arr, X, Y, 'X');
//½áÊøÑ»·
break;
}
} while (1);
//ÅжϵçÄÔÊÇ·ñ»ñµÃʤÀû,ʤÀû¾Í·µ»Ø1£¬Ã»ÓÐʤÀû¾Í·µ»Ø0
over = judgesure(arr, X, Y, 'X');
if (over == 1)
{
printf("µçÄÔ»ñµÃʤÀû\n");
board(arr, WID, NID);
break;
}
//ÅжÏÊÇ·ñÌîÂúÁ˱í¸ñ
if (judgefill(arr) == 0)
{
printf("ƽ¾Ö\n");
break;
}
} while (1);
}
#pragma once #include<stdio.h> #include<time.h> #include<stdlib.h> //´òÓ¡Ò»¸ö¿ªÊ¼Ãæ°å playboard(); //ÊäÈëÑ¡Ôñ choose(); //ÓÎÏ·Ö÷Ìå playgame(); //°ÑÊý×é³õʼ»¯Îª¿Õ¸ñ space(arr, WID, NID); //´òÓ¡Ò»¸öÈý×ÓÆåµÄÃæ°å board(arr, WID, NID); //ÓÎÏ·ÕßÊäÈë×ø±ê axis(P1, P2); //¼ÇÂ¼×ø±êµ½Êý×éÉÏ sure(X, Y);
ÒÔÉϾÍÊÇÀûÓÃCÓïÑÔʵÏÖn×ÖÆåÓÎÏ·µÄÏêϸÄÚÈÝ£¬¸ü¶à¹ØÓÚCÓïÑÔn×ÖÆåµÄ×ÊÁÏÇë¹Ø×¢Ô´ÂëËѲØÍøÆäËüÏà¹ØÎÄÕ£¡
ÈÈÃÅÔ´Âë