• 【C语言】自制C语言象棋(源码分享)


    【C语言】C语言实现象棋

    之前刚刚学的时候写的暴力for循环

    程序介绍:【C语言】基于五子棋框架上的 象棋 小游戏

    #include<stdio.h>
    #include<conio.h>
    #include<string.h>
    #include<stdlib.h>
    #include<windows.h> 
    //字符 L 下棋 
    
    int x,y,i,j,p,q,num = 1,round,place_x1 = 0,place_y1 = 0,place_x2 = 0,place_y2 = 0;                                                       //基本参数 
    int check_x,check_y,check_turn;
    char ch, turn = 'O',turn1 = 'N',temp,temp1;    	
    				//"||===================================||",
    char map[1000][1000]= {  "[[===================================]]",
                                 "[|①将         【|象棋|】        ②帥|]",
                                 "[====================================]]",
                                 "[[-----------------------------------]]",
                                 "[[ 車—馬—相—仕—帥—仕—相—馬—車]]", 
                                 "[[ |   |   |   | \ | / |   |   |   | ]]",
                                 "[[ +-—+-—+-—+-—+-—+-—+-—+-—+-]]",                            
                                 "[[ |   |   |   | / | \ |   |   |   | ]]",                           
                                 "[[ +-—砲—+-—+-—+-—+-—+-—砲—+-]]",
                                 "[[ |   |   |   |   |   |   |   |   | ]]",
                                 "[[ 卒—+-—卒—+-—卒—+-—卒—+-—卒]]",
                                 "[[ |   |   |   |   |   |   |   |   | ]]",
                                 "[[ +-—+-—+-—+-—+-—+-—+-—+-—+-]]",
                                 "[[===================================]]",
                                 "[[ +-—+-—+-—+-—+-—+-—+-—+-—+-]]",
                                 "[[ |   |   |   |   |   |   |   |   | ]]",
                                 "[[ 兵—+-—兵—+-—兵—+-—兵—+-—兵]]",
                                 "[[ |   |   |   |   |   |   |   |   | ]]",
                                 "[[ +-—炮—+-—+-—+-—+-—+-—炮—+-]]",
                                 "[[ |   |   |   | \ | / |   |   |   | ]]",
                                 "[[ +-—+-—+-—+-—+-—+-—+-—+-—+-]]",
                                 "[[ |   |   |   | / | \ |   |   |   | ]]",
                                 "[[ 车—马—象—士—将—士—象—马—车]]",
                                 "[[-----------------------------------]]",
                                 "[=====================================]"};
    char check_1[9][3] ={"车","马","象","士","将","炮","兵","+-"};  //取棋子时只判断前8合法, 
    char check_2[9][3] ={"車","馬","相","仕","帥","砲","卒","+-"};	//下棋子时判断多一个空位合法 
    char check[3];	
    		
    int check_main1(char* temp,char* temp1,char* turn,char* turn1,int *num)         //判断 将方  下棋是否合法 
    {
    	check[0] = *temp;
    	check[1] = *temp1;
    	check[2] = '';
    	char a,b;								
    	for ( i = 0; i < 8; i++)        
    	{
    		if( strcmp(check_2[i],check) == 0)
    		{	
    			*temp = *turn;
    			*temp1 = *turn1;
    			*turn = 'O';
    			*turn1 = 'N'; 
    			if( i < 7){
    				printf("帅方的%s被吃
    ",check_2[i]);
    				Sleep(500);
    			}	
    			*num = *num + 1;
    			for( i = 4; i <= 8; i = i + 2)   //判断帥是否死亡 
    			{
    				for(j = 15; j <= 23; j= j+ 4)
    				{
    					if(map[i][j] == check_2[4][0]  && map[i][j+1] == check_2[4][1])
    					{
    						place_x2 = i;
    						place_y2 = j;
    						break;
    					}
    				}
    				if( j <= 23)
    					break;
    		    }
    			if( i == 10)
    			{
    				printf("帥 被将军  将方获得胜利
    ");
    				Sleep(10000); 
    				return 0; 
    			}
    			for( i = 18; i <= 22; i = i + 2)   //判断将是否死亡 
    			{
    				for(j = 15; j <= 23; j= j+ 4)
    				{
    					if(map[i][j] == check_1[4][0]  && map[i][j+1] == check_1[4][1])
    					{
    						place_x1 = i;
    						place_y1 = j;
    						break;
    					}	
    				}
    				if( j <= 23)
    					break;
    			}
    			if( i == 24)
    				{
    					printf("将方 被将军  帥方获得胜利
    ");
    					Sleep(10000); 
    					return 0; 
    				}
    			if( place_y1 == place_y2)
    			{
    				for( i = place_x2 + 2; i <= place_x1 - 2; i = i +2)
    				{
    					if(map[i][place_y1] != '+')
    					break;	
    				}
    				if( i == place_x1)
    				{
    					if(round == 1)
    						printf(" 将方对将   帥方胜利");
    					else if( round == 2)
    						printf(" 帥方对将   将方胜利");
    					Sleep(10000); 
    					return 0;
    				}   	
    			}
    			break; 
    		}	
    	}
    	if( i == 8)
    	{
    		printf("不合法的走法
    ");
    		Sleep(500);
    	} 	 
    } 
    int check_main2(char* temp,char* temp1,char* turn,char* turn1,int *num) //判断  帥方下棋是否合法 
    {   
    	check[0] = *temp;
    	check[1] = *temp1;
    	check[2] = '';
    	char a,b;
    	for ( i = 0; i < 8; i++)        
    	{
    		if( strcmp(check_1[i],check) == 0)
    		{	
    			*temp = *turn;
    			*temp1 = *turn1;
    			*turn = 'O';
    			*turn1 = 'N'; 
    			if( i < 7)
    			{
    				printf("将方的%s被吃",check_1[i]);
    				Sleep(500);
    			}	
    		    *num = *num + 1; 
    			for( i = 4; i <= 8; i = i + 2)   //判断帥是否死亡 
    		    {
    				for(j = 15; j <= 23; j= j+ 4)
    				{
    					if(map[i][j] == check_2[4][0]  && map[i][j+1] == check_2[4][1])
    					{
    						place_x2 = i;
    						place_y2 = j;
    						break;
    					}
    				}
    				if( j <= 23)
    					break;
    			}
    			if( i == 10)
    			{
    				printf("帥 被将军  将方获得胜利
    ");
    				Sleep(10000); 
    				return 0; 
    			}
    			for( i = 18; i <= 22; i = i + 2)   //判断将是否死亡 
    			{
    				for(j = 15; j <= 23; j= j+ 4)
    				{
    					if(map[i][j] == check_1[4][0]  && map[i][j+1] == check_1[4][1])
    					{
    						place_x1 = i;
    						place_y1 = j;
    						break;
    					}	
    				}
    				if( j <= 23)
    					break;
    			}
    			if( i == 24)
    				{
    					printf("将方 被将军  帥方获得胜利
    ");
    					Sleep(10000); 
    					return 0; 
    				}
    			if( place_y1 == place_y2)
    			{
    				for( i = place_x2 + 2; i <= place_x1 - 2; i = i +2)
    				{
    					if(map[i][place_y1] != '+')
    						break;	
    				}
    				if( i == place_x1)
    				{
    					if(round == 1)
    						printf(" 将方对将   帥方胜利");
    					else if( round == 2)
    						printf(" 帥方对将   将方胜利");
    					Sleep(10000); 
    					return 0;
    				}   	
    			} 
    			break; 
    		}	
    	}
    	if( i == 8)
    	{
    	printf("不合法的走法
    ");
    	Sleep(500);
    	} 	 
    }
    
    int main()
    {		
    	printf("wasd移动L取子下棋");
    	getchar();	
    	system("cls"); 
    	system("mode con cols=40 lines=30");      //迷你界面 
        system("color 30"); 				
    	for ( i = 0; i < 27; i++)
    	puts(map[i]);
    	x = 6,y = 19;
        temp = map[x][y];
    	temp1 = map[x][y+1];     
        while(num)            
        {    if(num % 2 == 1 &&num / 2 % 2 == 0){
        	printf("现在是'将'的回合
    ");
        	round = 1;
    	}	
    	else if( num %2 == 1){
    		printf("现在轮到'帥'的回合了
    ");
    		round = 2;  	
    	}               
        ch = getch();
        if ( ch == 's')         //下移 
        {
            if( map[x+1][y]!= '-')
            {
                map[x][y] =temp;
                map[x][y+1] = temp1;
                x = x + 2;
                temp = map[x][y];
                temp1 = map[x][y+1];
                map[x][y] = turn;
                map[x][y+1] = turn1;
            }
        }
        else if ( ch == 'a')    //左移 
        {
            if(map[x][y-1]!=' ')
            {
                map[x][y] =temp;
                map[x][y+1] = temp1;
                y = y - 4;
                temp = map[x][y];
                temp1 = map[x][y+1];
                map[x][y] = turn;
                map[x][y+1] = turn1;
            }
        }
        else if ( ch == 'w')    //上移 
        {
            if(  map[x-1][y]!= '-')
            {
                map[x][y] =temp;
                map[x][y+1] = temp1;
                x = x - 2;
                temp = map[x][y];
                temp1 = map[x][y+1];
                map[x][y] = turn;
                map[x][y+1] = turn1;
            }
        }
        else if ( ch == 'd')    //右移 
        {
            if(map[x][y+2]!=']')
            {
                map[x][y] =temp;
                map[x][y+1] = temp1;
                y = y + 4;
                temp = map[x][y];
                temp1 = map[x][y+1];
                map[x][y] = turn;
                map[x][y+1] = turn1;
            }
        }
            else if( ch == 'l' || ch =='L') 
            {
            	if(num % 2 == 1 && temp != '+' && temp1 != '-')   //取 
            	{
    				check[0] = temp;
    				check[1] = temp1;
    				check[2] = '';
    				if( round == 1)
    				{
    					for (  i = 0; i < 7; i++)           //将方 
    					{
    						if( strcmp(check_1[i],check) == 0)
    						{
    							turn = temp;
            					turn1 = temp1;
            					temp = '+';
            					temp1 = '-';  
    							check_x = x;
    							check_y = y;
    							check_turn = 10 + i;  
    							num++;    
    							break; 
    						}	
    					}
    					if( i == 7){
    						printf("这不是你的棋子
    ");
    						Sleep(500);
    					}
    				 }
    				else if( round == 2)
    				{
    					for ( i = 0; i < 7; i++)           //将方 
    					{
    						if( strcmp(check_2[i],check) == 0)
    						{
    							turn = temp;
            					turn1 = temp1;
            					temp = '+';
            					temp1 = '-';
    							check_x = x;
    							check_y = y;
    							check_turn = 20 + i;   
    							num++;    
    							break; 
    						}	
    					}
    					if( i == 7){
    						printf("这不是你的棋子
    ");
    						Sleep(500);
    					}
    					
    				} 
    			}
    			else if( num % 2 == 0)                 //放 
    			{             
    		/*char check_1[8][3] ={"车","马","象","士","将","炮","卒","+-"}; 
    		char check_2[8][3] ={"俥","馬","相","仕","帥","軳","兵","+-"};*/ 
    			/*
    		中界 楚河上下坐标  12    15 
    		*/     
    		//  往下2  往又4 
    				if( check_turn < 20)          //将方 
    				{
    					if( check_turn == 10) 				//车    的走法规范     完成 
    					{
    						if((x == check_x && y == check_y))
    						{		
    							
    							temp = turn;
    							temp1 = turn1;
    							turn = 'O';
    							turn1 = 'N';
    							num--;
    							printf("少悔棋哦
    ");
    							printf("还是你的回合"); 
    							Sleep(500);
    						}
    						else if(  y == check_y  )
    						{
    							if( x > check_x)
    							{
    								for(j = check_x + 2; j < x;j = j + 2)
    								{
    									if(map[j][y] == '+');
    									else
    									{
    									printf("不合法的下发
    ");
    									Sleep(500);
    									break;
    									}
    								}
    								if( j >= x)
    								check_main1(&temp,&temp1,&turn,&turn1,&num);
    								} 
    							if( x < check_x)
    							{
    								for(j = check_x - 2; j > x;j = j - 2)
    								{
    									if(map[j][y] == '+');
    									else
    									{
    									printf("不合法的下发
    ");
    									Sleep(500);
    									break;
    									}
    								}
    								if( j <= x)
    								check_main1(&temp,&temp1,&turn,&turn1,&num);
    								} 	
    						}
    							
    						else if(  x == check_x  )
    						{
    							if( y > check_y)
    							{
    								for(j = check_y + 4; j < y;j = j + 4)
    								{
    									if(map[x][j] == '+');
    									else
    									{
    									printf("不合法的下发
    ");
    									Sleep(500);
    									break;
    									}
    								}
    								if( j >= y)
    								check_main1(&temp,&temp1,&turn,&turn1,&num);
    								} 
    							if( y < check_y)
    							{
    								for(j = check_y - 4; j > y;j = j - 4)
    								{
    									if(map[x][j] == '+');
    									else
    									{
    									printf("不合法的下发
    ");
    									Sleep(500);
    									break;
    									}
    								}
    								if( j <= y)
    								check_main1(&temp,&temp1,&turn,&turn1,&num);
    								} 	
    						}	
    						else
    						{
    							printf("不合法的下法
    ");
    							Sleep(500);
    						}
    					}
    					if( check_turn == 11) 				//马    的走法规范   ok 
    					{
    						if((x == check_x && y == check_y))
    						{		
    							temp = turn;
    							temp1 = turn1;
    							turn = 'O';
    							turn1 = 'N';
    							num--;
    							printf("少悔棋哦
    ");
    							printf("还是你的回合"); 
    							Sleep(500);
    						}
    							else if( (abs( x - check_x) == 2&& abs( y - check_y) == 8)&& map[check_x][(y+check_y)/2] =='+')
    						{
    							check_main1(&temp,&temp1,&turn,&turn1,&num);
    						}
    						else if( (abs( x - check_x) == 4&& abs( y - check_y) == 4)&& map[(x + check_x)/2][check_y] == '+' )
    						{
    							check_main1(&temp,&temp1,&turn,&turn1,&num);
    						}
    						else
    						{
    								printf("不合法的下法
    ");
    							Sleep(500);
    						}
    					}	
    						if( check_turn == 12) 				//相    的走法规范     完成 
    					{
    						if( x >= 15 &&(abs(y - check_y) == 8 && abs(x - check_x) == 4))
    						{
    							if((x == check_x && y == check_y))
    							{		
    							temp = turn;
    							temp1 = turn1;
    							turn = 'O';
    							turn1 = 'N';
    							num--;
    							printf("少悔棋哦
    ");
    							printf("还是你的回合"); 
    							Sleep(500);
    							}
    							else if((x == 22 && (y == 11 || y == 27))||(x == 18 && ( y == 3 || y == 19 || y == 35)) ||(x == 14 && (y == 11|| y ==27)))
    							{		
    								if( map[(x+check_x)/2][(y+check_y)/2] == '+')
    									check_main1(&temp,&temp1,&turn,&turn1,&num);
    								else
    								{
    									printf("棋子卡住,不可执行");
    									Sleep(500); 
    								} 
    							}
    							else
    							{
    									printf("不合法的下法
    ");
    								Sleep(500);
    							}
    						}
    						else
    						{
    							printf("不合法的下法
    ");
    							Sleep(500);
    						}  
    					}
    						if( check_turn == 13) 				//士    的走法规范    ok 
    					{
    						if((x == check_x && y == check_y))
    						{		
    							
    						temp = turn;
    							temp1 = turn1;
    							turn = 'O';
    							turn1 = 'N';
    							num--;
    							printf("少悔棋哦
    ");
    							printf("还是你的回合"); 
    							Sleep(500);
    						}
    						else if( abs(x - check_x)== 2 && abs( y - check_y) == 4 &&((x==22 && (y == 15 || y == 23)) || ( x == 20 && y == 19) || ( x == 18 && ( y == 15 || y == 23))))
    						{
    							check_main1(&temp,&temp1,&turn,&turn1,&num);
    						}
    						else
    						{
    								printf("不合法的下法
    ");
    							Sleep(500);
    						}
    					}
    						if( check_turn == 14) 				//将    的走法规范 
    					{
    						if((x == check_x && y == check_y))
    						{		
    							temp = turn;
    							temp1 = turn1;
    							turn = 'O';
    							turn1 = 'N';
    							num--;
    							printf("少悔棋哦
    ");
    							printf("还是你的回合"); 
    							Sleep(500);
    						}
    					else if( ((abs(x - check_x)== 2 && abs( y - check_y) == 0 )|| (abs(x - check_x)== 0 && abs( y - check_y) == 4)) && x >= 18 && x <= 22 && y >= 15 && y <= 23 )
    						{
    							check_main1(&temp,&temp1,&turn,&turn1,&num);
    						}
    						else
    						{
    								printf("不合法的下法
    ");
    							Sleep(500);
    						}
    					}
    						if( check_turn == 15) 				//炮    的走法规范 
    					{
    						if((x == check_x && y == check_y))
    						{		
    							temp = turn;
    							temp1 = turn1;
    							turn = 'O';
    							turn1 = 'N';
    							num--;
    							printf("少悔棋哦
    ");
    							printf("还是你的回合"); 
    							Sleep(500);
    						}
    						else if( y == check_y )
    						{
    							int check_pao = 0;
    							if( x > check_x)
    							{
    								for(j = check_x + 2; j<= x ;j = j+ 2)
    								{
    									if(map[j][y] == '+' );
    									else									
    										check_pao++;
    								}
    								if(check_pao == 1&& temp == '+')       //  直线行走但不可吃棋子 
    									check_main1(&temp,&temp1,&turn,&turn1,&num);
    								else if( check_pao == 2 && temp != '+')      //跳跃吃棋 
    									check_main1(&temp,&temp1,&turn,&turn1,&num); 
    								else
    								{
    									printf("不合法的下法
    ");
    									Sleep(500);
    								}
    							}
    							else
    							{
    								for(j = check_x - 2; j>= x;j = j - 2)
    								{
    									if(map[j][y] == '+' );
    									else
    									{
    										check_pao++;
    									}
    								}
    								if(check_pao == 1&& temp == '+')       //  直线行走但不可吃棋子 
    									check_main1(&temp,&temp1,&turn,&turn1,&num);
    								else if( check_pao == 2 && temp != '+')      //跳跃吃棋 
    									check_main1(&temp,&temp1,&turn,&turn1,&num); 
    								else
    								{
    									printf("不合法的下法
    ");
    									Sleep(500);
    								}
    							}
    						}
    						else if( x == check_x )
    						{
    								int check_pao = 0;
    							if( y > check_y)
    							{
    								for(j = check_y + 4; j<= y ;j = j+4)
    								{
    									if(map[x][j] == '+' );
    									else									
    										check_pao++;
    								}
    								if(check_pao == 1&& temp == '+')       //  直线行走但不可吃棋子 
    									check_main1(&temp,&temp1,&turn,&turn1,&num);
    								else if( check_pao == 2 && temp != '+')      //跳跃吃棋 
    									check_main1(&temp,&temp1,&turn,&turn1,&num); 
    								else
    								{
    									printf("不合法的下法
    ");
    									Sleep(500);
    								}
    							}
    							else
    							{
    								for(j = check_y - 4; j>= y;j = j - 4)
    								{
    									if(map[x][j] == '+' );
    									else
    										check_pao++;
    								}
    								if(check_pao == 1&& temp == '+')       //  直线行走但不可吃棋子 
    									check_main1(&temp,&temp1,&turn,&turn1,&num);
    								else if( check_pao == 2 && temp != '+')      //跳跃吃棋 
    									check_main1(&temp,&temp1,&turn,&turn1,&num); 
    								else
    								{
    									printf("不合法的下法
    ");
    									Sleep(500);
    								}
    							}
    						}
    						else
    						{
    								printf("不合法的下法
    ");
    							Sleep(500);
    						}
    					}	
    					if( check_turn == 16) 				//卒    的走法规范     成功 
    					{
    						if( x >= 14){
    							if((x == check_x && y == check_y))
    							{		
    							temp = turn;
    							temp1 = turn1;
    							turn = 'O';
    							turn1 = 'N';
    							num--;
    							printf("少悔棋哦
    ");
    							printf("还是你的回合"); 
    							Sleep(500);
    							}
    							else if( x == check_x - 2 && y == check_y)
    								check_main1(&temp,&temp1,&turn,&turn1,&num);
    							else
    							{
    								printf("不合法的下法
    ");
    								Sleep(500);
    							}		
    						}
    						else{
    							if((x - check_x == 0 && abs(y-check_y) ==4) ||( x - check_x == -2 && abs(y-check_y) == 0))
    								check_main1(&temp,&temp1,&turn,&turn1,&num);
    							else
    							{
    							printf("不合法的下法
    ");
    							Sleep(500);
    							}	
    						}
    					}		
    				}
    				
    				
    				
    				else						   //帅方 
    				{ 
    					if( check_turn == 20) 				//车    的走法规范       完成 
    					{ 
    						if((x == check_x && y == check_y))
    						{		
    							
    							temp = turn;
    							temp1 = turn1;
    							turn = 'O';
    							turn1 = 'N';
    							num--;
    							printf("少悔棋哦
    ");
    							printf("还是你的回合"); 
    							Sleep(500);
    						}
    						else if(  y == check_y  )
    						{
    							if( x > check_x)
    							{
    								for(j = check_x + 2; j < x;j = j + 2)
    								{
    									if(map[j][y] == '+');
    									else
    									{
    									printf("不合法的下发
    ");
    									Sleep(500);
    									break;
    									}
    								}
    								if( j >= x)
    								check_main2(&temp,&temp1,&turn,&turn1,&num);
    								} 
    							if( x < check_x)
    							{
    								for(j = check_x - 2; j > x;j = j - 2)
    								{
    									if(map[j][y] == '+');
    									else
    									{
    									printf("不合法的下发
    ");
    									Sleep(500);
    									break;
    									}
    								}
    								if( j <= x)
    								check_main2(&temp,&temp1,&turn,&turn1,&num);
    								} 	
    						}
    							
    						else if(  x == check_x  )
    						{
    							if( y > check_y)
    							{
    								for(j = check_y + 4; j < y;j = j + 4)
    								{
    									if(map[x][j] == '+');
    									else
    									{
    									printf("不合法的下发
    ");
    									Sleep(500);
    									break;
    									}
    								}
    								if( j >= y)
    								check_main2(&temp,&temp1,&turn,&turn1,&num);
    								} 
    							if( y < check_y)
    							{
    								for(j = check_y - 4; j > y;j = j - 4)
    								{
    									if(map[x][j] == '+');
    									else
    									{
    									printf("不合法的下发
    ");
    									Sleep(500);
    									break;
    									}
    								}
    								if( j <= y)
    								check_main2(&temp,&temp1,&turn,&turn1,&num);
    								} 	
    						}	
    						else
    						{
    							printf("不合法的下法
    ");
    							Sleep(500);
    						}
    					}
    					if( check_turn == 21) 				//马    的走法规范   ok 
    					{
    						if((x == check_x && y == check_y))
    						{		
    							temp = turn;
    							temp1 = turn1;
    							turn = 'O';
    							turn1 = 'N';
    							num--;
    							printf("少悔棋哦
    ");
    							printf("还是你的回合"); 
    							Sleep(500);
    						}
    							else if( (abs( x - check_x) == 2&& abs( y - check_y) == 8)&& map[check_x][(y+check_y)/2] =='+')
    						{
    							check_main2(&temp,&temp1,&turn,&turn1,&num);
    						}
    						else if( (abs( x - check_x) == 4&& abs( y - check_y) == 4)&& map[(x + check_x)/2][check_y] == '+' )
    						{
    							check_main2(&temp,&temp1,&turn,&turn1,&num);
    						}
    						else
    						{
    								printf("不合法的下法
    ");
    							Sleep(500);
    						}
    					}	
    						if( check_turn == 22) 				//相    的走法规范    完成 
    					{
    						if( x <= 12 && (abs(y - check_y) == 8 && abs(x - check_x) == 4))
    						{
    							if((x == check_x && y == check_y))
    							{		
    						temp = turn;
    							temp1 = turn1;
    							turn = 'O';
    							turn1 = 'N';
    							num--;
    							printf("少悔棋哦
    ");
    							printf("还是你的回合"); 
    							Sleep(500);
    							}
    							else if((x == 4 && (y == 11 || y == 27))||(x == 8 && ( y == 3 || y == 19 || y == 35)) ||(x == 12 && (y == 11|| y ==27)))
    							{		
    								if( map[(x+check_x)/2][(y+check_y)/2] == '+')
    									check_main2(&temp,&temp1,&turn,&turn1,&num);
    								else
    								{
    									printf("棋子卡住,不可执行");
    									Sleep(500); 
    								} 
    							}
    							else
    							{
    									printf("不合法的下法
    ");
    								Sleep(500);
    							}
    						}
    						else
    						{
    							printf("不合法的下法
    ");
    							Sleep(500);
    						}  
    					}
    						if( check_turn == 23) 				//士    的走法规范   ok 
    					{
    						if((x == check_x && y == check_y))
    						{		
    							temp = turn;
    							temp1 = turn1;
    							turn = 'O';
    							turn1 = 'N';
    							num--;
    							printf("少悔棋哦
    ");
    							printf("还是你的回合"); 
    							Sleep(500);
    						}
    						else if( abs(x - check_x)== 2 && abs( y - check_y) == 4 &&((x==4 && (y == 15 || y == 23)) || ( x == 6 && y == 19) || ( x == 8 && ( y == 15 || y == 23))))
    						{
    							check_main2(&temp,&temp1,&turn,&turn1,&num);
    						}
    						else
    						{
    								printf("不合法的下法
    ");
    							Sleep(500);
    						}
    					}
    						if( check_turn == 24) 				//将    的走法规范   ok
    					{
    						if((x == check_x && y == check_y))
    						{		
    							temp = turn;
    							temp1 = turn1;
    							turn = 'O';
    							turn1 = 'N';
    							num--;
    							printf("少悔棋哦
    ");
    							printf("还是你的回合"); 
    							Sleep(500);
    						}
    						else if( ((abs(x - check_x)== 2 && abs( y - check_y) == 0 )|| (abs(x - check_x)== 0 && abs( y - check_y) == 4)) && x >= 4 && x <= 8 && y >= 15 && y <= 23 )
    						{
    							check_main2(&temp,&temp1,&turn,&turn1,&num);
    						}
    						else
    						{
    								printf("不合法的下法
    ");
    							Sleep(500);
    						}
    					}
    						
    					if( check_turn == 25) 				//炮    的走法规范 
    					{
    						if((x == check_x && y == check_y))
    						{		
    							temp = turn;
    							temp1 = turn1;
    							turn = 'O';
    							turn1 = 'N';
    							num--;
    							printf("少悔棋哦
    ");
    							printf("还是你的回合"); 
    							Sleep(500);
    						}
    						else if( y == check_y )
    						{
    							int check_pao = 0;
    							if( x > check_x)
    							{
    								for(j = check_x + 2; j<= x ;j = j+ 2)
    								{
    									if(map[j][y] == '+' );
    									else									
    										check_pao++;
    								}
    								if(check_pao == 1&& temp == '+')       //  直线行走但不可吃棋子 
    									check_main2(&temp,&temp1,&turn,&turn1,&num);
    								else if( check_pao == 2 && temp != '+')      //跳跃吃棋 
    									check_main2(&temp,&temp1,&turn,&turn1,&num); 
    								else
    								{
    									printf("不合法的下法
    ");
    									Sleep(500);
    								}
    							}
    							else
    							{
    								for(j = check_x - 2; j>= x;j = j - 2)
    								{
    									if(map[j][y] == '+' );
    									else
    									{
    										check_pao++;
    									}
    								}
    								if(check_pao == 1&& temp== '+')       //  直线行走但不可吃棋子 
    									check_main2(&temp,&temp1,&turn,&turn1,&num);
    								else if( check_pao == 2 && temp != '+')      //跳跃吃棋 
    									check_main2(&temp,&temp1,&turn,&turn1,&num); 
    								else
    								{
    									printf("不合法的下法
    ");
    									Sleep(500);
    								}
    							}
    						}
    						else if( x == check_x )
    						{
    								int check_pao = 0;
    							if( y > check_y)
    							{
    								for(j = check_y + 4; j<= y ;j = j+4)
    								{
    									if(map[x][j] == '+' );
    									else									
    										check_pao++;
    								}
    								if(check_pao == 1&& temp == '+')       //  直线行走但不可吃棋子 
    									check_main2(&temp,&temp1,&turn,&turn1,&num);
    								else if( check_pao == 2 && temp != '+')      //跳跃吃棋 
    									check_main2(&temp,&temp1,&turn,&turn1,&num); 
    								else
    								{
    									printf("不合法的下法
    ");
    									Sleep(500);
    								}
    							}
    							else
    							{
    								for(j = check_y - 4 ; j>= y;j = j - 4)
    								{
    									if(map[x][j] == '+' );
    									else
    										check_pao++;
    								}
    								if(check_pao ==1&& temp == '+')       //  直线行走但不可吃棋子 
    									check_main2(&temp,&temp1,&turn,&turn1,&num);
    								else if( check_pao == 2&& temp != '+')      //跳跃吃棋 
    									check_main2(&temp,&temp1,&turn,&turn1,&num); 
    								else
    								{
    									printf("不合法的下法
    ");
    									Sleep(500);
    								}
    							}
    						}
    						else
    						{
    								printf("不合法的下法
    ");
    							Sleep(500);
    						}
    					}	
    					if( check_turn == 26) 				//卒    的走法规范     成功 
    					{
    						if( x <= 12){
    							if((x == check_x && y == check_y))
    							{		
    								temp = turn;
    							temp1 = turn1;
    							turn = 'O';
    							turn1 = 'N';
    							num--;
    							printf("少悔棋哦
    ");
    							printf("还是你的回合"); 
    							Sleep(500);
    							}
    							else if( x == check_x + 2 && y == check_y)
    								check_main2(&temp,&temp1,&turn,&turn1,&num);
    							else
    							{
    								printf("不合法的下法
    ");
    								Sleep(500);
    							}		
    						}
    						else{
    								if((x - check_x == 0 && abs(y-check_y) ==4) ||( x - check_x == 2 && abs(y-check_y) == 0))
    									check_main2(&temp,&temp1,&turn,&turn1,&num);
    								else{
    								printf("不合法的下法
    ");
    								Sleep(500);
    								}	
    						}
    					}
    				} 
    			}
            }
            system("cls");
            for(i = 0; i < 27; i++)
            puts(map[i]);
        }
        Sleep(5000);
     } 
    
  • 相关阅读:
    记一次简单的SQL优化
    JAVA 根据数据库表内容生产树结构JSON数据
    Maven 整合FreeMarker使用
    JAVA FreeMarker工具类
    JAVA 分页工具类及其使用
    JAVA 日期格式工具类DateUtil.java
    JAVA 读写Excel
    简单Linux命令学习笔记
    WEB安全隐患
    metasploit 连接database相关问题
  • 原文地址:https://www.cnblogs.com/404name/p/14634094.html
Copyright © 2020-2023  润新知