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

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

?? unit_main.pas

?? 掃雷
?? PAS
?? 第 1 頁 / 共 5 頁
字號:
{******************************************************************************
*   Uint  Unit_Main
*   Function 程序的主要代碼部分,是程序的主體部分
*
*   CopyRight (c) By 虹雨 (Huansun) 2002-8
*
*   Date    :
*       New Develop   : 2002-7-31
*       Modified      : 2002-9-10
******************************************************************************}

unit Unit_Main;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Menus, ExtCtrls,mmsystem, Buttons,inifiles, shellapi,
  ComCtrls, Registry;

const
  //數組的最大 最小的列數和行數
  g_MaxCol=50;
  g_MaxRow=26;

  g_MinCol=9;
  g_MinRow=9;

  //雷數最多情況下占總方塊個數的比例
  g_MaxPer=0.926;

  ////最多和最少的雷數
  g_MaxCount=999;
  g_MinCount=10;

  //初 中 高 專業級的分別的列數 行數 雷數
  g_Level_1_Col=9;
  g_Level_1_Row=9;
  g_Level_1_Bombcount=10;  //12.3%

  g_Level_2_Col=16;
  g_Level_2_Row=16;
  g_Level_2_Bombcount=40;  //15.6%

  g_Level_3_Col=30;
  g_Level_3_Row=16;
  g_Level_3_Bombcount=99;  //20.6%

  g_Level_4_Col=40;
  g_Level_4_Row=26;
  g_Level_4_Bombcount=210;  //22%


  //每個方塊的寬度 高度
  g_BlockWidth=16;
  g_BlockHeight=16;

  //每個顯示的數字的寬度 高度
  g_NumWidth=13;
  g_NumHeight=23;

  //每張 Face 的寬度 高度
  g_FaceWidth = 24;
  g_FaceHeight = 24;

  //資源文件的路徑 文件名
  g_ResourceName='resource\';
  g_HeroFileName='hero.ini';
  g_InfoFileName='info.ini';
  g_Sound_Second='second.wav';
  g_Sound_GameWin='GameWin.wav';
  g_Sound_GameLost='GameLost.wav';
  g_ChmFileName='mine.chm';
  g_HelpFileName='mine.hlp';
  g_SysHelpFileName='Syshelp.chm';

  //注冊表文件的路徑
  g_REG_InfoPath = '\MiniMine\MiniMine Info';
  g_REG_HeroPath = '\MiniMine\MiniMine Hero';

type
  //在運用四連通算法進行展開區域時使用到的記錄類型的指針類型
  BlockPointer=^TBlockRec;
  TBlockRec=Record
          BlockX   :integer;
          BlockY   :integer;
          preBlock :BlockPointer;
          nextBlock:BlockPointer;
        end;

  //Grid 中的數組大小已經擴大了各一個方塊
  //用于記錄當前列數 行數 以及 標識雷區和顯示區的數組 的一個記錄類型
  TGridArray= record
    LocalTotalCols :integer;
    LocalTotalRows :integer;
    Grid           :Array[1..g_MaxCol +1,1..g_MaxRow +1] of integer;
  end;

  //用于在GameOver時記錄哪些方塊標錯了雷.
  TOverColAndRow=array[1..8] of integer;

  //用于在顯示 d_left --顯示雷的個數  d_right --顯示時間
  TDisplayDir=(d_left,d_right);

  //用于顯示按鈕上笑臉的類型
  TFaceType=(f_smile,f_o,f_glass,f_sad,f_smileDown);

  //用于顯示的語言類型
  TLanguageType=(l_Chinese_Simplified,l_Chinese_Traditional,l_English);

  //游戲目前的狀態
  TGameStatus=(s_Waiting, s_Sweeping, s_pausing, s_Win, s_Lost);

  //游戲的級別
  TGameLevel=(v_Beginner,v_Middle,v_Expert,v_Professional,v_UserDefine);

  TFrm_Main = class(TForm)
    MainMenu: TMainMenu;
    G1: TMenuItem;
    N1: TMenuItem;
    N2: TMenuItem;
    Menu_Lv_B: TMenuItem;
    Menu_Lv_I: TMenuItem;
    Menu_Lv_E: TMenuItem;
    Menu_Lv_C: TMenuItem;
    N3: TMenuItem;
    T1: TMenuItem;
    N4: TMenuItem;
    X1: TMenuItem;
    H1: TMenuItem;
    C2: TMenuItem;
    S1: TMenuItem;
    N5: TMenuItem;
    A1: TMenuItem;
    H2: TMenuItem;
    Menu_Flag: TMenuItem;
    N6: TMenuItem;
    Menu_Color: TMenuItem;
    Menu_Sound: TMenuItem;
    Panel_top: TPanel;
    Panel_bottom: TPanel;
    Image_BackGround: TImage;
    Timer_Display: TTimer;
    Panel_Display_right: TPanel;
    Panel_Display_left: TPanel;
    Image_Dis_BombCount: TImage;
    Image_Dis_Time: TImage;
    Image_Color_block: TImage;
    Image_Color_Button: TImage;
    Image_Color_Num: TImage;
    Image_Gray_block: TImage;
    Image_Gray_Button: TImage;
    Image_Gray_Num: TImage;
    Image_Face: TImage;
    L1: TMenuItem;
    m_Chinese_Simplified: TMenuItem;
    m_English: TMenuItem;
    N13: TMenuItem;
    Menu_Restart: TMenuItem;
    C1: TMenuItem;
    Menu_StatusBar: TMenuItem;
    StatusBar_Mine: TStatusBar;
    Menu_Pause_Resume: TMenuItem;
    Timer_NowTime: TTimer;
    m_Chinese_Traditional: TMenuItem;
    Menu_Lv_P: TMenuItem;
    procedure FormCreate(Sender: TObject);
    procedure X1Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Image_BackGroundMouseDown(Sender: TObject;
      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    procedure Image_BackGroundMouseUp(Sender: TObject;
      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    procedure Image_BackGroundMouseMove(Sender: TObject;
      Shift: TShiftState; X, Y: Integer);
    procedure Timer_DisplayTimer(Sender: TObject);
    procedure Panel_topMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Panel_topMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Menu_Lv_BClick(Sender: TObject);
    procedure Menu_Lv_IClick(Sender: TObject);
    procedure Menu_Lv_EClick(Sender: TObject);
    procedure N1Click(Sender: TObject);
    procedure Menu_FlagClick(Sender: TObject);
    procedure Menu_ColorClick(Sender: TObject);
    procedure Menu_SoundClick(Sender: TObject);
    procedure Menu_Lv_CClick(Sender: TObject);
    procedure T1Click(Sender: TObject);
    procedure A1Click(Sender: TObject);
    procedure C2Click(Sender: TObject);
    procedure Image_FaceMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Image_FaceMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Panel_topMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure Image_Dis_BombCountMouseMove(Sender: TObject;
      Shift: TShiftState; X, Y: Integer);
    procedure Image_Dis_TimeMouseMove(Sender: TObject; Shift: TShiftState;
      X, Y: Integer);
    procedure Image_Dis_BombCountMouseDown(Sender: TObject;
      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    procedure Image_Dis_TimeMouseDown(Sender: TObject;
      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    procedure Image_Dis_BombCountMouseUp(Sender: TObject;
      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    procedure Image_Dis_TimeMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Panel_Display_leftMouseDown(Sender: TObject;
      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    procedure Panel_Display_leftMouseMove(Sender: TObject;
      Shift: TShiftState; X, Y: Integer);
    procedure Panel_Display_leftMouseUp(Sender: TObject;
      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    procedure Panel_Display_rightMouseDown(Sender: TObject;
      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    procedure Panel_Display_rightMouseMove(Sender: TObject;
      Shift: TShiftState; X, Y: Integer);
    procedure Panel_Display_rightMouseUp(Sender: TObject;
      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    procedure H2Click(Sender: TObject);
    procedure S1Click(Sender: TObject);
    procedure m_EnglishClick(Sender: TObject);
    procedure Panel_bottomMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Panel_bottomMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure Panel_bottomMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Menu_RestartClick(Sender: TObject);
    procedure Menu_StatusBarClick(Sender: TObject);
    procedure Menu_Pause_ResumeClick(Sender: TObject);

    procedure CustomizeFrmClientRange(const c_isHaveStatusBar:boolean);
    procedure Timer_NowTimeTimer(Sender: TObject);
    procedure m_Chinese_SimplifiedClick(Sender: TObject);
    procedure StatusBar_MineMouseDown(Sender: TObject;
      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    procedure StatusBar_MineMouseMove(Sender: TObject; Shift: TShiftState;
      X, Y: Integer);
    procedure StatusBar_MineMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure m_Chinese_TraditionalClick(Sender: TObject);
    procedure Menu_Lv_PClick(Sender: TObject);

  protected
   { Protected declarations }

  private
    { Private declarations }
    //改變笑臉的圖片
    procedure ChgSpbtnGlyph (FaceType:TFaceType );

    //改變狀態欄的顯示內容
    procedure ChangeStatusBar(const c_Level: TGameLevel ;const c_Cols,c_Rows,c_Bombs:integer;
      const c_GameStatus:TGameStatus ;const c_LocalScore:integer;
      const c_LanguageType:TLanguageType );

    //改變菜單
    procedure ChangeMenu(const m_LanguageType:TLanguageType );

  public
    { Public declarations }

    //根據傳進來的UpGridArray的值畫地圖,于全局變量LastGridArray 的逐個方格進行比較,畫地圖
    //isColor 的作用時,時由于按動了'顏色'菜單觸發的話,則強行全部重畫.
    procedure DrawBackGround(const d_UpGridArray:TGridArray; const isColorForce:boolean);

    //根據傳進來的Count 值和需要 Draw 的是左邊的雷數還是右邊的時間值
    procedure DrawHead(const Count:integer;d_Dir:TDisplayDir );

    //難度級別的菜單標注
    procedure LevelMenuSelect(isLevel_B,isLevel_I,isLevel_E,isLevel_P,isLevel_C:boolean);

    //獲勝
    procedure GameWin(w_DownGridArray:TGridArray ;var w_UpGridArray:TGridArray);

    //游戲失敗
    procedure GameLost(l_DownGridArray:TGridArray ;var l_UpGridArray:TGridArray;l_Col,l_Row:TOverColAndRow);

    //初始化窗體以及其中各個panel  button 的位置初始化
    procedure initForm(const totalCol,totalRow,i_bombCount:integer; const i_isHaveStatusBar:boolean);

    //初始化整個程序的各個變量
    procedure initApplication(const i_level:TGameLevel ; UserCols, UserRows, UserBombs:integer;i_isHaveQuestion,i_isHaveColor,i_isHaveSound, i_isHaveStatusBar:boolean; var i_LanguageType:TLanguageType );

  end;

var
  Frm_Main: TFrm_Main;

  comdir:string;        //用于保存路徑
  LanguageType:TLanguageType; //當前語言的類型
  GameStatus:TGameStatus;

  isHaveQuestion:boolean;     //是否有標志(?) 存在
  isHaveColor:boolean;        //是否是彩色顯示
  isHaveSound:boolean;        //是否有聲音
  isHaveStatusBar:boolean;    //是否有狀態欄

  UserLevel:TGameLevel ;         //當前級別(初 中 高)
  UserTotalCols:integer;     //當前列數
  UserTotalRows:integer;     //當前行數
  UserBombCount:integer;     //當前雷的總個數

  DownGridArray:TGridArray;	//底層數組
  UpGridArray:TGridArray;	//顯示層數組
  LastUpGridArray:TGridArray ;  //上次顯示層的數組,在 重新畫地圖的時候使用
  LastDownGridArray:TGridArray; //用于在‘重新掃本局’的功能處使用

  TotalTime:integer;    //當前所使用的時間
  Begin_Time:DWORD;     //開始計時的時間
  LocalScore:integer;   //本級別(除了自定義)的記錄時間

  LocalCol,LocalRow:integer;   //當前列號  當前行號

  isFirstClick:boolean;		//是否時左鍵第一次點擊
  isGameStarted:boolean;        //判斷游戲是否開始了
  isGameOver:boolean;		//是否游戲結束
  isGameWin:Boolean;         //是否獲勝
  isGameLost:Boolean;        //是否失敗
  isGamePaused :boolean;              //程序是否被暫停
  isGameofRestart:boolean;            //是否是‘重新掃本局’的一局

  isLeftBtnDown,isRightbtnDown:boolean;    //
  isLeftAndRightBtnDown:boolean;           //

  FlagCount:integer;                    //已經標志了雷的方塊的數目
  BlockOpenCount:integer;               //已經打開的方塊的數目

  //初始化底層陣列數組的值
  procedure initGridArray( const BombCount, localx, localy:integer;var s_DownGridArray, s_UpGridArray:TGridArray);

  //用八連通算法對空格以外的連通區域展開
  procedure SeekBlackBlock(s_DownGridArray:TGridArray;var s_UpGridArray:TGridArray;s_Col,s_Row:integer);

  //左右鍵其中有一個鍵彈起時觸發
  procedure LeftAndRightBtnUp(lru_DownGridArray:TGridArray ;var lru_UpGridArray:TGridArray;lru_Col,lru_Row:integer );

  //左鍵按下時觸發
  procedure LeftBtnDown(ld_DownGridArray:TGridArray ;var ld_UpGridArray:TGridArray ;ld_Col,ld_Row:integer);

  //左鍵Up時觸發
  procedure LeftBtnUp(lu_DownGridArray:TGridArray ;var lu_UpGridArray:TGridArray ;lu_Col,lu_Row:integer);

  //右鍵按下時觸發
  procedure RightBtnDown(rd_DownGridArray:TGridArray ;var rd_UpGridArray:TGridArray ;rd_Col,rd_Row:integer);

  //對數組的值進行檢驗
  procedure checkArr(var c_downGridArray,c_UpGridArray:TGridArray ;var c_BombCount:integer);

  //左右鍵都按下了時觸發
  procedure LeftAndRightBtnDown(lrd_DownGridArray :TGridArray ;var lrd_UpGridArray:TGridArray;lrd_Col,lrd_Row:Integer );

  //將象素轉變成方塊的塊號
  procedure ChangePixelToBlock(pixelx,pixely:integer;var BlockCol,BlockRow:integer);

  //檢查窗體的位置,以確保其存在于顯示區域內
  procedure checkMainFormPosition(frm_check:TForm );

  //按下了的左鍵從此方塊上移開時觸發
  procedure leftBtnMoveOut(lm_DownGridArray:TGridArray ;var lm_UpGridArray:TGridArray ;lm_Col,lm_row:integer);

  //左右鍵同時按下時從此方塊上移開時觸發
  procedure LeftAndRightBtnMoveOut(lrm_DownGridArray:TGridArray ;var lrm_UpGridArray:TGridArray ;lrm_Col,lrm_row:integer);

  //從注冊表中讀取相關信息
  procedure ExportIniFile(var i_level:TGameLevel ;var i_totalCols,i_totalRows,i_bombCount:integer;var i_isHaveQuestion,i_isHaveColor,i_isHaveSound, i_isHaveStatusBar:boolean; var i_LanguageType:TLanguageType );

implementation

uses Unit_Choose, Unit_Hero,Unit_About, Unit_HeroName;

{$R *.dfm}

procedure initGridArray( const BombCount, localx, localy:integer;var s_DownGridArray, s_UpGridArray:TGridArray);
var

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合中文字幕国产| 日韩免费在线观看| 欧美一区二区成人6969| 国产婷婷色一区二区三区在线| 亚洲激情图片qvod| 国产白丝精品91爽爽久久| 欧美色图激情小说| 亚洲国产精品激情在线观看| 久久精品国产亚洲高清剧情介绍| 一本久久综合亚洲鲁鲁五月天| 欧美成人女星排行榜| 亚洲超碰97人人做人人爱| eeuss影院一区二区三区| 久久久精品黄色| 久久99精品久久久久| 欧美日韩国产精品自在自线| 亚洲欧美色图小说| 国产69精品久久久久毛片| 精品三级在线观看| 麻豆中文一区二区| 欧美一二区视频| 日本伊人精品一区二区三区观看方式| 色久优优欧美色久优优| 亚洲欧美日韩综合aⅴ视频| 成人免费视频一区| 亚洲国产精品二十页| 国产激情精品久久久第一区二区| 亚洲精品在线网站| 麻豆精品国产91久久久久久| 日韩视频一区二区在线观看| 日本女人一区二区三区| 日韩欧美综合在线| 蜜臀a∨国产成人精品| 日韩你懂的在线播放| 久久9热精品视频| 精品人在线二区三区| 久久99精品一区二区三区 | 香蕉久久夜色精品国产使用方法| 色欧美日韩亚洲| 亚洲一区视频在线| 欧美年轻男男videosbes| 日韩在线播放一区二区| 日韩欧美一区在线观看| 精品一二三四区| 欧美国产日韩a欧美在线观看| 成人精品免费视频| 亚洲视频香蕉人妖| 欧美日韩色一区| 久久国产精品99久久久久久老狼| 精品对白一区国产伦| caoporm超碰国产精品| 亚洲精品老司机| 欧美一区二区三区公司| 国产精品一区二区三区网站| 亚洲欧洲美洲综合色网| 欧亚洲嫩模精品一区三区| 日韩电影在线观看一区| 久久久久成人黄色影片| 色噜噜久久综合| 久久狠狠亚洲综合| 中文字幕永久在线不卡| 欧美日韩国产首页| 国产一区二区三区在线观看精品| 国产精品久久久久久久浪潮网站 | 中文字幕一区二区三区不卡| 欧日韩精品视频| 国内外成人在线| 亚洲欧美日韩中文字幕一区二区三区 | 欧美性猛片xxxx免费看久爱| 免费在线观看视频一区| 国产农村妇女精品| 6080午夜不卡| 成人av电影在线观看| 日本人妖一区二区| 亚洲男帅同性gay1069| 欧美大片顶级少妇| 色综合视频一区二区三区高清| 蜜桃av噜噜一区二区三区小说| 中文字幕日韩一区二区| 精品国产乱码久久久久久老虎 | 夫妻av一区二区| 一区二区三区欧美激情| 精品国产乱码久久久久久夜甘婷婷| 99久久99久久精品国产片果冻| 免费久久99精品国产| 亚洲欧美激情小说另类| 2020国产精品自拍| 欧美精品aⅴ在线视频| 99re在线精品| 国产成人午夜视频| 另类小说一区二区三区| 亚洲一区在线观看网站| 最近日韩中文字幕| 日本一区二区三区在线不卡| 欧美一区三区四区| 欧美性大战久久久| av不卡免费电影| 国产成人免费9x9x人网站视频| 日本人妖一区二区| 亚洲成人你懂的| 亚洲最色的网站| 亚洲欧美激情一区二区| 亚洲天堂av一区| 国产精品免费久久| 欧美韩日一区二区三区| 久久先锋影音av| 久久免费电影网| 精品粉嫩超白一线天av| 精品国产自在久精品国产| 日韩免费视频一区| 日韩久久久久久| 日韩一级高清毛片| 欧美mv日韩mv| 国产亚洲欧美在线| 国产午夜久久久久| 国产精品久久久一区麻豆最新章节| 国产拍揄自揄精品视频麻豆| 久久久久久久综合狠狠综合| 久久综合色天天久久综合图片| 久久久精品天堂| 中文字幕在线不卡国产视频| 日韩毛片视频在线看| 一区二区三区毛片| 亚洲成av人综合在线观看| 五月婷婷激情综合| 久久综合综合久久综合| 国产精品自在欧美一区| 99视频超级精品| 色婷婷激情综合| 欧美一区二区黄| 国产亚洲欧美日韩在线一区| 国产精品伦一区二区三级视频| 亚洲天堂成人在线观看| 午夜亚洲福利老司机| 狠狠色2019综合网| 成人亚洲精品久久久久软件| 在线视频一区二区免费| 91精品在线观看入口| 日韩美女在线视频| 国产精品国产三级国产普通话99 | 91国产成人在线| 欧美日韩和欧美的一区二区| 精品女同一区二区| 日本一区二区久久| 性欧美大战久久久久久久久| 精品亚洲成av人在线观看| 99re热这里只有精品视频| 欧美日韩精品一区二区天天拍小说| 日韩欧美一区二区久久婷婷| 国产精品拍天天在线| 午夜精品视频在线观看| 国产成人精品亚洲午夜麻豆| 欧美色精品在线视频| 国产日韩欧美精品综合| 亚洲狠狠爱一区二区三区| 国产精品自拍网站| 欧美高清精品3d| 国产精品久久久久久久第一福利| 日韩电影在线免费| 91浏览器在线视频| 久久久精品蜜桃| 日本在线不卡视频| 色综合久久综合网97色综合| 2024国产精品| 首页欧美精品中文字幕| 本田岬高潮一区二区三区| 欧美一区二区视频在线观看2020| 欧美国产精品v| 久久狠狠亚洲综合| 欧美亚洲图片小说| 国产精品无人区| 韩国理伦片一区二区三区在线播放| 91国内精品野花午夜精品| 国产亚洲欧洲997久久综合| 日本欧美韩国一区三区| 欧美日韩亚洲综合在线| 中文字幕亚洲精品在线观看| 国产在线一区观看| 日韩一区二区三区在线观看| 洋洋成人永久网站入口| 成人丝袜18视频在线观看| www国产精品av| 久久www免费人成看片高清| 69av一区二区三区| 首页国产丝袜综合| 欧美三级日韩三级国产三级| 亚洲乱码中文字幕| 92国产精品观看| 成人免费一区二区三区视频| 国产suv精品一区二区三区| 日韩欧美精品在线| 蜜臀99久久精品久久久久久软件| 欧美日韩一级二级三级| 亚洲午夜电影网| 欧美日韩中字一区| 亚洲综合一区在线| 欧美性猛片xxxx免费看久爱| 亚洲国产日韩在线一区模特| 欧美系列一区二区| 亚洲高清在线精品|