⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fivechess.c

📁 君正早期ucos系统(只有早期的才不没有打包成库),MPLAYER,文件系统,图片解码,浏览,电子书,录音,想学ucos,识货的人就下吧 russblock fmradio explore set
💻 C
字号:
// DEMO7_18.CPP Windowed DirectDraw Demo
//#define WIN32_LEAN_AND_MEAN  // just say no to MFC

//#include <windows.h>   // include important windows stuff
//#include <windowsx.h> 
//#include <iostream.h> // include important C/C++ stuff
//#include <stdlib.h>
//#include <stdio.h> 
#include <math.h>
//#include "resource.h"


//void MainWnd_Paint(HWND hwnd);

#define KEYDOWN(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 1 : 0)
#define WINDOW_CLASS_NAME "WINCLASS1"
#define WINDOW_WIDTH    382
#define WINDOW_HEIGHT   422
#define MM()    MessageBox(my_hwnd,"sdlfk","sldkfj",MB_OK | MB_ICONQUESTION)

#define Poit_Sco         10
#define Step_Sco          20
#define Left_Sco         0.6
#define Down_Sco         11//减分
#define Down_Sco2        7//减分2
#define Sco_50           1000
#define Sco_51           900
#define Sco_40           800
#define Sco_41           700
#define Sco_40_0         600
#define Sco_41_0         500
//#define 
int my_sco[20];
typedef struct sss
 {int stat;//2是Computer,是白色的。1是玩家,是黑色的。0就是空。
 }my_stru,*lpmy_stru;

my_stru bb[15][15]; 

typedef struct sssj
{int sco;
 int stat;
}sco_stru,*lpsco_stru;

sco_stru p_bb[15][15],c_bb[15][15];

int xx[15],ww[20],mouse_x,mouse_y,p_num=0,c_num=0;
int my_stat=0;//my_stat=0表示到电脑走了 my_stat=1表示到玩家走了
//HWND      my_hwnd        =  NULL; // globally track main window
//HINSTANCE my_hinstance   =  NULL; // globally track hinstance

#include "ShowBmp.h"

extern void* qipanBmp, *whiteBmp, *blackBmp;
//void ShowBMP(char* bmpcontent, int XPos, int YPos);
//void ShowBMP(void* bmpcontent, int XPos, int YPos, bool fromfile);

int Pain_back(int i,int j)
{
		ShowBMP(blackBmp, xx[j],xx[i], 0);
		return (0);
}
int Pain_white(int i,int j)
{ 
		ShowBMP(whiteBmp,xx[j],xx[i], 0);
		return (0);
}


///////////////////////////////////////////////////////////
int My_work(int mouse_x,int mouse_y)
{  int flag=0,i,j;
	for(i=0;i<15;i++)
		 {if((mouse_y>=xx[i]) & (mouse_y<=xx[i]+21))
		     {flag=1;
		         break;
			 }
		  }
	if(i==15)//如果mouse_y不在选定范畴,则返回0(即要用户重新输入)
	   return (0);
	if(flag==1)
		 {for(j=0;j<15;j++)
		      {flag=0;
		       if((mouse_x>=xx[j]) & (mouse_x<=xx[j]+21))
			      {flag=1;
			       break;
				  }
			  }
		    }
   if(flag==0)
		return (0);//用户输入不在范畴内,重新输入,返回0
   else 
	   {if(bb[i][j].stat==0)
		   {
			bb[i][j].stat=1;
		    Pain_back(i,j);
			}
	   else 
		   return (0);
	   }
	   p_num++;
	   return (1);//用户输入合法,返回1

}

int Check_11(int i,int j,int stat)
{
	int b;
	int cx,cy,mm,num;
 for (mm=0;mm<8;mm++)
   { switch (mm)
      {case 0:
         cx=-1;cy=0;break;
	   case 1:
		 cx=-1;cy=1;break;
	   case 2:
		 cx=0;cy=1;break;
	   case 3:
		 cx=1;cy=1;break;
	   case 4:
		 cx=1;cy=0;break;
	   case 5:
		 cx=1;cy=-1;break;
	   case 6:
		 cx=0;cy=-1;break;
	   case 7:
		  cx=-1;cy=-1;break;
	   default:break;
	  }
	 num=1;
    for(b=1;b<5;b++)
     {if((bb[i+b*cx][j+b*cy].stat==stat) & (((i+b*cx)>=0) &((i+b*cx)<15)) & (((j+b*cy)>=0) &((j+b*cy)<15)))
         num++;
	 }
	 if(num==5)
        return(stat);
   }
 return 0;
// return stat;
}

int Check_win()
{
	int flag=0;	
	int i,j;	
	for(i=0;i<15;i++)		
	{
		for(j=0;j<15;j++)
		{
			if(bb[i][j].stat!=0)
			{
				if(Check_11(i,j,bb[i][j].stat)==bb[i][j].stat)    
					return(bb[i][j].stat);     
			}
		}
	}
	return (0);
}

int sco_mm(int m,int n,int stat)
{ int cx,cy,mm;
  int nn,nnn;
  int i,j;
  for (mm=0;mm<8;mm++)
   { switch (mm)
      {case 0:cx=-1;cy=0;break;
	   case 1:cx=-1;cy=1;break;
	   case 2:cx=0;cy=1;break;
	   case 3:cx=1;cy=1;break;
	   case 4:cx=1;cy=0;break;
	   case 5:cx=1;cy=-1;break;
	   case 6:cx=0;cy=-1;break;
	   case 7:cx=-1;cy=-1;break;
	   default:break;
	  }
	nnn=2;nn=Poit_Sco;
	i=m;j=n;
    i+=cx;j+=cy;
    if(stat==2)
    {
      while(i>=0 && i<15 && j>=0 && j<15 && nnn>0)
        {  if(c_bb[i][j].stat==stat)
             {//nn+=Step_Sco;
	            if (nnn==2)
			       nn+=Step_Sco;
	            else if (nnn==1)
			      {c_bb[i-cx][j-cy].sco+=10;
			        nnn=-3;//不做了,退出。
			      }
		     }
	        else if(c_bb[i][j].stat==0)
	           {if(nnn<2)
		            nn=(int)(nn*Left_Sco);
			     c_bb[i][j].sco+=nn;
                 nnn--;
		       }
	        else 
		        nnn=-3;//不做了,退出。
	        i+=cx;
	        j+=cy;
		}
      
     }
    else if(stat==1)
    {
       while(i>=0 && i<15 && j>=0 && j<15 && nnn>0)
         {  if(p_bb[i][j].stat==stat)
              {//nn+=Step_Sco;
	            if (nnn==2)
			       nn+=Step_Sco;
	            else if (nnn==1)
			      {p_bb[i-cx][j-cy].sco+=10;
			       nnn=-3;
			      }
			  }
	        else if(p_bb[i][j].stat==0)
	           {if(nnn<2)
		           nn=(int)(nn*Left_Sco);
			     p_bb[i][j].sco+=nn;
                 nnn--;
		        }
	         else 
		        nnn=-3;//不做了,退出。
	       i+=cx;
		   j+=cy;
		 }
	}
   }
return (0);
}


int my_sco_add(int m,int n)
{ int cx,cy,mm;
  int nn,nnn;
  int i,j;
  for (mm=0;mm<8;mm++)
   { switch (mm)
      {case 0:cx=-1;cy=0;break;
	   case 1:cx=-1;cy=1;break;
	   case 2:cx=0;cy=1;break;
	   case 3:cx=1;cy=1;break;
	   case 4:cx=1;cy=0;break;
	   case 5:cx=1;cy=-1;break;
	   case 6:cx=0;cy=-1;break;
	   case 7:cx=-1;cy=-1;break;
	   default:break;
	  }
     i=m;j=n;
	 nn=0;
	 i+=ww[8]*cx;j+=ww[8]*cx;
	 //if(i<0 | i>14 | j<0 | j>14)
		// continue;
	 for(nnn=0;nnn<ww[9];nnn++)
	    {  if(c_bb[i][j].stat==ww[nnn])
	             nn++;
	       else 
			  break;
	       i+=cx;j+=cy;
		   if(i<0 || i>14 || j<0 || j>14)
		       break;
		}
	 if(nn==ww[9])//说明配对成功;下一步是加分
	    { i=m;j=n;
	      i+=ww[8]*cx;j+=ww[8]*cx;
		  if(ww[19]==2)//要求加电脑的分,c_bb[i][j].sco+=?--------
		     {for(nnn=0;nnn<ww[9];nnn++)
		          {c_bb[i][j].sco+=ww[10+nnn];
                   i+=cx;j+=cy;
				  }
			 }
		  else if (ww[19]==1) //要求加玩家的分,p_bb[i][j].sco+=?--------
		     {for(nnn=0;nnn<ww[9];nnn++)
		          { p_bb[i][j].sco+=ww[10+nnn];
			        i+=cx;j+=cy;
				  }
			 }
		}//----end 加分---------
   }//----end  for (mm=0;mm<8;mm++)------
   return (1);
}



int Computer_think()
{int i,j;
	for( i=0;i<15;i++)
    {for( j=0;j<15;j++)
        {p_bb[i][j].sco=0;
         p_bb[i][j].stat=bb[i][j].stat;
		 c_bb[i][j].sco=0;
		 c_bb[i][j].stat=bb[i][j].stat;
		}
	}
 for( i=0;i<15;i++)
   {for(j=0;j<15;j++)
       {if(bb[i][j].stat!=0)
         {
			 sco_mm(i,j,bb[i][j].stat);
		 /* Sco_0_j(i,j,bb[i][j].stat);
          Sco_1_j(i,j,bb[i][j].stat);
          Sco_2_j(i,j,bb[i][j].stat);
          Sco_3_j(i,j,bb[i][j].stat);
          Sco_4_j(i,j,bb[i][j].stat);
          Sco_5_j(i,j,bb[i][j].stat);
          Sco_6_j(i,j,bb[i][j].stat);
          Sco_7_j(i,j,bb[i][j].stat);*/

	
//关于四个子的--------------------------------我我我我空---		 
		  memset(ww,0,20*sizeof(int));
		  ww[0]=2; ww[1]=2; ww[2]=2; ww[3]=2; ww[4]=0;   ww[8]=0; ww[9]=5;
		                                      ww[14]=Sco_50;      ww[19]=2;
          my_sco_add(i,j);

		  memset(ww,0,20*sizeof(int));
		  ww[0]=1; ww[1]=1; ww[2]=1; ww[3]=1; ww[4]=0;   ww[8]=0;ww[9]=5;
                                              ww[14]=Sco_51;     ww[19]=1;
          my_sco_add(i,j);
//------------------------------我我我空我-------------
		  memset(ww,0,20*sizeof(int));
		  ww[0]=2;  ww[1]=2;  ww[2]=2;  ww[3]=0;       ww[4]=2; ww[8]=0; ww[9]=5;
		                                ww[13]=Sco_50;                   ww[19]=2;
          my_sco_add(i,j);

		  memset(ww,0,20*sizeof(int));
		  ww[0]=1;  ww[1]=1;  ww[2]=1;  ww[3]=0;       ww[4]=1; ww[8]=0; ww[9]=5;
		                                ww[13]=Sco_51;                   ww[19]=1;
          my_sco_add(i,j);
//------------------------------------------我我空我我---------
		  memset(ww,0,20*sizeof(int));
		  ww[0]=2;  ww[1]=2;  ww[2]=0;         ww[3]=2;  ww[4]=2; ww[8]=0; ww[9]=5;
		                      ww[12]=Sco_50/2;                             ww[19]=2;
          my_sco_add(i,j);

          memset(ww,0,20*sizeof(int));
		  ww[0]=1;ww[1]=1;ww[2]=0;ww[3]=1;ww[4]=1;ww[8]=0;ww[9]=5;
		                  ww[14]=Sco_51/2;                  ww[19]=1;
          my_sco_add(i,j);
//end  关于四子----------------------------------
//关于三子--------------------------------------------------
//---------------------------------------------敌我我我空-----------
		  memset(ww,0,20*sizeof(int));
		  ww[0]=2;ww[1]=2;ww[2]=2;ww[3]=0;ww[8]=0;ww[9]=4;
		                          ww[13]=Sco_40;  ww[19]=2;
          my_sco_add(i,j);

		  memset(ww,0,20*sizeof(int));
		  ww[0]=1;ww[1]=1;ww[2]=1;ww[3]=0;ww[8]=0;ww[9]=4;
		                          ww[13]=Sco_41;  ww[19]=1;
          my_sco_add(i,j);
//----------------------------------------------敌我我我空敌------
		  memset(ww,0,20*sizeof(int));
		  ww[0]=1;ww[1]=2;ww[2]=2;ww[3]=2;ww[4]=0;ww[5]=1;ww[8]=0;ww[9]=6;
		                                  ww[14]=-(Sco_40+90);  ww[19]=2;
          my_sco_add(i,j);

		  memset(ww,0,20*sizeof(int));
		  ww[0]=2;ww[1]=1;ww[2]=1;ww[3]=1;ww[4]=0;ww[5]=2;ww[8]=0;ww[9]=6;
		                                  ww[14]=-(Sco_41+90);    ww[19]=1;
          my_sco_add(i,j);
//---------------------------------------敌我我我空空------
		  memset(ww,0,20*sizeof(int));
		  ww[0]=1;ww[1]=2;ww[2]=2;ww[3]=2;ww[4]=0;ww[5]=0;ww[8]=0;ww[9]=6;
		                                  ww[14]=-(Sco_40-Sco_40_0);ww[15]=ww[14];ww[19]=2;
          my_sco_add(i,j);

		  memset(ww,0,20*sizeof(int));
		  ww[0]=2;ww[1]=1;ww[2]=1;ww[3]=1;ww[4]=0;ww[5]=0;ww[8]=0;ww[9]=6;
		                                  ww[14]=-(Sco_41-Sco_41_0);ww[15]=ww[14];ww[19]=1;
          my_sco_add(i,j);
//---------------------------------------敌空我我我空-------------
		  memset(ww,0,20*sizeof(int));
		  ww[0]=1;ww[1]=0;ww[2]=2;ww[3]=2;ww[4]=2;ww[5]=0;ww[8]=0;ww[9]=6;
		          ww[11]=-(Sco_40-Sco_40_0);                   ww[19]=2;
          my_sco_add(i,j);

		  memset(ww,0,20*sizeof(int));
		  ww[0]=2;ww[1]=0;ww[2]=1;ww[3]=1;ww[4]=1;ww[5]=0;ww[8]=0;ww[9]=6;
		          ww[11]=-(Sco_41-Sco_41_0);                   ww[19]=1;
          my_sco_add(i,j);
//---------------------------------------空我我空我空-------------
		  memset(ww,0,20*sizeof(int));
		  ww[0]=0; ww[1]=2; ww[2]=2; ww[3]=0; ww[4]=2; ww[5]=0;ww[8]=0;  ww[9]=6;
		  ww[10]=Sco_40_0;           ww[13]=Sco_40;    ww[15]=Sco_40_0;  ww[19]=2;
          my_sco_add(i,j);

		  memset(ww,0,20*sizeof(int));
		  ww[0]=0; ww[1]=1; ww[2]=1; ww[3]=0; ww[4]=1; ww[5]=0; ww[8]=0; ww[9]=6;
		  ww[10]=Sco_41_0;           ww[13]=Sco_41;    ww[15]=Sco_41_0;  ww[19]=1;
          my_sco_add(i,j);

 //---------------------------------------敌我我空我敌-------------
		  memset(ww,0,20*sizeof(int));
		  ww[0]=1; ww[1]=2; ww[2]=2; ww[3]=0; ww[4]=2; ww[5]=1; ww[8]=0;  ww[9]=6;
		                             ww[13]=-50;                          ww[19]=2;
          my_sco_add(i,j);

		  memset(ww,0,20*sizeof(int));
		  ww[0]=2; ww[1]=1; ww[2]=1; ww[3]=0; ww[4]=1; ww[5]=2; ww[8]=0; ww[9]=6;
		                             ww[13]=-50;                         ww[19]=1;
          my_sco_add(i,j);
 //---------------------------------------敌我我空我空-------------
		  memset(ww,0,20*sizeof(int));
		  ww[0]=1; ww[1]=2; ww[2]=2; ww[3]=0; ww[4]=2; ww[5]=0; ww[8]=0;  ww[9]=6;
		                             ww[13]=Sco_40_0;  ww[15]=Sco_40_0;   ww[19]=2;
          my_sco_add(i,j);

		  memset(ww,0,20*sizeof(int));
		  ww[0]=2; ww[1]=1; ww[2]=1; ww[3]=0; ww[4]=1; ww[5]=0; ww[8]=0; ww[9]=6;
		                             ww[13]=Sco_41_0;  ww[15]=Sco_41_0;      ww[19]=1;
          my_sco_add(i,j);
 //---------------------------------------敌我空我我空-------------
		  memset(ww,0,20*sizeof(int));
		  ww[0]=1; ww[1]=2; ww[2]=0; ww[3]=2; ww[4]=2; ww[5]=0; ww[8]=0;  ww[9]=6;
		                    ww[12]=Sco_40_0;           ww[15]=Sco_40_0;   ww[19]=2;
          my_sco_add(i,j);

		  memset(ww,0,20*sizeof(int));
		  ww[0]=2; ww[1]=1; ww[2]=0; ww[3]=1; ww[4]=1; ww[5]=0; ww[8]=0; ww[9]=6;
		                    ww[12]=Sco_41_0;           ww[15]=Sco_41_0;  ww[19]=1;
          my_sco_add(i,j);
//----------------ene 关于三子------------------------
//
		 }
	   }
   }

	return (0);
}

int Computer_work()
{int i,j,m=0,n=0,max=0,m1=0,n1=0,max1=0;
 for(i=0;i<15;i++)
    {for(j=0;j<15;j++)
	  {if(max<c_bb[i][j].sco)
          {max=c_bb[i][j].sco;
           m=i;
		   n=j;
		  }
	   else if(max==c_bb[i][j].sco)
	       {if(p_bb[i][j].sco>max)
               {max=c_bb[i][j].sco;
                m=i;
				n=j;
			   }
		   }
        if(max1<p_bb[i][j].sco)
          {max1=p_bb[i][j].sco;
           m1=i;
		   n1=j;
		  }
		else if(max1==p_bb[i][j].sco)
		   {if(c_bb[i][j].sco>max1)
		      {max1=p_bb[i][j].sco;
		       m1=i;
			   n1=j;
			  }
		   }
	  }
    
	}
if(max1>max && max1>=50)
    {max=max1;
	 m=m1;
	 n=n1;
	}
 if(max>0)
    { if(bb[m][n].stat==0)
         {bb[m][n].stat=2;
	      Pain_white(m,n);
          return (1);
		 }
	}
if(max<=0 )
	{if(max1<=0)
        {bb[7][7].stat=2;
         Pain_white(7,7);
	     return (1);
		}
	else 
	   {bb[m1][n1].stat=2;
        Pain_white(m1,n1);
		return (1);
	   }
	}
// MessageBox(my_hwnd,"我没有走","sldfkjsldf",MB_OK | MB_ICONQUESTION);
   return (0);
}



////////////////////////////////////////////////////////////
void Update_all()
{
	int i = 0, j = 0;
	ShowBMP(qipanBmp, 0, 0, 0);
	for(i=0;i<15;i++)
	{
		for(j=0;j<15;j++)
		{ 
			if( bb[i][j].stat==1)
			{ 
				//BitBlt(hDC,xx[j],xx[i],21,21,hMemDC,0,0,SRCAND);
				Pain_back(i,j);		
			}
			else if( bb[i][j].stat==2)
			{ 
				//BitBlt(hDC,xx[j],xx[i],21,21,hMemDC,0,0,SRCAND);
				Pain_white(i,j);
			}			       
		}
	}
}
int Game_Init()
{
	int i, j;	
	for(i=0;i<15;i++)
	{
		for(j=0;j<15;j++)
		{
			bb[i][j].stat=0;
		}
		xx[i]=8+i*24;
	}
	Update_all();   
	return(1);	   
} // end Game_Init

/////////////////////////////////////////////////////////////


///////////////////////////////////////////////////////////

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -