/* ma_ba.c
 Function: 人間VS人間の○×ゲーム
 Author: Ken
 Date: 02/08/03
 URL: http://blue.ribbon.to/~kenweb/
 mail: kenweb@s8.xrea.com
*/

#include <stdio.h>
void print_bord(int box[3][3]);
int main()
{
	int bord[3][3]={	/*変数宣言・初期設定*/
			{0,0,0},
			{0,0,0},
			{0,0,0},
	};
	int tate,yoko,kakunin=0,turn,turn0,a,b,p,k=0;
	char  moji[3],maru[3]="○",batu[3]="×";
	
	fprintf(stdout,"○×ゲーム\n\n");
	
	print_bord(bord);
	for (turn=1;turn<=1000;turn++)
	{
		if (turn%2==1) {turn0=1; for(p=0;p<=1;p++) moji[p]=maru[p];}		/*ターン変更*/
		else if (turn%2==0) {turn0=2; for(p=0;p<=1;p++) moji[p]=batu[p];}
		
		while(1){
			kakunin=0;
			fprintf(stdout,"%sを置く縦の列のキーを入力してください(1-3)\n",moji);	/*○×の配置*/
			fscanf(stdin,"%d",&tate);
			fprintf(stdout,"%sを置く横の列のキーを入力してください(1-3)\n",moji);
			fscanf(stdin,"%d",&yoko);
			if (((yoko>=1)&&(3>=yoko))&&((tate>=1)&&(3>=tate))){
				while((kakunin<1)||(kakunin>2)){
					fprintf(stdout,"縦%d番目、横%d番目に%sを置きますか?(yes:1 no:2)\n",tate,yoko,moji);
					fscanf(stdin,"%d",&kakunin);
				}
				
				if ((kakunin==1)&&(bord[tate-1][yoko-1]==0)) break;
				if ((kakunin==1)&&((bord[tate-1][yoko-1]==1)||(bord[tate-1][yoko-1]==2)))
				{
					system("cls") ;
					print_bord(bord);
					fprintf(stderr,"そこには既に置かれています\n");
				}
				
				else if (kakunin==2) 
				{
					system("cls") ;
					print_bord(bord);
				}
				
				
			}
			
			else if (((yoko<1)||(3<yoko))||((tate<1)||(3&lt;tate)))
			{
				system("cls") ;
				print_bord(bord);
				fprintf(stderr,"そこにはマスがありません\n");
			}
		}
		system("cls") ;
		bord[tate-1][yoko-1]=turn0;
		print_bord(bord);		/*盤面出力*/
		k=0;
		
		
		/*試合終了時の判定*/
		for(a=0;a<=2;a++)		
			if ((bord[a][0]==turn0)&&(bord[a][1]==turn0)&&(bord[a][2]==turn0)) 
			{
				fprintf (stdout,"%sの勝ち\n",moji);
				exit(0);
			}
		for(b=0;b<=2;b++)
			if ((bord[0][b]==turn0)&&(bord[1][b]==turn0)&&(bord[2][b]==turn0)) 
			{
				fprintf (stdout,"%sの勝ち\n",moji);
				exit(0);
			}
		if ((bord[0][0]==turn0)&&(bord[1][1]==turn0)&&(bord[2][2]==turn0))
		{
			fprintf (stdout,"%sの勝ち\n",moji);
			exit(0);
		}
		if ((bord[0][2]==turn0)&&(bord[1][1]==turn0)&&(bord[2][0]==turn0))
		{
			fprintf (stdout,"%sの勝ち\n",moji);
			exit(0);
		}
		for (a=0;a<=2;a++)
		{
			for(b=0;b<=2;b++)
				if(bord[a][b]==0) k++;
		}
		
		if (k==0)
		{
			fprintf (stdout,"引き分け\n");
			exit(0);
		}
	}
	
}

void print_bord(int box[3][3]) 		/*盤面表示設定*/
{
	int a,b;
	fprintf(stdout," 123\n");
	for (a=0;a<=2;a++)
	{
		fprintf(stdout,"%d ",a+1);
		
		for (b=0;b<=2;b++)
			if (box[a][b]==0) fprintf(stdout,"−");
			else if (box[a][b]==1) fprintf(stdout,"○");
			else if (box[a][b]==2) fprintf(stdout,"×");
			
		fprintf(stdout,"\n");
	}
}


PC用眼鏡【管理人も使ってますがマジで疲れません】 解約手数料0円【あしたでんき】 Yahoo 楽天 NTT-X Store

無料ホームページ 無料のクレジットカード 海外格安航空券 ふるさと納税 海外旅行保険が無料! 海外ホテル