📄 mainfrm.cpp
字号:
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 + -