µ±Ç°Î»ÖãºÊ×Ò³ > ¿ª·¢½Ì³Ì > CÓïÑÔ >

ÀûÓÃCÓïÑÔʵÏÖn×ÖÆåÓÎÏ·

ʱ¼ä£º2022-05-14 11:30 À´Ô´£ºÎ´Öª ×÷Õߣº¸Ðл»ÑÑÔ ÊÕ²Ø

±¾ÎĽ«ÀûÓÃCÓïÑÔ±àдһ¸ön×ÖÆåÓÎÏ·£¬ºÍ¾®×ÖÆåÒ»Ñù£¬²»¹ýÕâ¸öÓÎÏ·Äã¿ÉÒÔ×Ô¶¨ÒåÆåÅ̵ĴóС¡£ÎÄÖеÄʾÀý´úÂë½²½âÏêϸ£¬¸ÐÐËȤµÄС»ï°é¿ÉÒÔ³¢ÊÔÒ»ÏÂ

ǰÑÔ

ÕâÀï¾Í¼òµ¥·¢Ò»¸ön×ÖÆåÓÎÏ·£¬ºÍ¾®×ÖÆåÒ»Ñù£¬²»¹ýÕâ¸öÓÎÏ·Äã¿ÉÒÔ×Ô¶¨ÒåÆåÅ̵ĴóС¡£

¾®×ÖÆåÊÇ3×3´óС£¬Âú×ãÈý¸öƽÆë¾Í»ñµÃʤÀû¡£

С±¼Ð´µÄÕâ¸öÓÎÏ·£¬Äã¿ÉÒÔ×Ô¶¨ÒåΪ10×10´óС£¬Âú×ã6¸öƽÆë¾Í»ñµÃʤÀû£¬¶¼ÊÇ¿ÉÒÔËæ±ã¶¨ÒåµÄ¡£

Èç¹û¸ÐÐËȤµÄ»°¾Í¿ÉÒÔÀ´³¢ÊÔһϣ¬»òÐíÄã¿ÉÒÔÕÒµ½Ò»Ð©bug

ÀûÓÃCÓïÑÔʵÏÖn×ÖÆåÓÎÏ·

(ÖÁÓÚΪʲô˵ËüÊÇ“È˹¤ÖÇÕÏ”ÄØ£¿ÒòΪËüÊÇËæ»úÏµģ¬²¢²»»áÈ¥Õë¶ÔÄ㣬ËüºÜÓÐ×Ô¼ºµÄÏë·¨£¬²»¹ýÓÐÒ»´ÎС±¼²âÊÔµÄʱºò£¬Ã»ÓÐ×¢Òâµ½£¬¾Í±»Ëü·´É±ÁË……)

˼·

  • ÓÃ#define¶¨ÒåµÄ±êʶ·û³£Á¿À´È·¶¨n×ÖÆåµÄ´óСºÍn×ÖÆå»ñʤµÄÌõ¼þ
  • ´òÓ¡Ò»¸ö¿ªÊ¼Ãæ°å
  • Ñ¡ÔñÊÇ·ñ¿ªÊ¼ÓÎÏ·
  • ¿ªÊ¼ÓÎÏ·
  • ¸ù¾Ý#define¶¨ÒåµÄ±êʶ·û³£Á¿À´´´½¨¶þάÊý×é
  • °Ñ¶þάÊý×é³õʼ»¯Îª¿Õ¸ñ
  • ´òÓ¡Ò»¸ön×ÖÆåµÄÃæ°å
  • ÓÎÏ·ÕßÊäÈë×ø±ê
  • ÅжÏÓÎÏ·ÕßÊäÈëµÄ×ø±êÊÇ·ñÒÑÊäÈ룬ÒÑÊäÈë¾ÍÖØÐÂÊäÈë
  • δÊäÈëµÄ»°£¬°ÑO¼Ç¼µ½Êý×éÀïÑ¡ÔñµÄ×ø±êÉÏ
  • ÅжÏÓÎÏ·ÕßÊÇ·ñ»ñµÃʤÀû£¬Ê¤Àû½áÊøÓÎÏ·
  • ÅжÏÊÇ·ñÌîÂúÁ˱í¸ñ£¬ÌîÂú¾Íƽ¾Ö
  • µçÄÔ¸ù¾ÝËæ»úÖµÊäÈë×ø±ê
  • ÅжϵçÄÔÊäÈëµÄ×ø±êÊÇ·ñÒÑÊäÈ룬ÒÑÊäÈë¾ÍÖØÐÂÊäÈë
  • δÊäÈëµÄ»°£¬°ÑX¼Ç¼µ½Êý×éÀïÑ¡ÔñµÄ×ø±êÉÏ
  • ÅжϵçÄÔÊÇ·ñ»ñµÃʤÀû£¬Ê¤Àû½áÊøÓÎÏ·
  • ÅжÏÊÇ·ñÌîÂúÁ˱í¸ñ£¬ÌîÂú¾Íƽ¾Ö
  • »Øµ½²½Öè7£¬²»¶ÏÑ­»·£¬Ö±µ½Ä³·½»ñʤ»òÕ߯½¾Ö
  • ½áÊøºóÊäÈë1ÖØÐ¿ªÊ¼ÓÎÏ·£¬ÊäÈë0½áÊøÓÎÏ·

Äã¿´¶®ÁËÂð£¿

Ч¹ûͼ

ÕâÀïµÄ×Ô¶¨ÒåµÄÊÇ10×10´óСµÄ£¬Ê¤ÀûÌõ¼þÊÇ´óÓÚµÈÓÚ5£¬ÓÎÏ··½Ê¹ÓõÄÊÇ´óдO

¿ªÊ¼µÄ½çÃæ

ÀûÓÃCÓïÑÔʵÏÖn×ÖÆåÓÎÏ·

ÆåÅ̵ÄÑù×Ó

ÀûÓÃCÓïÑÔʵÏÖn×ÖÆåÓÎÏ·

Ëæ»ú´òµÄ×ø±ê

ÀûÓÃCÓïÑÔʵÏÖn×ÖÆåÓÎÏ·

»ñµÃʤÀû

ÀûÓÃCÓïÑÔʵÏÖn×ÖÆåÓÎÏ·

½áÊø³ÌÐò

ÀûÓÃCÓïÑÔʵÏÖn×ÖÆåÓÎÏ·

ÔõôÑù£¬¸Ð¾õ»¹²»´í°É,»¹²»¿ìÈ¥Ö§³ÖÒ»ÏÂС±¼

´úÂë

´´½¨ÁËÁ½¸ö.cÎļþtest.cºÍgame.c£¬Ò»¸öÍ·Îļþgame.h

test.c

#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;
}

game.c

#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);

}

game.h

#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×ÖÆåµÄ×ÊÁÏÇë¹Ø×¢Ô´ÂëËѲØÍøÆäËüÏà¹ØÎÄÕ£¡


ÏÂһƪ£ºÃ»ÓÐÁË

CÓïÑÔÔĶÁÅÅÐÐ

×îÐÂÎÄÕÂ