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

📄 mainfrm.cpp

📁 此程序是一个扫雷的小游戏
💻 CPP
📖 第 1 页 / 共 3 页
字号:
		if(EmptyMineHead!=NULL){
			for(temp=EmptyMineHead;temp!=NULL;temp=temp->next)
			{
				if(temp->ID==TempID){
					EmptyMineFlag=1;
					break;
				}
			}
		}
		if(EmptyMineFlag==0)
		{
			if(GetSelectedButtonMineFlag(TempID)==0){
				temp=new node;
				temp->ID=TempID;
				temp->next=EmptyMineHead;
				EmptyMineHead=temp;
				LButtonSelect2(hwndChild[ID/16+1][ID%16-1]);
			}
	    	SetWindowLong(hwndChild[ID/16+1][ID%16-1],0,7);
			InvalidateRect(hwndChild[ID/16+1][ID%16-1],NULL,TRUE);
		}
	}
	EmptyMineFlag=0;
	if(ID/16+1<=26){
		TempID=GetWindowLong(hwndChild[ID/16+1][ID%16],GWL_ID);
		if(EmptyMineHead!=NULL){
			for(temp=EmptyMineHead;temp!=NULL;temp=temp->next)
			{
				if(temp->ID==TempID){
					EmptyMineFlag=1;
					break;
				}
			}
		}
		if(EmptyMineFlag==0)
		{
			if(GetSelectedButtonMineFlag(TempID)==0){
				temp=new node;
				temp->ID=TempID;
				temp->next=EmptyMineHead;
				EmptyMineHead=temp;
				LButtonSelect2(hwndChild[ID/16+1][ID%16]);
			}
			SetWindowLong(hwndChild[ID/16+1][ID%16],0,7);
			InvalidateRect(hwndChild[ID/16+1][ID%16],NULL,TRUE);
		}
	}
	EmptyMineFlag=0;
	if(ID/16+1<=26&&ID%16+1<=15){
		TempID=GetWindowLong(hwndChild[ID/16+1][ID%16+1],GWL_ID);
		if(EmptyMineHead!=NULL){
			for(temp=EmptyMineHead;temp!=NULL;temp=temp->next)
			{
				if(temp->ID==TempID){
					EmptyMineFlag=1;
					break;
				}
			}
		}
		if(EmptyMineFlag==0)
		{
			if(GetSelectedButtonMineFlag(TempID)==0){
				temp=new node;
				temp->ID=TempID;
				temp->next=EmptyMineHead;
				EmptyMineHead=temp;
				LButtonSelect2(hwndChild[ID/16+1][ID%16+1]);
			}
			SetWindowLong(hwndChild[ID/16+1][ID%16+1],0,7);
			InvalidateRect(hwndChild[ID/16+1][ID%16+1],NULL,TRUE);
		}
	}
	EmptyMineFlag=0;
	if(ID%16+1<=15){
		TempID=GetWindowLong(hwndChild[ID/16][ID%16+1],GWL_ID);
		if(EmptyMineHead!=NULL){
			for(temp=EmptyMineHead;temp!=NULL;temp=temp->next)
			{
				if(temp->ID==TempID){
					EmptyMineFlag=1;
					break;
				}
			}
		}
		if(EmptyMineFlag==0)
		{
			if(GetSelectedButtonMineFlag(TempID)==0){
				temp=new node;
				temp->ID=TempID;
				temp->next=EmptyMineHead;
				EmptyMineHead=temp;
				LButtonSelect2(hwndChild[ID/16][ID%16+1]);
			}
			SetWindowLong(hwndChild[ID/16][ID%16+1],0,7);
			InvalidateRect(hwndChild[ID/16][ID%16+1],NULL,TRUE);
		}
	}
	EmptyMineFlag=0;
	if(ID/16-1>=0&&ID%16+1<=15){
		TempID=GetWindowLong(hwndChild[ID/16-1][ID%16+1],GWL_ID);
		if(EmptyMineHead!=NULL){
			for(temp=EmptyMineHead;temp!=NULL;temp=temp->next)
			{
				if(temp->ID==TempID){
					EmptyMineFlag=1;
					break;
				}
			}
		}
		if(EmptyMineFlag==0)
		{
			if(GetSelectedButtonMineFlag(TempID)==0){
				temp=new node;
				temp->ID=TempID;
				temp->next=EmptyMineHead;
				EmptyMineHead=temp;
				LButtonSelect2(hwndChild[ID/16-1][ID%16+1]);
			}
			SetWindowLong(hwndChild[ID/16-1][ID%16+1],0,7);
			InvalidateRect(hwndChild[ID/16-1][ID%16+1],NULL,TRUE);
		}
	}
	EmptyMineFlag=0;
	if(ID/16-1>=0){
		TempID=GetWindowLong(hwndChild[ID/16-1][ID%16],GWL_ID);
		if(EmptyMineHead!=NULL){
			for(temp=EmptyMineHead;temp!=NULL;temp=temp->next)
			{
				if(temp->ID==TempID){
					EmptyMineFlag=1;
					break;
				}
			}
		}
		if(EmptyMineFlag==0)
		{
			if(GetSelectedButtonMineFlag(TempID)==0){
				temp=new node;
				temp->ID=TempID;
				temp->next=EmptyMineHead;
				EmptyMineHead=temp;
				LButtonSelect2(hwndChild[ID/16-1][ID%16]);
			}
			SetWindowLong(hwndChild[ID/16-1][ID%16],0,7);
			InvalidateRect(hwndChild[ID/16-1][ID%16],NULL,TRUE);
		}
	}
}

void DoubleClickButtonDown(HWND hwnd)
{
	int MineNumber=GetSelectedButtonMineFlag(GetWindowLong(hwnd,GWL_ID));
	int cbExtra=GetWindowLong(hwnd,0);
	int ID=GetWindowLong(hwnd,GWL_ID);
	int temp[8];
	int ButtonAroundMineNumber[8];
	HWND hwndChildButton[8];
	if(cbExtra==40&&MineNumber==0)
		return ;

	for(int i=0;i<8;i++){
		temp[i]=0;
		ButtonAroundMineNumber[i]=0;
	}
	
	if(ID/16-1>=0&&ID%16-1>=0){	
        hwndChildButton[0]=hwndChild[ID/16-1][ID%16-1];
		temp[0]=GetWindowLong(hwndChild[ID/16-1][ID%16-1],0);
		ButtonAroundMineNumber[0]=GetSelectedButtonMineFlag(GetWindowLong(hwndChild[ID/16-1][ID%16-1],GWL_ID));
	}
	if(ID%16-1>=0){
		hwndChildButton[1]=hwndChild[ID/16][ID%16-1];
		temp[1]=GetWindowLong(hwndChild[ID/16][ID%16-1],0);
		ButtonAroundMineNumber[1]=GetSelectedButtonMineFlag(GetWindowLong(hwndChild[ID/16][ID%16-1],GWL_ID));
	}
	if(ID/16+1<=26&&ID%16-1>=0){
		hwndChildButton[2]=hwndChild[ID/16+1][ID%16-1];
		temp[2]=GetWindowLong(hwndChild[ID/16+1][ID%16-1],0);
		ButtonAroundMineNumber[2]=GetSelectedButtonMineFlag(GetWindowLong(hwndChild[ID/16+1][ID%16-1],GWL_ID));
	}
	if(ID/16+1<=26){
		hwndChildButton[3]=hwndChild[ID/16+1][ID%16];
		temp[3]=GetWindowLong(hwndChild[ID/16+1][ID%16],0);
		ButtonAroundMineNumber[3]=GetSelectedButtonMineFlag(GetWindowLong(hwndChild[ID/16+1][ID%16],GWL_ID));
	}
	if(ID/16+1<=26&&ID%16+1<=15){
		hwndChildButton[4]=hwndChild[ID/16+1][ID%16+1];
		temp[4]=GetWindowLong(hwndChild[ID/16+1][ID%16+1],0);
		ButtonAroundMineNumber[4]=GetSelectedButtonMineFlag(GetWindowLong(hwndChild[ID/16+1][ID%16+1],GWL_ID));
 	}
	if(ID%16+1<=15){
		hwndChildButton[5]=hwndChild[ID/16][ID%16+1];
		temp[5]=GetWindowLong(hwndChild[ID/16][ID%16+1],0);
		ButtonAroundMineNumber[5]=GetSelectedButtonMineFlag(GetWindowLong(hwndChild[ID/16][ID%16+1],GWL_ID));
  	}
	if(ID/16-1>=0&&ID%16+1<=15){
		hwndChildButton[6]=hwndChild[ID/16-1][ID%16+1];
		temp[6]=GetWindowLong(hwndChild[ID/16-1][ID%16+1],0);
		ButtonAroundMineNumber[6]=GetSelectedButtonMineFlag(GetWindowLong(hwndChild[ID/16-1][ID%16+1],GWL_ID));
	}
	if(ID/16-1>=0){
		hwndChildButton[7]=hwndChild[ID/16-1][ID%16];
		temp[7]=GetWindowLong(hwndChild[ID/16-1][ID%16],0);
		ButtonAroundMineNumber[7]=GetSelectedButtonMineFlag(GetWindowLong(hwndChild[ID/16-1][ID%16],GWL_ID));
 	}

//	if(cbExtra==40&&temp[0]==temp[1]&&temp[0]==temp[2]&&temp[0]==temp[3]&&
//		temp[0]==temp[4]&&temp[0]==temp[5]&&temp[0]==temp[6]&&temp[0]==temp[7]&&temp[0]==40)
//	return ;

	for(i=0;i<8;i++){
		if(temp[i]==0){
			SetWindowLong(hwndChildButton[i],0,1);
			InvalidateRect(hwndChildButton[i],NULL,TRUE);
			UpdateWindow(hwndChildButton[i]);
			}
	}
	if(GetWindowLong(hwnd,0)==0){
		SetWindowLong(hwnd,0,1);
		InvalidateRect(hwnd,NULL,TRUE);
		UpdateWindow(hwnd);
	}
	return ;
}

void DoubleClickButtonUp(HWND hwnd)
{
	int MineNumber=GetSelectedButtonMineFlag(GetWindowLong(hwnd,GWL_ID));
	int cbExtra=GetWindowLong(hwnd,0);
	int ID=GetWindowLong(hwnd,GWL_ID);
	int temp[8];
	int ButtonAroundMineNumber[8];
	int ButtonAroundTurnOnTureMineSum=0;
	int ButtonAroundTurnOnMineSum=0;
	ButtonHwnd* TempHwnd1;
	BITMAP bitmap;
	HDC hdc,hdcMem;
	int flag=0,TureFlagNuberSum=0;


	if(cbExtra==40&&MineNumber==0)
		return ;

	for(int i=0;i<8;i++){
		temp[i]=0;
		ButtonAroundMineNumber[i]=0;
		hwndChildButton[i]=0;
	}
	
	if(ID/16-1>=0&&ID%16-1>=0){	
        hwndChildButton[0]=hwndChild[ID/16-1][ID%16-1];
		temp[0]=GetWindowLong(hwndChildButton[0],0);
		ButtonAroundMineNumber[0]=GetSelectedButtonMineFlag(GetWindowLong(hwndChildButton[0],GWL_ID));
	}
	if(ID%16-1>=0){
		hwndChildButton[1]=hwndChild[ID/16][ID%16-1];
		temp[1]=GetWindowLong(hwndChildButton[1],0);
		ButtonAroundMineNumber[1]=GetSelectedButtonMineFlag(GetWindowLong(hwndChildButton[1],GWL_ID));
	}
	if(ID/16+1<=26&&ID%16-1>=0){
		hwndChildButton[2]=hwndChild[ID/16+1][ID%16-1];
		temp[2]=GetWindowLong(hwndChildButton[2],0);
		ButtonAroundMineNumber[2]=GetSelectedButtonMineFlag(GetWindowLong(hwndChildButton[2],GWL_ID));
	}
	if(ID/16+1<=26){
		hwndChildButton[3]=hwndChild[ID/16+1][ID%16];
		temp[3]=GetWindowLong(hwndChildButton[3],0);
		ButtonAroundMineNumber[3]=GetSelectedButtonMineFlag(GetWindowLong(hwndChildButton[3],GWL_ID));
	}
	if(ID/16+1<=26&&ID%16+1<=15){
		hwndChildButton[4]=hwndChild[ID/16+1][ID%16+1];
		temp[4]=GetWindowLong(hwndChildButton[4],0);
		ButtonAroundMineNumber[4]=GetSelectedButtonMineFlag(GetWindowLong(hwndChildButton[4],GWL_ID));
 	}
	if(ID%16+1<=15){
		hwndChildButton[5]=hwndChild[ID/16][ID%16+1];
		temp[5]=GetWindowLong(hwndChildButton[5],0);
		ButtonAroundMineNumber[5]=GetSelectedButtonMineFlag(GetWindowLong(hwndChildButton[5],GWL_ID));
  	}
	if(ID/16-1>=0&&ID%16+1<=15){
		hwndChildButton[6]=hwndChild[ID/16-1][ID%16+1];
		temp[6]=GetWindowLong(hwndChildButton[6],0);
		ButtonAroundMineNumber[6]=GetSelectedButtonMineFlag(GetWindowLong(hwndChildButton[6],GWL_ID));
	}
	if(ID/16-1>=0){
		hwndChildButton[7]=hwndChild[ID/16-1][ID%16];
		temp[7]=GetWindowLong(hwndChildButton[7],0);
		ButtonAroundMineNumber[7]=GetSelectedButtonMineFlag(GetWindowLong(hwndChildButton[7],GWL_ID));
 	}

//	if(cbExtra==40&&temp[0]==temp[1]&&temp[0]==temp[2]&&temp[0]==temp[3]&&
//		temp[0]==temp[4]&&temp[0]==temp[5]&&temp[0]==temp[6]&&temp[0]==temp[7]&&temp[0]==40)
//	return ;	

	for(i=0;i<8;i++){
		if((temp[i]==2||temp[i]==40||temp[i]==41)&&ButtonAroundMineNumber[i]==8)
			ButtonAroundTurnOnTureMineSum++;
		if(temp[i]==2||temp[i]==41)	ButtonAroundTurnOnMineSum++;
		if(temp[i]==40&&ButtonHwndHead!=NULL){
			for(TempHwnd1=ButtonHwndHead;TempHwnd1!=NULL;TempHwnd1=TempHwnd1->next){
				if(hwndChildButton[i]==TempHwnd1->hwnd){
					ButtonAroundTurnOnMineSum++;
					break;
				}
			}
		}
		
	}

	for(i=0;i<8;i++){
		if(cbExtra==40&&MineNumber!=8&&MineNumber==ButtonAroundTurnOnTureMineSum
			&&MineNumber==ButtonAroundTurnOnMineSum){
			for(int j=0;j<8;j++){
				if(hwndChildButton[j]!=0){
					SetWindowLong(hwndChildButton[j],0,7);
					InvalidateRect(hwndChildButton[j],NULL,TRUE);
					if(ButtonAroundMineNumber[j]==0){
						LButtonSelect2(hwndChildButton[j]);
					}
				}
			}
		}
		else if(cbExtra==40&&MineNumber!=8&&MineNumber==ButtonAroundTurnOnMineSum){

				for(int i=0;i<27;i++)
					for(int j=0;j<16;j++){
						DigFinishMineSum=0;
						SetWindowLong(hwndChildTime,0,DigFinishMineSum);
						InvalidateRect(hwndChildTime,NULL,TRUE);
						if(ButtonHwndHead!=NULL){
							for(TempHwnd1=ButtonHwndHead;TempHwnd1!=NULL;TempHwnd1=TempHwnd1->next){
								if(hwndChild[i][j]==TempHwnd1->hwnd){
									for(int k=0;k<8;k++){
										if(hwndChild[i][j]==hwndChildButton[k]){
											hdc=GetDC(hwndChild[i][j]);
											GetObject(hBitmap10,sizeof(BITMAP),&bitmap);
											hdcMem=CreateCompatibleDC(hdc);
											SelectObject(hdcMem,hBitmap10);
											BitBlt(hdc,0,0,bitmap.bmWidth,bitmap.bmHeight,hdcMem,0,0,SRCCOPY);
											DeleteDC(hdcMem);
											flag=1;
											break;
										}
									}
									if(flag!=1){
											hdc=GetDC(hwndChild[i][j]);
											GetObject(hBitmap2,sizeof(BITMAP),&bitmap);
											hdcMem=CreateCompatibleDC(hdc);
											SelectObject(hdcMem,hBitmap2);
											BitBlt(hdc,0,0,bitmap.bmWidth,bitmap.bmHeight,hdcMem,0,0,SRCCOPY);
											DeleteDC(hdcMem);
											flag=1; 
											break;
									}

								}
							}
						}
						if(flag==1) { flag=0;SetWindowLong(hwndChild[i][j],0,40); continue;}
						else if(GetSelectedButtonMineFlag(GetWindowLong(hwndChild[i][j],GWL_ID))==8){
							SetWindowLong(hwndChild[i][j],0,3);
						}
						else
							SetWindowLong(hwndChild[i][j],0,7);
						InvalidateRect(hwndChild[i][j],NULL,TRUE);
						SetWindowLong(hwndChild[i][j],0,40);
					}
			}
		else if(temp[i]==1){
			SetWindowLong(hwndChildButton[i],0,0);
			InvalidateRect(hwndChildButton[i],NULL,TRUE);
			UpdateWindow(hwndChildButton[i]);
		}
	}
	if(GetWindowLong(hwnd,0)==1){
		SetWindowLong(hwnd,0,0);
		InvalidateRect(hwnd,NULL,TRUE);
		UpdateWindow(hwnd);
	}
	return ;
}

void SetMine()
{
	int i,j;
	int TempChangeNumber;
    CString RandomNumberChange; 
	int MineNumber=0;


	for(i=0;i<27;i++)
		for(j=0;j<16;j++)
			RandomNumber[i][j]=0;

	do{	
		srand( (unsigned)time( NULL ) );
		for(i=0;i<27;i++)
		{
			for(j=0;j<16;j++)
			{
   				   TempChangeNumber=rand();
				   RandomNumberChange.Format(TEXT("%d"),TempChangeNumber);
				   TempChangeNumber=RandomNumberChange.GetAt(RandomNumberChange.GetLength()-1)-'0';
				   TempChangeNumber=TempChangeNumber>6?TempChangeNumber%6:TempChangeNumber;
				   if(TempChangeNumber==4&&RandomNumber[i][j]!=8){
					   RandomNumber[i][j]=8;
					   MineNumber++;
					   if(MineNumber==100) {i=28;break;}
				   }
			}
		}
	}while(MineNumber<100);
	SetButtonMine();
}

⌨️ 快捷键说明

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