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

📄 chuangniu.cpp

📁 VC++写的穿纽扣的小游戏,直接编译可运行
💻 CPP
📖 第 1 页 / 共 2 页
字号:
}
void ClearQipan(void)
{
	int i,j;
	for(i=0;i<12;i++)
		for(j=0;j<12;j++)
		{
			Map[i][j]=IDT_KONG;
            bakMap[i][j]=Map[i][j];
		}
}
void DrawOneQizi(int x,int y,int nID,HWND hwnd)
{
	Map[x][y]=nID;
	InvalidateRect(hwnd,NULL,FALSE);
}
BOOL DrawLine(int xSource,int ySource,int xTarget,int yTarget,HWND hwnd,int* iflag,HWND hchildwnd2)
{
	int i,temp;
	if(*iflag==0)
	{
	  *iflag=1;
	  DrawOneQizi(xTarget,yTarget,IDT_LNIU,hwnd);
	  QiziLink[0].hang=xTarget;
	  QiziLink[0].lie=yTarget;
	  QiziLink[0].link=10;
	  ChuanQiziNum=1;
	  return TRUE;
	}
	if(xTarget==QiziLink[0].hang&&yTarget==QiziLink[0].lie&&QiziLink[0].link==10&&(xSource!=xTarget||ySource!=yTarget))
	{
      if(QiziLink[2].hang==-1)
	    return FALSE;
	  QiziLink[0].link=-1;
	  temp=Map[xTarget][yTarget];
	  Map[xTarget][yTarget]=IDT_NIU;
	  if(DrawLine(xSource,ySource,xTarget,yTarget,hwnd,iflag,hchildwnd2))
      { 
		for(i=0;i<ChuanQiziNum;i++)
		{
		  Map[QiziLink[i].hang][QiziLink[i].lie]=IDT_KONG;
		  bakMap[QiziLink[i].hang][QiziLink[i].lie]=IDT_KONG;
		  InvalidateRect(hwnd,NULL,FALSE);
		}
		InitQiziLink();
		*iflag=0;
		ShuaXinLink(hchildwnd2);
	  }
	  else
	  {
		Map[xTarget][yTarget]=temp;
	    QiziLink[0].link=10;
	  }
	  return FALSE;
	}
	if(((xSource!=xTarget)&&(ySource!=yTarget))||(Map[xTarget][yTarget]!=IDT_NIU)||((xSource==xTarget)&&(ySource==yTarget)))
	  return FALSE;
	if((xSource==xTarget)&&(ySource!=yTarget))
	{
		if(ySource<yTarget)
		{
		  for(i=ySource+1;i<yTarget;i++)
		  {
			  if((Map[xSource][i]!=IDT_KONG)&&(Map[xSource][i]!=IDT_KONGYC)&&(Map[xSource][i]!=IDT_NIU))
				  return FALSE;
		  }
		  for(i=ySource;i<yTarget;i++)
		  {
			  switch(Map[xSource][i])
			  {
			  case IDT_KONG:
                   Map[xSource][i]=IDT_KONGXC;
                   DeleteNode(xSource,i);
				   break;
			  case IDT_NIU:
				   Map[xSource][i]=IDT_XIANXC;
				   break;
			  case IDT_KONGYC:
				   Map[xSource][i]=IDT_KONGJ;
				   break;
			  case IDT_LNIU:
				   Map[xSource][i]=IDT_XIANXIA;
			       break;
			  case IDT_LXIANSHANG:
				   Map[xSource][i]=IDT_XIANXC;
				   break;
			  case IDT_LXIANYOU:
				   Map[xSource][i]=IDT_XIANXY;
				   break;
			  case IDT_LXIANZUO:
				   Map[xSource][i]=IDT_XIANXZ;
				   break; 
			  }
			  QiziLink[ChuanQiziNum].hang=xSource;
			  QiziLink[ChuanQiziNum].lie=i;
			  ChuanQiziNum++;
		  }
		  Map[xSource][i]=IDT_LXIANSHANG;
		}
		if(ySource>yTarget)
		{
		  for(i=ySource-1;i>yTarget;i--)
		  {
			  if((Map[xSource][i]!=IDT_KONG)&&(Map[xSource][i]!=IDT_KONGYC)&&(Map[xSource][i]!=IDT_NIU))
                  return FALSE;
		  }
	      for(i=ySource;i>yTarget;i--)
		  {
			  switch(Map[xSource][i])
			  {
			  case IDT_KONG:
                   Map[xSource][i]=IDT_KONGXC;
                   DeleteNode(xSource,i);
				   break;
			  case IDT_NIU:
				   Map[xSource][i]=IDT_XIANXC;
				   break;
			  case IDT_KONGYC:
				   Map[xSource][i]=IDT_KONGJ;
				   break;
              case IDT_LNIU:
				   Map[xSource][i]=IDT_XIANSHANG;
				   break;
			  case IDT_LXIANXIA:
				   Map[xSource][i]=IDT_XIANXC;
			       break;
			  case IDT_LXIANYOU:
				   Map[xSource][i]=IDT_XIANSY;
                   break;
			  case IDT_LXIANZUO:
				   Map[xSource][i]=IDT_XIANSZ;
				   break;
			  }
			  QiziLink[ChuanQiziNum].hang=xSource;
			  QiziLink[ChuanQiziNum].lie=i;
			  ChuanQiziNum++;
		  }
		  Map[xSource][i]=IDT_LXIANXIA;
		}
	}
	if((xSource!=xTarget)&&(ySource==yTarget))
	{
		if(xSource<xTarget)
		{
		  for(i=xSource+1;i<xTarget;i++)
		  {
			  if((Map[i][ySource]!=IDT_KONG)&&(Map[i][ySource]!=IDT_KONGXC)&&(Map[i][ySource]!=IDT_NIU))
				  return FALSE;
		  }
		  for(i=xSource;i<xTarget;i++)
		  {
			  switch(Map[i][ySource])
			  {
			  case IDT_KONG:
				   Map[i][ySource]=IDT_KONGYC;
				   DeleteNode(i,ySource);
				   break;
			  case IDT_NIU:
				   Map[i][ySource]=IDT_XIANYC;
				   break;
			  case IDT_KONGXC:
				   Map[i][ySource]=IDT_KONGJ;
				   break;
			  case IDT_LNIU:
				   Map[i][ySource]=IDT_XIANYOU;
				   break;
			  case IDT_LXIANSHANG:
				   Map[i][ySource]=IDT_XIANSY;
				   break;
			  case IDT_LXIANXIA:
				   Map[i][ySource]=IDT_XIANXY;
				   break;
			  case IDT_LXIANZUO:
				   Map[i][ySource]=IDT_XIANYC;
				   break;
			  }
			  QiziLink[ChuanQiziNum].hang=i;
			  QiziLink[ChuanQiziNum].lie=ySource;
			  ChuanQiziNum++;
		  }
		  Map[i][ySource]=IDT_LXIANZUO;
		}
		if(xSource>xTarget)
		{
		  for(i=xSource-1;i>xTarget;i--)
		  {
			  if((Map[i][ySource]!=IDT_KONG)&&(Map[i][ySource]!=IDT_KONGXC)&&(Map[i][ySource]!=IDT_NIU))
				  return FALSE;
		  }
	      for(i=xSource;i>xTarget;i--)
		  {
		      switch(Map[i][ySource])
			  {
			  case IDT_KONG:
				   Map[i][ySource]=IDT_KONGYC;
				   DeleteNode(i,ySource);
				   break;
			  case IDT_NIU:
				   Map[i][ySource]=IDT_XIANYC;
				   break;
			  case IDT_KONGXC:
				   Map[i][ySource]=IDT_KONGJ;
				   break;
			  case IDT_LNIU:
				   Map[i][ySource]=IDT_XIANZUO;
				   break;
			  case IDT_LXIANSHANG:
				   Map[i][ySource]=IDT_XIANSZ;
				   break;
			  case IDT_LXIANXIA:
				   Map[i][ySource]=IDT_XIANXZ;
				   break;
			  case IDT_LXIANYOU:
				   Map[i][ySource]=IDT_XIANYC;
				   break;
			  }
			  QiziLink[ChuanQiziNum].hang=i;
			  QiziLink[ChuanQiziNum].lie=ySource;
			  ChuanQiziNum++;
		  }
		  Map[i][ySource]=IDT_LXIANYOU;
		}
	}
	InvalidateRect(hwnd,NULL,FALSE);
	return TRUE;
}
int DeleteNode(int x,int y)
{
     int j=nodehead.link,num,k=nodehead.link;
	 if(mapbiao[nodehead.link].hang==x&&mapbiao[nodehead.link].lie==y)
	 {
		nodehead.link=mapbiao[j].link;
		nodenum--;
		return 1;
	 }
	 for(j=mapbiao[nodehead.link].link,num=0;num<nodenum;j=mapbiao[j].link,num++)
     {
		   if(mapbiao[j].hang==x&&mapbiao[j].lie==y)
		   {
			  mapbiao[k].link=mapbiao[j].link;
              nodenum--;
			  return 1;
		   }
		   k=j;
	 }
	 return 0;
}
void InitQiziLink(void)
{
	int i;
	for(i=0;i<144;i++)
	{
		QiziLink[i].hang=-1;
		QiziLink[i].lie=-1;
		QiziLink[i].link=-1;
	}
	ChuanQiziNum=0;
}
void ShuaXinLink(HWND hchildwnd2)
{
	int i,k;
	TCHAR szShengyu[30];
	QiziNumber=70;
	nodenum=0;
	for(i=0;i<144;i++)
		if(Map[mapbiao[i].hang][mapbiao[i].lie]==IDT_KONG)
		{
			nodehead.link=i;
            break;
		}
	k=nodehead.link;
	for(i=0;i<144;i++)
	{
		if(Map[mapbiao[i].hang][mapbiao[i].lie]>4)
			QiziNumber--;
		if(Map[mapbiao[i].hang][mapbiao[i].lie]==IDT_KONG)
		{
			mapbiao[k].link=i;
			nodenum++;
			k=i;
		}
	}
	wsprintf(szShengyu,"剩余:         %d",QiziNumber);
    SetWindowText(hchildwnd2,szShengyu);
}

⌨️ 快捷键说明

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