射击的乐趣:WIN32诠释打飞机游戏源码补充

时间:2025-03-17 20:07:01

打飞机游戏源码补充

从指定位置加载bmp并显示到对话框。

射击的乐趣:WIN32诠释打飞机游戏源码补充
, TRUE);
, , LR_LOADFROMFILE);
          {
         BITMAP bmpinfo;
       
     CClientDC pdc(     CDC dc;
     dc.CreateCompatibleDC(&pdc);
     dc.SelectObject(bmp);
 
     CRect rect;
     GetClientRect(&rect);
 
 
     pdc.BitBlt(, ,, ,&dc,  , , SRCCOPY);
 
     DeleteDC(pdc);
     ReleaseDC(&dc);
     }
          {
         AfxMessageBox(_T(     }
 }

双缓冲贴图演示:

射击的乐趣:WIN32诠释打飞机游戏源码补充
     pBMPdc.SelectObject(bkbmp->m_hObject);
 
     pBufferdc.BitBlt(, , bkinfo.bmWidth, bkinfo.bmHeight, &pBMPdc, , , SRCCOPY);
 pBMPdc.SelectObject(bullebmp->m_hObject);
     ; i < iCurbullet; i++)
     {
         pBufferdc.TransparentBlt(bullet[i].pos_x, bullet[i].pos_y, bullet[i].Deswidth, bullet[i].Desheight, &pBMPdc, bullet[i].Sou_x, bullet[i].Sou_y, bullet[i].Deswidth, bullet[i].Desheight, RGB(, , ));
     }
 pdc.BitBlt(, , bkinfo.bmWidth, bkinfo.bmHeight, &pBufferdc, , , SRCCOPY);
     DeleteDC(pdc);
     DeleteObject(ptbmp);
     DeleteDC(pBufferdc);
     DeleteDC(pBMPdc);
 }

定时器设置、取消、处理的演示代码:

射击的乐趣:WIN32诠释打飞机游戏源码补充
;
;
;
         life = ;
         iCurPlane = ;
         iCurbullet = ;
         AddPlane();
         AddDefender();
         SetTimer(, , NULL);
         SetTimer(, , NULL);
                       SetTimer(, , NULL);
         SetTimer(, , NULL);
                            }
 }
射击的乐趣:WIN32诠释打飞机游戏源码补充
:
:
                            }
     , );
 }
射击的乐趣:WIN32诠释打飞机游戏源码补充
; i < iCurPlane; i++)
         {
             KillTimer();
             KillTimer();
             ))
             {
                 AfxMessageBox(_T(                 OnOK();
             }
                          {
                                }
         }
     }
 
 
     ; j < iCurbullet; j++)
     {
         bullet[j].pos_y -= bullespeed;
          )
             DeleteBullet(j--);
     }
     OnShot();
     PastPlane();
 }
射击的乐趣:WIN32诠释打飞机游戏源码补充
);
);
))
             AfxMessageBox(_T(             OnOK();
         }
                  {
                        }
              }
           superdefender.Desheight = defenderinfo.bmHeight;
     superdefender.Deswidth = defenderinfo.bmWidth;
     superdefender.pos_x = (bkinfo.bmWidth - defenderinfo.bmWidth)/;
     superdefender.pos_y = bkinfo.bmHeight-defenderinfo.bmHeight;
     superdefender.Sou_x = ;
     superdefender.Sou_y = ;
     superdefender.status = plstatus[];
 }

碰撞检测以及处理的过程:

射击的乐趣:WIN32诠释打飞机游戏源码补充
; i < iCurPlane; i++)
;
         ;
         ;
         ;
 
           + (superdefender.Deswidth + plane[i].Deswidth)*(superdefender.Deswidth + plane[i].Deswidth)/))
                               {
                           rect.left = plane[i].pos_x;
             rect.right = plane[i].pos_x + plane[i].Deswidth;
             rect.top = plane[i].pos_y;
             rect.bottom = plane[i].pos_y + plane[i].Desheight;
 
             CPoint point1, point2, point3, point4;
             point1.x = superdefender.pos_x;
             point1.y = superdefender.pos_y;
             point2.x = superdefender.pos_x + superdefender.Deswidth;
             point2.y = superdefender.pos_y;
             point3.x = superdefender.pos_x;
             point3.y = superdefender.pos_y + superdefender.Desheight;
             point4.x = superdefender.pos_x + superdefender.Deswidth;
             point4.y = superdefender.pos_y + superdefender.Desheight;
 
                              superdefender.status = DESTROYED;
 
         }
                  {
             life -= ;
             AddDefender();
                      }
     }
 }

修改对话框大小以及自定义对话框的方法:

射击的乐趣:WIN32诠释打飞机游戏源码补充
 CRect rect;
         GetClientRect(rect);
         ClientToScreen(rect);
         MoveWindow(rect.left, rect.top, bkinfo.bmWidth, bkinfo.bmHeight, TRUE);
射击的乐趣:WIN32诠释打飞机游戏源码补充
 ModifyStyle( WS_CAPTION, WS_MINIMIZEBOX, SWP_DRAWFRAME );