连连看API版本的源代码[8]

[入库:2006年2月23日] [更新:2007年3月24日]

本文简介:

  //绘制牌面
  for(i=1; i<=M-2; i++ )
   for(j=1; j<=N-2; j++ )
   {
    num=linker.get_element(i,j);
    if( num!=0 )
    {
    x=i*(cxBack-3);
    y=j*(cyBack-4)-30;
    SelectObject (hdcMem, hBitmap1) ;
    BitBlt (hdc, x, y, cxBack, cyBack, hdcMem, 0, cyBack*(num%6+1), SRCCOPY) ;
    SelectObject (hdcMem, hBitmap2) ;
    BitBlt (hdc, x+1, y+6, cxPre, cyPre, hdcMem,  cxPre, cyPre*num, SRCAND) ;
    BitBlt (hdc, x+1, y+6, cxPre, cyPre, hdcMem,  0, cyPre*num, SRCPAINT) ;
   
    }
   }
  
  //当选中第一张牌时,在上面画个圈
  if(rect.left!=0 && rect.right!=0 && rect.top!=0 && rect.bottom!=0 && bPrompt==false)
  {
   SelectObject (hdc, GetStockObject (GRAY_BRUSH)) ;
   Ellipse(hdc,rect.left ,rect.top ,rect.left+10 ,rect.top+10 );
   rect.left=0;
   rect.right=0 ;
   rect.top=0;
   rect.bottom=0;

  }
  if( first_started==false)
  {
   sprintf(szBuffer,"剩余时间: %d 秒",iTime);
   TextOut (hdc, 0, 0, szBuffer, strlen (szBuffer)) ;
   TextOut (hdc, xsize/5, 0, TEXT("每消去一对剩余时间+2秒"), strlen (TEXT("每消去一对剩余时间+3秒"))) ;
   sprintf(szBuffer,"剩余洗牌次数: %d 次",iShuffle);
   TextOut (hdc, xsize/2+10, 0, szBuffer, strlen (szBuffer)) ;
   sprintf(szBuffer,"剩余提示次数: %d 次",iPrompt);
   TextOut (hdc, xsize/4*3, 0, szBuffer, strlen (szBuffer)) ;
  }

  if(first_started)
  {//第一次打开程序

   /*SendMessage(hwnd,WM_COMMAND,IDM_APP_ABOUT,0);
   //发送 单击关于菜单 消息
   SendMessage(hwnd,WM_COMMAND,IDM_APP_START,0);
   //发送 单击开始游戏菜单 消息,询问是否开始;*/
   hBitmap3 = LoadBitmap (hInstance, TEXT ("IDB_BITMAP_START"));
   GetObject (hBitmap3, sizeof (BITMAP), &bitmap) ;
   cxStart = bitmap.bmWidth;
   cyStart = bitmap.bmHeight;

   SelectObject (hdcMem, hBitmap3) ;
   StretchBlt  (hdc, 0, 0, xsize, ysize, hdcMem, 0,0, cxStart, cyStart,MERGECOPY) ;
   PlaySound (TEXT ("start.wav"), NULL, SND_FILENAME | SND_ASYNC) ;
   //first_started=false;
  }
 
  if(bPrompt)
  {
   SelectObject (hdc, GetStockObject (BLACK_BRUSH)) ;
   Ellipse(hdc,rect.left ,rect.top ,rect.left+10 ,rect.top+10 );
   Ellipse(hdc,rect2.left ,rect2.top ,rect2.left+10 ,rect2.top+10 );
   rect.left=0;
   rect.right=0 ;
   rect.top=0;
   rect.bottom=0;
   rect2.left=0;
   rect2.right=0 ;
   rect2.top=0;
   rect2.bottom=0;

   bPrompt=false;
  }

  DeleteDC (hdcMem) ;
  EndPaint (hwnd, &ps) ;

  return 0 ;
 case WM_INITMENUPOPUP:

  if( first_started==false )
  {
   EnableMenuItem ((HMENU) wParam, IDM_APP_RESHUFFLE,   MF_ENABLED) ;
   EnableMenuItem ((HMENU) wParam, IDM_APP_PROMPT,   MF_ENABLED) ;
  }

  if(iShuffle==0)
   EnableMenuItem ((HMENU) wParam, IDM_APP_RESHUFFLE,  MF_GRAYED) ;
  if(iPrompt==0)
   EnableMenuItem ((HMENU) wParam, IDM_APP_PROMPT,  MF_GRAYED) ;

  
  break;

 case WM_COMMAND :
  switch (LOWORD (wParam))
  {

  case IDM_APP_START://单击开始游戏菜单
   if ( IDYES == MessageBox (hwnd, TEXT ("开始游戏吗?"),
    szAppName, MB_YESNO | MB_ICONQUESTION) )
   //弹出确认窗口,按YES开始游戏
   {
    if ( iCurrentLevel==IDM_APP_LOW )
    {//难度为低
     iTime=90;
     iPrompt=3;
     iShuffle=2;
     linker=Linker_Matrix(6);
    
    }

本文关键:连连看API版本的源代码
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top