三子棋



<span style="font-size:18px;">#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>

#define ROWS 3
#define COLS 3

void game();
void put_photo(char arr[ROWS][COLS],int row,int col);
void player_go(char arr[ROWS][COLS],int row,int col);
void computer_go(char arr[ROWS][COLS],int row,int col);
char chcek_win(char arr[ROWS][COLS],int row,int col);
int is_full(char arr[ROWS][COLS],int row,int col);</span>




#include "game.h"

void put_photo(char arr[ROWS][COLS],int row,int col)
{
    int i = 0;
	     printf("_ _ _ _ _ _ \n");
	for(i = 0;i < row; i++ )
	{
         printf("_%c_|_%c_|_%c_",arr[i][0],arr[i][1],arr[i][2]);
		 printf("\n");
	}
}
void player_go(char arr[ROWS][COLS],int row,int col)
{
      int x = 0;
	  int y = 0;
	  while(1)
	  {
		  printf("请输入行和列:\n");
		  scanf("%d%d",&x,&y);
		  x--;
		  y--;
		  if(( x>=0 )&&( x<row )&&( y>=0 )&&( y<row ))
		  {
               if (arr[x][y]==' ')
               {
                     arr[x][y]='X';
                     break;
               }
			   else
                     printf("非法输入,请重新输入:\n");
		  }
		  else
		  {
			  printf("输入错误,请重新输入:\n");
		  }

	  }
}
void computer_go(char arr[ROWS][COLS],int row,int col)
{

	while(1)
	{
			int x = rand()%3;
	        int y = rand()%3;

		if(arr[x][y]==' ')
		{
			arr[x][y]='0';
			break;
		}
	}
}
char chcek_win(char arr[ROWS][COLS],int row,int col)
{
	int i = 0;
	int j = 0;
	for(i=0; i<row; i++)
	{
		if((arr[i][0] == arr[i][1]) && (arr[i][1] == arr[i][2]) && (arr[i][2] !=' '))
			return arr[i][0];
	}
	for(i=0; i<col; i++)
	{
		if((arr[0][i] == arr[1][i]) && (arr[1][i] == arr[2][i]) && (arr[2][i] != ' '))
			return arr[0][i];
	}
	if((arr[0][0] == arr[1][1]) && (arr[1][1] == arr[2][2]) && (arr[2][2] != ' '))
		return arr[0][0];

	if((arr[0][2] == arr[1][1]) && (arr[1][1] == arr[2][0]) && (arr[2][0] != ' '))
		return arr[0][2];

	if(is_full(arr,row,col) == 1)
		return 'q';

	return ' ';
}
int is_full(char arr[ROWS][COLS],int row,int col)
{
	int x = 0;
	int y = 0;
	for(x=0;x<row;x++)
	{
		for(y=0;y<row;y++)
		{
              if(arr[x][y]==' ')
				  return 0;
		}
	}
	return 1;
}




<span style="font-size:18px;">#include "game.h"
void menu()
{
	printf("--------------------\n");
	printf("|   1.play   game  |\n");
	printf("|   2.exist  game  |\n");
	printf("--------------------\n");

}
int main()
{
	int input = 0;

	do 
	{
		menu();
		scanf("%d",&input);
		switch(input)
		{

		case 1:
			game();
			break;
		case 2:
			printf("退出游戏中\n");
			break;
		default:
			printf("输出错误,请重新输入\n");
		}
	} while (input);
    system("pause");
	return 0;
}
void game()
{
	char board[ROWS][COLS];
	char ret = 0;
	memset(board , ' ' , ROWS*COLS*sizeof(char));
	srand((unsigned int )time(NULL));
	put_photo(board,ROWS,COLS);
	while(1)
	{
		player_go(board,ROWS,COLS);
		put_photo(board,ROWS,COLS);
		if((ret=chcek_win(board,ROWS,COLS)) != ' ')
			break;
		
		printf("\n");
		computer_go(board,ROWS,COLS);
		put_photo(board,ROWS,COLS);
		if((ret=chcek_win(board,ROWS,COLS)) != ' ')
	     	break;
		/*put_photo(board,ROWS,COLS);*/
	}
   if(ret == 'X')
	   printf("恭喜玩家赢得胜利:\n");
   if(ret == '0')
	   printf("呵呵,你个傻逼\n");
   if(ret == 'q')
	   printf("平局\n");



}
</span>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值