📄 box1.cpp
字号:
SetFocus(hwnd);
init_flag = 0;
break;
case IDC_NEXT:
pass_flag=0;
nRoom ++;
if(nRoom >= ROOMMAX)
nRoom = ROOMMAX;
hdc=GetDC(hwnd);
bGO=TRUE;
PatBlt(hdc,0,MENUTOP,480,200,WHITENESS);
GraphInit(hdc);
CarrInit(hdc);
ReleaseDC(hwnd,hdc);
SetFocus(hwnd);
init_flag = 0;
break;
case IDM_EXIT:
SendMessage(hwnd, WM_CLOSE, 0, 0);
break;
default:
return DefWindowProc(hwnd, msg, wp, lp);
}
break;
case WM_CLOSE:
DestroyWindow(hwnd);
for(i=0;i<6;i++)
{
DeleteObject(element[i]);
}
DeleteObject(hTDesktop);
return(DefWindowProc(hwnd, msg, wp, lp));
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, msg, wp, lp);
}
return 0;
} /* WndProc()
*/
void GraphInit(HDC hdc)
{
int i, j;
int num=0,num1=0;
int column_i = 0 , row_j = 0,begin=0 ;
HDC hMemDC;
BITMAP bm;
column_i = 10;
row_j = 25 ;
hMemDC=CreateCompatibleDC(hdc);
if(pass_flag==0)
{
for(i = 0; i < column_i; i ++)
{
for(j = 0 ; j < row_j; j ++)
{
if(nRoom == 1)
Temp_buf[i][j] = Graph_buf1[i][j];
if(nRoom == 2)
Temp_buf[i][j] = Graph_buf2[i][j];
if(nRoom == 3)
Temp_buf[i][j] = Graph_buf3[i][j];
if(nRoom == 4)
Temp_buf[i][j] = Graph_buf4[i][j];
if(nRoom == 5)
Temp_buf[i][j] = Graph_buf5[i][j];
if(nRoom == 6)
Temp_buf[i][j] = Graph_buf6[i][j];
if(nRoom == 7)
Temp_buf[i][j] = Graph_buf7[i][j];
if(nRoom == 8)
Temp_buf[i][j] = Graph_buf8[i][j];
if(nRoom == 9)
Temp_buf[i][j] = Graph_buf9[i][j];
if(nRoom == 10)
Temp_buf[i][j] = Graph_buf10[i][j];
if(nRoom == 11)
Temp_buf[i][j] = Graph_buf11[i][j];
if(nRoom == 12)
Temp_buf[i][j] = Graph_buf12[i][j];
if(nRoom == 13)
Temp_buf[i][j] = Graph_buf13[i][j];
if(nRoom == 14)
Temp_buf[i][j] = Graph_buf14[i][j];
if(nRoom == 15)
Temp_buf[i][j] = Graph_buf15[i][j];
if(nRoom == 16)
Temp_buf[i][j] = Graph_buf16[i][j];
if(nRoom == 17)
Temp_buf[i][j] = Graph_buf17[i][j];
/* if(nRoom == 18)
Temp_buf[i][j] = Graph_buf18[i][j];*/
}
}
for(i=0;i<40;i++)
Temp_Term[i]=0;
for(i=0;i<20;i++)
Temp_Term1[i]=0;
}
for(i = 0; i < column_i; i ++)
{
for(j = 0; j < row_j; j ++)
{
switch(Temp_buf[i][j])
{
case SPACE:
hStep=element[SPACE];
break;
case BUG:
hStep=element[BUG];
box_col = i;
box_row = j;
break;
case BOX:
hStep=element[BOX];
break;
case WALL:
hStep=element[WALL];
break;
case TERM:
hStep=element[TERM];
Temp_Term[num]=i;
Temp_Term[num+1]=j;
num+=2;
break;
case TERM1:
hStep=element[TERM1];
Temp_Term1[num1]=i;
Temp_Term1[num1+1]=j;
num1+=2;
break;
}
SelectObject(hMemDC,hStep);
GetObject(hStep,sizeof(BITMAP),(LPSTR)&bm);
StretchBlt(hdc,CARR_WI*j,MENUTOP+CARR_WI*i,bm.bmWidth,bm.bmHeight,
hMemDC,0,0,bm.bmWidth,bm.bmHeight,SRCCOPY);
if(pass_flag==1)
{
hStep=element[BUG];
SelectObject(hMemDC,hStep);
BitBlt(hdc,carrier.x*CARR_WI,carrier.y*CARR_WI+MENUTOP,CARR_WI,CARR_WI,
hMemDC,0,0,SRCCOPY);
carrier.undo_flag = 0;
}
}
}
DeleteDC(hMemDC);
}
void CarrInit(HDC hdc)
{
RECT rect;
TCHAR levelstr[12];
rect.left = 380;
rect.right = 480;
rect.top = 38;
rect.bottom = 80;
if(pass_flag == 0)
{
carrier.x = box_row;
carrier.y = box_col;
carrier.last_x=carrier.x;
carrier.last_y=carrier.y;
carrier.direction=Dn;
carrier.action_num_D=1;
carrier.action_num_U=1;
carrier.action_num_L=1;
carrier.action_num_R=1;
// _itow(nRoom,(unsigned short*)Level_buf, 10);
wsprintf(levelstr,TEXT("LEVEL %d"),nRoom);
DrawText(hdc,levelstr,-1,&rect,DT_BOTTOM|DT_SINGLELINE);
}
}
void GraphUpdate(HDC hdc)
{
int i, j;
int num=0,num1=0;
int column_i = 0 , row_j = 0,begin=0 ;
RECT rect;
TCHAR levelstr[12];
HDC hMemDC;
BITMAP bm;
rect.left = 380;
rect.right = 480;
rect.top = 38;
rect.bottom = 80;
column_i = 10;
row_j = 25 ;
hMemDC=CreateCompatibleDC(hdc);
for(i = 0; i < column_i; i ++)
{
for(j = 0; j < row_j; j ++)
{
switch(Temp_buf[i][j])
{
case SPACE:
hStep=element[SPACE];
break;
case BUG:
hStep=element[BUG];
box_col = i;
box_row = j;
break;
case BOX:
hStep=element[BOX];
break;
case WALL:
hStep=element[WALL];
break;
case TERM:
hStep=element[TERM];
Temp_Term[num]=i;
Temp_Term[num+1]=j;
num+=2;
break;
case TERM1:
hStep=element[TERM1];
Temp_Term1[num1]=i;
Temp_Term1[num1+1]=j;
num1+=2;
break;
}
SelectObject(hMemDC,hStep);
GetObject(hStep,sizeof(BITMAP),(LPSTR)&bm);
StretchBlt(hdc,CARR_WI*j,MENUTOP+CARR_WI*i,bm.bmWidth,bm.bmHeight,
hMemDC,0,0,bm.bmWidth,bm.bmHeight,SRCCOPY);
if(carrier.direction == Up)
hStep=element[BUG];
if(carrier.direction == Dn)
hStep=element[BUGDN];
if(carrier.direction == Lt)
hStep=element[BUGLF];
if(carrier.direction == Rt)
hStep=element[BUGRH];
SelectObject(hMemDC,hStep);
BitBlt(hdc,carrier.x*CARR_WI,carrier.y*CARR_WI+MENUTOP,CARR_WI,CARR_WI,
hMemDC,0,0,SRCCOPY);
carrier.undo_flag = 0;
}
}
wsprintf(levelstr,TEXT("LEVEL %d"),nRoom);
DrawText(hdc,levelstr,-1,&rect,DT_BOTTOM|DT_SINGLELINE);
DeleteDC(hMemDC);
}
LRESULT CALLBACK SelectRoom(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message)
{
case WM_INITDIALOG:
SetDlgItemInt(hwnd,IDC_ROOM,1,FALSE);
return (FALSE);
case WM_COMMAND:
switch (LOWORD(wParam))
{
case IDOK:
{
int room=0;
room=GetDlgItemInt(hwnd,IDC_ROOM,NULL,FALSE);
nRoom=room;
EndDialog(hwnd, 0);
init_flag = 0;
}
return (TRUE);
case IDCANCEL:
EndDialog(hwnd, 0);
init_flag = 1;
// SendMessage(hwndMain,WM_CLOSE,0,0);//Exit the game.
return (TRUE);
default:break;
}
break;
case WM_CLOSE:
EndDialog(hwnd,TRUE);
return TRUE;
case WM_SYSCOMMAND:
switch (wParam)
{
case SC_CLOSE:
EndDialog(hwnd, 0);
return (TRUE);
}
break;
}
return (FALSE);
} // SelectRoom().
LRESULT CALLBACK AboutCleaner(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message)
{
case WM_COMMAND:
switch (LOWORD(wParam))
{
case IDOK:
EndDialog(hwnd, TRUE);
return TRUE;
}
break;
case WM_CLOSE:
EndDialog(hwnd,TRUE);
return TRUE;
}
return (FALSE);
} // AboutCleaner().
LRESULT CALLBACK HowPlay(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message)
{
case WM_COMMAND:
switch (LOWORD(wParam))
{
case IDOK:
EndDialog(hwnd, TRUE);
return TRUE;
}
break;
case WM_CLOSE:
EndDialog(hwnd,TRUE);
return TRUE;
}
return (FALSE);
}//HowPlay();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -