亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? unboundmodedemointminerfield.cpp

?? DevExpress ExpressQuantumGrid Suite v5.9 Full Source
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
#include "UnboundModeDemoIntMinerField.h"

void __fastcall TIntMinerField::SetSchemeColors(void)
{
  FOpenCellBkColor = SchemeColors[(int)FColorScheme][0];
  FClosedCellBkColor = SchemeColors[(int)FColorScheme][1];
  FFrameColor = SchemeColors[(int)FColorScheme][2];
  FRectangleColor = SchemeColors[(int)FColorScheme][3];
}
//---------------------------------------------------------------------------

TCellStateRec __fastcall TIntMinerField::GetCellState(int ACol, int ARow)
{
  return (*(PCellStateRec)(int)((TcxGridTableView*)Views[0])->
    ViewInfo->RecordsViewInfo->Items[ARow]->GetCellViewInfoByItem(
    ((TcxGridTableView*)Views[0])->Items[ACol])->Value );
}
//---------------------------------------------------------------------------

void __fastcall TIntMinerField::AddPressedCell(int ACol, int ARow)
{
  FPressedCells.Length++;
  FPressedCells[FPressedCells.Length - 1].x = ACol;
  FPressedCells[FPressedCells.Length - 1].y = ARow;
}
//---------------------------------------------------------------------------

bool __fastcall TIntMinerField::CheckFieldBounds(int AXPos, int AYPos)
{
   bool Result = false;
   if((AXPos >=0) && (AYPos >=0) && (AXPos < FColCount) &&
     (AYPos < FRowCount)) Result = true;
   return (Result);
}
//---------------------------------------------------------------------------

void __fastcall TIntMinerField::InitNewGame(void)
{
  FRedCells.Length = 0;

  FColCount = FGameDifficulty.Width;
  FRowCount = FGameDifficulty.Height;
  BeginUpdate();
  try {

    Width = FColCount * FCellWidth + 2;
    Height = FRowCount * FCellWidth + 2;
    Top = psBorder + biBoardHeight - psOuterFrameWidth;
    Left = psBorder;

    int par = ((TForm*)Owner)->ClientRect.Right - ((TForm*)Owner)->ClientRect.Left;
    par = ((TForm*)Owner)->Width - par - psOuterFrameWidth;
    ((TForm*)Owner)->Width = 2 * psBorder + Width + par;

    par = ((TForm*)Owner)->ClientRect.Bottom - ((TForm*)Owner)->ClientRect.Top;
    par = ((TForm*)Owner)->Height - par;
    ((TForm*)Owner)->Height = par +  2 * (psBorder - psOuterFrameWidth) + biBoardHeight + Height;
    ((TControlAccess*)Owner)->Resize();

    if (!Enabled) Enabled = true;
    TcxGridColumn* GridColumn;
    for(int i = ((TcxGridTableView*)Views[0])->ColumnCount - 1; i == FColCount; i--)
      delete ((TcxGridTableView*)Views[0])->Columns[i];
    for(int i=0; i < FGameDifficulty.Width; i++) {
      if (i >= ((TcxGridTableView*)Views[0])->ColumnCount) {
        GridColumn = ((TcxGridTableView*)Views[0])->CreateColumn();
        GridColumn->MinWidth = FCellWidth;
        GridColumn->Width = FCellWidth;
      }
    }
  }
  __finally {
    EndUpdate();
  }
}
//---------------------------------------------------------------------------

void __fastcall TIntMinerField::UnpressAndInvalidate(void)
{
  TCells CellsToInvalidate;
  CellsToInvalidate.Length = FPressedCells.Length;
  for(int i=0; i < FPressedCells.Length; i++)
    CellsToInvalidate[i] = FPressedCells[i];
  FPressedCells.Length = 0;
  for(int i=0; i < CellsToInvalidate.Length; i++)
    InvalidateCell(CellsToInvalidate[i].x, CellsToInvalidate[i].y);
}
//---------------------------------------------------------------------------

void __fastcall TIntMinerField::InvalidateCells(const TCells AChangedCells, const TCells ARedCells)
{
  for(int i=0; i < AChangedCells.Length; i++)
    InvalidateCell(AChangedCells[i].x, AChangedCells[i].y);
  for(int i=0; i < ARedCells.Length; i++)
    InvalidateCell(ARedCells[i].x, ARedCells[i].y);
}
//---------------------------------------------------------------------------

void __fastcall TIntMinerField::UpdateMinerFieldState(const TCells ARedCells)
{
  FRedCells.Length = ARedCells.Length;
  for(int i=0; i < ARedCells.Length; i++)
    FRedCells[i] = ARedCells[i];
}
//---------------------------------------------------------------------------

void AlignTextInCell(TCanvas* ACanvas, TRect Rect, String AStr, TAlignment Alignment = taCenter)
{
  int Y = 3;
  int X = 1;
  switch(Alignment) {
   case taCenter: X = ((Rect.Right - Rect.Left) - ACanvas->TextWidth(AStr)) >> 1; break;
   case taLeftJustify: X = 1; break;
   case taRightJustify:  X = ((Rect.Right - Rect.Left) - ACanvas->TextWidth(AStr)) -1; break;
  }
  ACanvas->TextOut(Rect.Left + X, Rect.Top + Y, AStr);
}
//---------------------------------------------------------------------------

void __fastcall TIntMinerField::DrawOpenedCell(TCanvas* ACanvas, TRect ARect, TCellStateRec ACellState)
{
  ACanvas->Brush->Color = FOpenCellBkColor;
  ACanvas->FillRect(ARect);
  ACanvas->Pen->Style = psSolid;
  ACanvas->Pen->Color = FRectangleColor;
  ARect.Left--; ARect.Top--;
  ACanvas->Rectangle(ARect.Left, ARect.Top, ARect.Right, ARect.Bottom);
  ARect.Right--; ARect.Bottom--;
  ACanvas->Font->Style = TFontStyles() << fsBold;
  if(ACellState.SurroundNumber >= 1)
    ACanvas->Font->Color = FSurroundColors[ACellState.SurroundNumber-1];
  Brush->Style = bsClear;
  if(ACellState.SurroundNumber != 0)
    AlignTextInCell(ACanvas, ARect, IntToStr(ACellState.SurroundNumber));
}

void __fastcall TIntMinerField::DrawClosedCell(TCanvas* ACanvas, TRect ARect, TCellStateRec ACellState, int ACol, int ARow)
{
  if(FGameStatus == gsLost) {
    if(IsExistsInArray(FRedCells, ACol, ARow)) {
      // red bomb on an empty background
      ACanvas->Brush->Color = FOpenCellBkColor;
      ACanvas->FillRect(ARect);

      ACanvas->Brush->Style = bsSolid;
      ACanvas->Brush->Color = clRed;
      ARect.Right--;
      ARect.Bottom--;
      ACanvas->FillRect(ARect);
      ACanvas->Brush->Style = bsClear;
      ARect.Left++; ARect.Top++;
      ARect.Right++; ARect.Bottom--;
      FImages->Draw(ACanvas, ARect.Left, ARect.Top, imRedBomb, true);
      return;
    }
    if(ACellState.SurroundNumber == -1) {
      ACanvas->Brush->Color = FOpenCellBkColor;
      ACanvas->FillRect(ARect);
      ACanvas->Pen->Style = psSolid;
      ACanvas->Pen->Color = FRectangleColor;
      ARect.Left--; ARect.Top--;
      ACanvas->Rectangle(ARect.Left, ARect.Top, ARect.Right, ARect.Bottom);
      ARect.Left = ARect.Left + 2;
      ARect.Top = ARect.Top + 2;
      ACanvas->Brush->Style = bsClear;
      FImages->Draw(ACanvas, ARect.Left, ARect.Top, imBomb, true);  // bomb image
    }
    else
      Frame3D(ACanvas, ARect, FFrameColor, FOpenCellBkColor, 1); // unpressed
  }
  else
  if((FGameStatus == gsNew) || (FGameStatus == gsRun)) {
    if(IsExistsInArray(FPressedCells, ACol, ARow))
      Frame3D(ACanvas, ARect, FOpenCellBkColor, FFrameColor, 1); // pressed
    else 
      Frame3D(ACanvas, ARect, FFrameColor, FOpenCellBkColor, 1); // unpressed
  }
  if(FGameStatus == gsWon) {
     Frame3D(ACanvas, ARect, FFrameColor, FOpenCellBkColor, 1); // unpressed
     if(ACellState.SurroundNumber == -1)
       FImages->Draw(ACanvas, ARect.Left, ARect.Top, imBombMark, true);  // bomb flag
  }
}

void __fastcall TIntMinerField::DrawBombMarkedCell(TCanvas* ACanvas, TRect ARect, TCellStateRec ACellState)
{
  if(FGameStatus == gsLost) {
    if(ACellState.SurroundNumber == -1) {
      Frame3D(ACanvas, ARect, FFrameColor, FOpenCellBkColor, 1); // unpressed
      FImages->Draw(ACanvas, ARect.Left, ARect.Top, imBombMark, true);  // bomb flag
    }
    else {
      // striked out bomb on an empty background
      ACanvas->Brush->Color = FOpenCellBkColor;
      ACanvas->FillRect(ARect);
      ACanvas->Pen->Style = psSolid;
      ACanvas->Pen->Color = FRectangleColor;
      ARect.Left--; ARect.Top--;
      ACanvas->Rectangle(ARect.Left, ARect.Top, ARect.Right, ARect.Bottom);
      ARect.Left = ARect.Left + 2; ARect.Top = ARect.Top + 2;
      ACanvas->Brush->Style = bsClear;
      FImages->Draw(ACanvas, ARect.Left, ARect.Top, imStruckOutBomb, true);
    }
  } else
  if((FGameStatus == gsRun) || (FGameStatus == gsWon) || (FGameStatus == gsNew)) {
    Frame3D(ACanvas, ARect, FFrameColor, FOpenCellBkColor, 1); // unpressed
    FImages->Draw(ACanvas, ARect.Left, ARect.Top, imBombMark, true);  // bomb flag
  }
}

void __fastcall TIntMinerField::DrawQuestionMarkedCell(TCanvas* ACanvas, TRect ARect, TCellStateRec ACellState, int ACol, int ARow)
{
  if(FGameStatus == gsWon) {
    if(ACellState.SurroundNumber == -1) {
      Frame3D(ACanvas, ARect, FFrameColor, FOpenCellBkColor, 1); // unpressed
      FImages->Draw(ACanvas, ARect.Left, ARect.Top, imBombMark, true);  // bomb flag
    }
  } else
  if(FGameStatus == gsLost) {
    if(ACellState.SurroundNumber == -1) {
      ACanvas->Brush->Color = FClosedCellBkColor;
      ACanvas->FillRect(ARect);
      ACanvas->Pen->Style = psSolid;
      ACanvas->Pen->Color = FOpenCellBkColor;
      ARect.Left--; ARect.Top--;
      ACanvas->Rectangle(ARect.Left, ARect.Top, ARect.Right, ARect.Bottom);
      ARect.Left = ARect.Left + 2; ARect.Top = ARect.Top + 2;
      ACanvas->Brush->Style = bsClear;
      FImages->Draw(ACanvas, ARect.Left, ARect.Top, imBomb, true); // bomb on an empty background
   } else {
     Frame3D(ACanvas, ARect, FFrameColor, FOpenCellBkColor, 1); // unpressesd
     FImages->Draw(ACanvas, ARect.Left, ARect.Top, imQuestionMark, true);      // question mark
   }
   } else
   if((FGameStatus == gsNew) || (FGameStatus == gsRun)) {
     if(!IsExistsInArray(FPressedCells, ACol, ARow))
       Frame3D(ACanvas, ARect, FFrameColor, FOpenCellBkColor, 1); // unpresses
     else
       Frame3D(ACanvas, ARect, FOpenCellBkColor, FFrameColor, 1); // pressed
     FImages->Draw(ACanvas, ARect.Left, ARect.Top, imQuestionMark, true);      // question mark
   }
}

void __fastcall TIntMinerField::DrawCell(const TCellStateRec ACellState, int ACol, int ARow, const TRect &ARect, Graphics::TCanvas* ACanvas)
{
  String CellStr;
  ACanvas->Brush->Style = bsSolid;
  ACanvas->Brush->Color = FClosedCellBkColor;
  ACanvas->FillRect(ARect);
  switch (ACellState.CellState) {
    case csOpened: DrawOpenedCell(ACanvas, ARect, ACellState); break;
    case csClosed: DrawClosedCell(ACanvas, ARect, ACellState, ACol, ARow); break;
    case csBombMarked: DrawBombMarkedCell(ACanvas, ARect, ACellState); break;
    case csQuestionMarked: DrawQuestionMarkedCell(ACanvas, ARect, ACellState, ACol, ARow); break;
  };
}
//---------------------------------------------------------------------------

void __fastcall TIntMinerField::InvalidateCell(int ACol, int ARow)
{
  TRect InvalidRect = ((TcxGridTableView*)Views[0])->ViewInfo->RecordsViewInfo->Items[ARow]->GetCellViewInfoByItem(((TcxGridTableView*)Views[0])->Items[ACol])->Bounds;
  Views[0]->Painter->Invalidate(InvalidRect);
}
//---------------------------------------------------------------------------

void __fastcall TIntMinerField::MouseDownHandler(System::TObject* Sender, Controls::TMouseButton Button, Classes::TShiftState Shift, int X, int Y)
{
  int ACol, ARow;

  SetCaptureControl(Views[0]->Site);
  MouseToCell(X, Y, ACol, ARow);
  if((ACol == - 1) || (ARow == -1))
    return;

  if((Shift == (TShiftState() << ssLeft << ssRight)) || (Shift == (TShiftState() << ssLeft << ssRight))
    || (Shift == (TShiftState() << ssMiddle)) || (Shift == (TShiftState() << ssLeft << ssMiddle))
    || (Shift == (TShiftState() << ssRight << ssMiddle))) {
    FireImageChanged(imAstonisment);
    FSurprised = true;
    for(int i=-1; i <=1; i++)
      for(int j=-1; j <=1; j++)
          if(CheckFieldBounds(ACol+i, ARow+j) && (
            (CellState[ACol+i][ARow+j].CellState == csClosed)
            || (CellState[ACol+i][ARow+j].CellState == csQuestionMarked))) {
            AddPressedCell(ACol+i, ARow+j);
            InvalidateCell(ACol+i, ARow+j);
          };
    return;
  };

  if(Button == mbLeft) {
    FireImageChanged(imAstonisment);
    FSurprised = true;
    if((CellState[ACol][ARow].CellState == csClosed)
        || (CellState[ACol][ARow].CellState == csQuestionMarked)) {
        AddPressedCell(ACol, ARow);
        InvalidateCell(ACol, ARow);
      };
    return;
  };

  if(Button == mbRight) {
    if(CellState[ACol][ARow].CellState == csOpened) return;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国内精品不卡在线| 成人av资源网站| 中文字幕一区二区三区蜜月| 欧美性猛交xxxx黑人交| 国产激情偷乱视频一区二区三区 | 国产精品久久久久久亚洲伦| 欧美人妇做爰xxxⅹ性高电影 | 国产福利电影一区二区三区| 亚洲超碰精品一区二区| 一区在线观看免费| 久久久久久久久岛国免费| 欧美群妇大交群的观看方式| 成人精品视频一区二区三区| 激情小说亚洲一区| 日韩高清不卡在线| 亚洲五码中文字幕| 亚洲欧洲中文日韩久久av乱码| 久久欧美一区二区| 日韩一区二区三区在线视频| 欧美日韩国产高清一区二区三区 | 色综合视频一区二区三区高清| 精品亚洲国内自在自线福利| 一区二区三区在线观看欧美 | 欧美经典一区二区| 精品国产一区二区三区久久久蜜月| 欧美视频中文字幕| 国产欧美日韩中文久久| 欧美一区二区三区成人| 欧美日韩视频在线第一区| 在线观看成人小视频| 97久久精品人人澡人人爽| 国产成人免费视频| 国产高清久久久| 国产精品中文字幕欧美| 国产自产高清不卡| 久久91精品久久久久久秒播| 美女尤物国产一区| 久久精品噜噜噜成人88aⅴ| 久久狠狠亚洲综合| 精品一区二区三区的国产在线播放| 青青草一区二区三区| 免费高清成人在线| 国产综合色在线| 国产精品资源在线看| 国产麻豆精品theporn| 国产成人精品影院| av电影一区二区| 欧美影院精品一区| 这里只有精品电影| 欧美xxxx在线观看| 久久一夜天堂av一区二区三区| 久久亚洲春色中文字幕久久久| 久久久91精品国产一区二区三区| 久久伊人中文字幕| 国产精品理伦片| 亚洲综合免费观看高清完整版在线| 亚洲影视资源网| 日本三级韩国三级欧美三级| 精品一区二区免费视频| 成人高清免费观看| 欧美三区在线观看| 精品欧美一区二区在线观看| 国产亚洲一区二区三区四区| 国产精品国产三级国产aⅴ无密码| 亚洲另类春色国产| 日韩中文欧美在线| 国产精品一区一区三区| 色婷婷香蕉在线一区二区| 亚洲男人的天堂在线观看| 亚洲高清视频中文字幕| 麻豆久久久久久| eeuss鲁片一区二区三区 | 精品一区二区三区不卡| 9色porny自拍视频一区二区| 欧美日韩和欧美的一区二区| xfplay精品久久| 国产精品传媒在线| 午夜精品视频一区| 国产成人自拍网| 欧美日韩在线电影| 国产欧美精品一区二区色综合 | 欧美无砖专区一中文字| 日韩色在线观看| 亚洲欧美日韩系列| 麻豆精品久久精品色综合| 不卡一区中文字幕| 91麻豆精品91久久久久久清纯| 精品久久久网站| 夜夜亚洲天天久久| 国产成人综合亚洲网站| 欧美高清激情brazzers| 国产精品护士白丝一区av| 日本系列欧美系列| 91视频在线观看免费| 精品少妇一区二区三区日产乱码| 中文字幕在线观看一区二区| 六月丁香婷婷久久| 欧美性色黄大片手机版| 亚洲国产精品精华液ab| 久久精品国产99国产| 欧美主播一区二区三区美女| 欧美精彩视频一区二区三区| 免费精品视频在线| 欧美综合一区二区| 国产精品美女久久久久久久久 | 亚洲成人高清在线| 波多野结衣亚洲一区| 欧美大度的电影原声| 偷拍一区二区三区| 一本大道久久精品懂色aⅴ| 国产三级三级三级精品8ⅰ区| 青青草成人在线观看| 欧美影院一区二区三区| 亚洲色图清纯唯美| 波多野结衣中文字幕一区 | 2023国产精品自拍| 首页国产欧美日韩丝袜| 欧美写真视频网站| 亚洲人午夜精品天堂一二香蕉| 国产99久久久国产精品潘金| 精品国产第一区二区三区观看体验| 99在线视频精品| 欧美国产一区在线| 国产成人免费9x9x人网站视频| 欧美va亚洲va| 激情文学综合插| 日韩一区二区三| 秋霞午夜鲁丝一区二区老狼| 欧美精品视频www在线观看| 一区二区欧美精品| 欧美性大战xxxxx久久久| 一区二区三区在线看| 欧美性受xxxx| 五月天丁香久久| 在线不卡免费欧美| 日韩黄色免费网站| 制服丝袜国产精品| 另类小说图片综合网| 日韩欧美中文字幕精品| 全国精品久久少妇| 欧美精品一区二区高清在线观看| 麻豆91小视频| 精品福利在线导航| 国产成人啪午夜精品网站男同| 久久精品一区四区| 成人福利视频在线| 亚洲乱码精品一二三四区日韩在线| 色悠久久久久综合欧美99| 亚洲资源中文字幕| 666欧美在线视频| 激情综合色播激情啊| 欧美激情综合五月色丁香小说| av在线一区二区| 亚洲一区二区三区四区在线 | 国产午夜精品福利| 成人av集中营| 亚洲大尺度视频在线观看| 3d动漫精品啪啪1区2区免费| 韩国女主播成人在线观看| 国产精品久久久久久久久免费丝袜| 99精品视频在线观看免费| 亚洲午夜视频在线观看| 日韩情涩欧美日韩视频| 国产suv精品一区二区6| 亚洲最大成人网4388xx| 日韩午夜精品视频| 国产suv精品一区二区6| 一区二区三区日韩欧美| 日韩欧美一区二区久久婷婷| 成人自拍视频在线观看| 亚洲小说欧美激情另类| 久久综合久色欧美综合狠狠| 91丝袜美腿高跟国产极品老师| 五月天激情小说综合| 国产欧美一区二区三区鸳鸯浴| 一本色道综合亚洲| 蜜臀av国产精品久久久久| 国产精品初高中害羞小美女文| 欧美日韩国产小视频| 国产成人在线看| 图片区小说区区亚洲影院| 久久综合九色综合久久久精品综合| aaa亚洲精品一二三区| 日本中文字幕一区| 自拍偷拍亚洲欧美日韩| 精品国内二区三区| 欧美综合天天夜夜久久| 国产麻豆视频一区| 亚洲成av人片一区二区三区| 国产日韩综合av| 欧美一区二区在线免费播放| 91蜜桃网址入口| 精品一区二区免费视频| 亚洲国产精品久久人人爱| 免费在线视频一区| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 欧美军同video69gay| 97se亚洲国产综合在线| 韩国精品久久久| 日韩精品成人一区二区三区|