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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? mainfrm.pas

?? Sudoku is a logic-based number placement puzzle. A deceptively simple game of logic, Sudoku is puzzl
?? PAS
?? 第 1 頁(yè) / 共 4 頁(yè)
字號(hào):
unit MainFrm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, ActnList, StdCtrls, Grids,ExtCtrls, Menus,
  IniFiles, Mask, StrUtils, Gauges;

CONST
    ncSIZE     = 9;
    cMaxCells = (ncSIZE * ncSIZE);
   //' Indexes to guesses we've already tried (hopefully not too many)
    ncGUESSEDMAX = 50;  //' arbitrary number
    CellColor = $00D9D9FF;

Type
   udtSQUARE = record              // could be smallint or byte rather than integers!
       Value:  Integer;            // ' 0=not set, else value 1..9
       Possibles: Array [1..ncSIZE] OF Integer;//    ' 1=possible, 0=not possible  -- use boolean!
       GuessLevel:  Integer;       //  ' 0=firm, else level of guess 1,2,3,...
       Given:       Boolean;       //  ' True if given in problem
       nRow:        Integer;       //  ' For fast lookup. Set by InitPuzzle
       nCol:        Integer;       //  ' ditto
       nBox:        Integer;       //  ' ditto
   end;

type
  TMainForm = class(TForm)
    ActionList: TActionList;
    StatusBar: TStatusBar;
    ActSolve: TAction;
    ActClearGrid: TAction;
    Panel1: TPanel;
    MainMenu: TMainMenu;
    MnuFile: TMenuItem;
    ActExit: TAction;
    MnuFileFadeOnExit: TMenuItem;
    Exit1: TMenuItem;
    N1: TMenuItem;
    ActOpenFile: TAction;
    ActSaveFile: TAction;
    Open1: TMenuItem;
    Save1: TMenuItem;
    OpenDlg: TOpenDialog;
    PanelMajorCells: TPanel;
    PanelCells: TPanel;
    EdtCell1: TMaskEdit;
    EdtCell2: TMaskEdit;
    EdtCell3: TMaskEdit;
    EdtCell10: TMaskEdit;
    EdtCell11: TMaskEdit;
    EdtCell12: TMaskEdit;
    EdtCell19: TMaskEdit;
    EdtCell20: TMaskEdit;
    EdtCell21: TMaskEdit;
    EdtCell28: TMaskEdit;
    EdtCell29: TMaskEdit;
    EdtCell30: TMaskEdit;
    EdtCell37: TMaskEdit;
    EdtCell38: TMaskEdit;
    EdtCell39: TMaskEdit;
    EdtCell46: TMaskEdit;
    EdtCell47: TMaskEdit;
    EdtCell48: TMaskEdit;
    EdtCell55: TMaskEdit;
    EdtCell56: TMaskEdit;
    EdtCell57: TMaskEdit;
    EdtCell64: TMaskEdit;
    EdtCell65: TMaskEdit;
    EdtCell66: TMaskEdit;
    EdtCell73: TMaskEdit;
    EdtCell74: TMaskEdit;
    EdtCell75: TMaskEdit;
    EdtCell7: TMaskEdit;
    EdtCell8: TMaskEdit;
    EdtCell9: TMaskEdit;
    EdtCell16: TMaskEdit;
    EdtCell17: TMaskEdit;
    EdtCell18: TMaskEdit;
    EdtCell25: TMaskEdit;
    EdtCell26: TMaskEdit;
    EdtCell27: TMaskEdit;
    EdtCell61: TMaskEdit;
    EdtCell62: TMaskEdit;
    EdtCell63: TMaskEdit;
    EdtCell70: TMaskEdit;
    EdtCell71: TMaskEdit;
    EdtCell72: TMaskEdit;
    EdtCell79: TMaskEdit;
    EdtCell80: TMaskEdit;
    EdtCell81: TMaskEdit;
    EdtCell34: TMaskEdit;
    EdtCell35: TMaskEdit;
    EdtCell36: TMaskEdit;
    EdtCell43: TMaskEdit;
    EdtCell44: TMaskEdit;
    EdtCell45: TMaskEdit;
    EdtCell52: TMaskEdit;
    EdtCell53: TMaskEdit;
    EdtCell54: TMaskEdit;
    EdtCell4: TMaskEdit;
    EdtCell5: TMaskEdit;
    EdtCell6: TMaskEdit;
    EdtCell13: TMaskEdit;
    EdtCell14: TMaskEdit;
    EdtCell15: TMaskEdit;
    EdtCell22: TMaskEdit;
    EdtCell23: TMaskEdit;
    EdtCell24: TMaskEdit;
    EdtCell58: TMaskEdit;
    EdtCell59: TMaskEdit;
    EdtCell60: TMaskEdit;
    EdtCell67: TMaskEdit;
    EdtCell68: TMaskEdit;
    EdtCell69: TMaskEdit;
    EdtCell76: TMaskEdit;
    EdtCell77: TMaskEdit;
    EdtCell78: TMaskEdit;
    EdtCell31: TMaskEdit;
    EdtCell32: TMaskEdit;
    EdtCell33: TMaskEdit;
    EdtCell40: TMaskEdit;
    EdtCell41: TMaskEdit;
    EdtCell42: TMaskEdit;
    EdtCell49: TMaskEdit;
    EdtCell50: TMaskEdit;
    EdtCell51: TMaskEdit;
    Panel3: TPanel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    Label17: TLabel;
    Label18: TLabel;
    Panel2: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    SaveDlg: TSaveDialog;
    ActReloadFile: TAction;
    Reload1: TMenuItem;
    ActPrintSolution: TAction;
    Print1: TMenuItem;
    N2: TMenuItem;
    MnuFileVisualize: TMenuItem;
    GgIterations: TGauge;
    GgDepth: TGauge;
    PanelGauges: TPanel;
    PanelDNo: TPanel;
    PaneliNo: TPanel;
    PaneliiNo: TPanel;
    PanelIterationsInfo: TPanel;
    PanelDDNo: TPanel;
    PanelDepthInfo: TPanel;
    Panel4: TPanel;
    Panel5: TPanel;
    Panel6: TPanel;
    Panel7: TPanel;
    Panel8: TPanel;
    Panel9: TPanel;
    BtnMySolve: TButton;
    Button1: TButton;
    Panel10: TPanel;
    GbxChoices: TGroupBox;
    LblRC: TLabel;
    PanelPossibleChoices: TPanel;
    PopUpCell: TPopupMenu;
    PopUpCellCheat: TMenuItem;
    ActCheat: TAction;
    Panel11: TPanel;
    Options1: TMenuItem;
    Reports1: TMenuItem;
    Cheat1: TMenuItem;
    ActUndo: TAction;
    Undo1: TMenuItem;
    procedure ActSolveExecute(Sender: TObject);
    procedure ActClearGridExecute(Sender: TObject);
    procedure ActExitExecute(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure MnuFileFadeOnExitClick(Sender: TObject);
    procedure ActOpenFileExecute(Sender: TObject);
    procedure ActSaveFileExecute(Sender: TObject);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure EdtCellChange(Sender: TObject);
    procedure EdtCellKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure EdtCellEnter(Sender: TObject);
    procedure ActReloadFileExecute(Sender: TObject);
    procedure ActPrintSolutionExecute(Sender: TObject);
    procedure MnuFileVisualizeClick(Sender: TObject);
    procedure PopUpCellCheatClick(Sender: TObject);
    procedure ActCheatExecute(Sender: TObject);
    procedure EdtCellExit(Sender: TObject);
    procedure EdtCellKeyPress(Sender: TObject; var Key: Char);
    procedure ActUndoExecute(Sender: TObject);
  private
    { Private declarations }
     Cheating:          Boolean;
     CheatingForCellNo: Integer;
     LastSudokuFile:    String;
     LoadingORSolving: Boolean;
     VisualDelay:      Integer;
     mnGuessLevel:     Integer;  // Global level at which we're guessing (0=firm)
     rIterations, rDepth, rMaxDepth: Integer;
     UndoStr:          String;
     Function  CheatCellIndex(idx:Integer):Integer;
     Function  GetCellIndex(edtName:String):Integer;
     Function  GetWindowsDirectory(): string;
     Function  GetUserName(): string;
     function  PopUndoStack():String;
     Function  SquaresToString():String;
     procedure GetIniSettings();
     procedure LoadCellHints();
     procedure ClearCellHints();
     procedure ClearUndoStack();
     procedure PushUndoStack(s:String);
     procedure PutIniSettings();
     Procedure ReloadSqauresFromString(gridStr:String);
     Procedure ReloadGridFromString(gridStr:String);
     Procedure LoadFile(fn:String);
     Procedure UserMessage(msg:String);
  public
    { Public declarations }
     ExeBaseName:            String;
     ExeDirPath:             String;
     UserID:                 String;
     WinDirPath:             String;
     GridSudoku:             TList;
     Squares: Array [1..(ncSIZE * ncSIZE)] of udtSQUARE; // Store matrix in a linear array
     Guessed: Array [1..ncGUESSEDMAX] of  Integer;
     mnDifficulty: Integer;         //' Difficulty level
//   Function AlreadyGuessed(idx:Integer):Boolean;
     Function CountPossibles(idx:Integer):Integer;
//   Function FindMinPossibles():Integer;
     Function GetIndex(iRow, iCol:Integer):Integer;
     Function GetRow(idx:Integer):Integer;
     Function GetCol(idx:Integer):Integer;
     Function GetBox(idx:Integer):Integer;
     Function GridToString():String;
     Function InThisCol(TheValue, Idx:Integer):Boolean;
     Function InThisRow(TheValue, Idx:Integer):Boolean;
     Function InThisBox(TheValue, Idx:Integer):Boolean;
     Function IsDataOK():Integer;
     Function MissingValues():Integer;
     Function PossiblesInBox(TheValue, nBox:Integer; VAR FoundAt:Integer):Integer;
     Function PossiblesInCol(TheValue, nCol:Integer; VAR FoundAt:Integer):Integer;
     Function PossiblesInRow(TheValue, nRow:Integer; VAR FoundAt:Integer):Integer;
     Function ReadInput():Integer;
//   Function SetSquareRC(iValue,iRow,iCol:Integer; IsGiven:Boolean):Boolean;
     Function TheNthPossible(idx, nth:Integer):Integer;
     Function ThePossible(idx:Integer):Integer;
     Function TryEachBox():Boolean;
     Function TryEachCol():Boolean;
//   Function TryGuess():Boolean;
     Function TryEachRow():Boolean;
//   Function TrySolve():Boolean;
     Function SetKnownValues():Boolean;
     Function SetSquare(iValue, Idx:Integer):Boolean;
//
//   Procedure DoPuzzle();
     Procedure FillInResults();
     Procedure InitPuzzle();
//   Procedure UndoGuess(Lvl:Integer);
//
     Function  CellWithLowestPossibles():Integer;
     Function  GetSquare(Idx:Integer):Integer;
     Function  SolveThePuzzle():Integer;
     Function  MYMissingValues():Integer;
     Procedure MYDoPuzzle();
     Procedure SetAllKnownCells();
  end;

var
  MainForm: TMainForm;

implementation

uses SplashScr, QRGridSolution;

{$R *.dfm}

Procedure TMainForm.UserMessage(msg:String);
begin
//   MemoUserMessages.Lines.Add(msg);
end;



procedure TMainForm.FormCreate(Sender: TObject);
var
     AComponent: TComponent;
     i:          Integer;
Begin
   ShortDateFormat            := 'mm/dd/yyyy';
   LoadingORSolving           := False;
   Cheating                   := False;
   CheatingForCellNo          := 0;
   ExeDirPath                 := IncludeTrailingPathDelimiter(ExtractFilePath(paramStr(0)));
   ExeBaseName                := ExtractFileName(paramStr(0));
   ExeBaseName                := ChangeFileExt(ExeBaseName, '');
   statusbar.panels[0].text   := ExeBaseName;
   statusbar.panels[1].text   := '';
   UserID                     := GetUserName();
   statusbar.panels[2].text   := UserID;
   ClearUndoStack();
   GetIniSettings;
   GridSudoku                 := TList.Create;
   GridSudoku.Clear;
   GridSudoku.Add(EdtCell1); // set up a dummy for index[0]
// setup the array of cells/conrols (control Array)
   for i := 1 to cMaxCells do begin
      AComponent := FindComponent('EdtCell'+IntToStr(i)) ;
      if Assigned(AComponent) then begin
         GridSudoku.Add(TMaskEdit(AComponent));
         TMaskEdit(AComponent).PopupMenu  := PopUpCell;  // manually set popmenu
      end;
   end; //for
   InitPuzzle();
   LoadCellHints();
end;

procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
VAR
     i, cavb:    0..255;
     j:          Integer;
begin
   PutIniSettings;
   GridSudoku.Clear;
   GridSudoku.Free;
   if MnuFileFadeOnExit.Checked then begin
      if AlphaBlend=False then begin
         AlphaBlendValue:=255;
         AlphaBlend:=True;
      end;
      cavb:=AlphaBlendValue;
      i := cavb;
      J := cavb;
      While j > 0 do begin
        AlphaBlendValue := i;
        Application.ProcessMessages;
        i := i - 10;
        j := j - 10;
      end
   end;
end;


procedure TMainForm.ActExitExecute(Sender: TObject);
begin
   close;
   Application.Terminate;
end;




procedure TMainForm.ActPrintSolutionExecute(Sender: TObject);
VAR
   rp:          TQPGridSolution;
   TmpWS:       TWindowState;
   h:           Integer;
begin
    TmpWS            := WindowState;
      WindowState      := wsMinimized;
      rp               := TQPGridSolution.Create(Self);
      TRY
         rp.ReportTitle := 'SUDOKUGRID';
         rp.PreviewInitialState  := wsNormal;
         h  := Screen.Height - 30;
         rp.PreviewHeight        := h;
//       ratio for a 8.5 x 11 inch sheet of paper
         rp.PreviewWidth         := Trunc(h * 0.75);
//         rp.lblCell1.Caption     := '9';
         rp.Preview;
      finally
         WindowState  := tmpWS;
         rp.Free;
      end;
end;



function TMainForm.GetUserName(): string;
var
   pUserName : PChar;         //holds the user name
   cUserNameSize : Cardinal;  //holds the size of the user name
begin
  //retrieve the required size of the user name buffer
  cUserNameSize := 0;
  windows.GetUserName(nil, cUserNameSize);
  //allocate memory for the user name
  pUserName := StrAlloc(cUserNameSize);
  //retrieve the user name
  if windows.GetUserName(pUserName,cUserNameSize) then
    Result := pUserName
  else begin
    Result := '';
  end;
  //dispose of allocated memory
  StrDispose(pUserName);
end;


function TMainForm.GetWindowsDirectory(): string;
var
   myStr:  Array[0..256] of Char;
Begin
   Windows.GetWindowsDirectory(myStr,SizeOf(myStr));
   Result  := myStr;
   Result  := IncludeTrailingPathDelimiter(Result);
end;




// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
//                                sudoku routines                 begin
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
// Returns no of possibles for This Value in this col

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
丝袜美腿成人在线| 色8久久精品久久久久久蜜 | 日韩激情视频在线观看| 一区二区三区资源| 一色桃子久久精品亚洲| 中文字幕免费一区| 欧美经典三级视频一区二区三区| 久久亚洲综合色一区二区三区| 欧美本精品男人aⅴ天堂| 日韩一区二区三区视频在线| 日韩精品一区二区三区在线| 欧美草草影院在线视频| 精品免费一区二区三区| 精品成人a区在线观看| 精品福利一二区| 久久久久久久久久久久电影 | 日韩电影免费在线看| 日本最新不卡在线| 精品制服美女久久| 国产九色精品成人porny| 福利91精品一区二区三区| 丁香啪啪综合成人亚洲小说 | 中文字幕欧美一| 伊人一区二区三区| 午夜久久久久久久久| 日韩和欧美一区二区三区| 久久精品国产一区二区| 国产精品一区二区久激情瑜伽| 成人国产精品视频| 欧美艳星brazzers| 精品国产区一区| 国产精品久久久久久久岛一牛影视 | 成人午夜免费电影| 色呦呦网站一区| 91麻豆精品国产综合久久久久久 | 蜜乳av一区二区| 欧洲一区在线观看| 91精品国产色综合久久不卡电影| 精品美女在线播放| 中文字幕一区二| 日韩av网站在线观看| 国产精品一区二区三区99| 91天堂素人约啪| 欧美一级视频精品观看| 国产农村妇女精品| 亚洲国产乱码最新视频| 狠狠网亚洲精品| 色狠狠色噜噜噜综合网| 欧美成人性福生活免费看| 18成人在线观看| 免费欧美高清视频| av在线播放成人| 欧美一级午夜免费电影| 亚洲视频在线观看三级| 蜜桃久久精品一区二区| 97se亚洲国产综合自在线不卡| 欧美一区二区三区在| 国产精品美女久久福利网站| 日本视频一区二区| thepron国产精品| 欧美一区二区三区爱爱| 亚洲天堂免费看| 国产真实乱偷精品视频免| 在线观看91视频| 中文一区二区在线观看| 日韩精品91亚洲二区在线观看| 成人黄色小视频| 精品少妇一区二区三区视频免付费| 亚洲另类在线制服丝袜| 国产一区二区福利视频| 欧美日韩免费在线视频| 中文字幕日韩欧美一区二区三区| 久久国产精品一区二区| 欧美性极品少妇| 中文字幕亚洲区| 豆国产96在线|亚洲| 日韩欧美国产系列| 亚洲va欧美va天堂v国产综合| bt7086福利一区国产| 欧美精品一区二区三区蜜桃| 日韩精彩视频在线观看| 欧美性极品少妇| 亚洲色图.com| 成人av免费在线观看| 日韩精品专区在线| 日本少妇一区二区| 5858s免费视频成人| 亚洲黄色录像片| 北条麻妃一区二区三区| 国产嫩草影院久久久久| 国产精品 欧美精品| 日韩欧美卡一卡二| 蜜臀久久99精品久久久久宅男| 欧美少妇bbb| 亚洲第四色夜色| 91久久香蕉国产日韩欧美9色| 国产欧美日本一区二区三区| 国产原创一区二区| 欧美成人aa大片| 精品一区二区三区的国产在线播放 | 大尺度一区二区| 久久久久久久久久久黄色| 国产美女娇喘av呻吟久久| 久久综合网色—综合色88| 久草这里只有精品视频| 精品日韩一区二区三区| 日本不卡在线视频| 日韩三级视频中文字幕| 青青草国产精品97视觉盛宴| 91精品蜜臀在线一区尤物| 视频一区视频二区中文| 欧美精品一二三四| 日本亚洲三级在线| 日韩免费高清视频| 国产精品综合在线视频| 国产欧美日本一区二区三区| 成人网男人的天堂| 亚洲色图欧美偷拍| 色综合天天视频在线观看| 一区二区三区精密机械公司| 欧美综合亚洲图片综合区| 亚洲国产一区二区三区青草影视| 欧美性受xxxx黑人xyx性爽| 亚洲不卡在线观看| 欧美一卡2卡三卡4卡5免费| 久久国产视频网| 久久久电影一区二区三区| 9人人澡人人爽人人精品| 亚洲精品视频一区| 欧美丰满美乳xxx高潮www| 免费观看91视频大全| 26uuu成人网一区二区三区| 国产不卡在线播放| 亚洲精品福利视频网站| 欧美日韩aaaaa| 国产在线精品一区二区夜色| 中文字幕成人av| 欧美性欧美巨大黑白大战| 蜜臀精品久久久久久蜜臀| 久久久精品影视| 欧美三级视频在线| 国内久久婷婷综合| 亚洲欧美激情在线| 91精品国模一区二区三区| 国产乱码精品1区2区3区| 亚洲女子a中天字幕| 日韩午夜精品电影| 成人精品高清在线| 日韩影院精彩在线| 日本一区二区三区电影| 欧美午夜精品电影| 国产盗摄视频一区二区三区| 一区二区三区四区视频精品免费| 日韩亚洲欧美中文三级| 不卡的电影网站| 强制捆绑调教一区二区| 中文字幕欧美国产| 欧美一级淫片007| 91玉足脚交白嫩脚丫在线播放| 美女一区二区三区| 亚洲同性gay激情无套| 欧美一二三四在线| 91视视频在线直接观看在线看网页在线看| 日韩成人dvd| 亚洲欧美日韩中文字幕一区二区三区| 日韩精品资源二区在线| 91黄色免费版| 国产精品白丝av| 日韩国产欧美在线播放| 国产精品女人毛片| 日韩精品一区二区三区swag | 1024国产精品| 精品剧情v国产在线观看在线| 色婷婷av一区二区三区之一色屋| 精品一区二区三区免费观看| 亚洲 欧美综合在线网络| 欧美国产精品一区二区| 欧美一二区视频| 欧美日韩一区二区在线观看| 成人免费av在线| 韩国精品久久久| 日韩电影在线一区二区三区| 亚洲免费观看高清完整版在线观看| 久久免费看少妇高潮| 538在线一区二区精品国产| 99re视频精品| 东方aⅴ免费观看久久av| 久久精品噜噜噜成人av农村| 日韩中文字幕1| 亚洲一区二区三区中文字幕在线| 国产精品毛片久久久久久| 日韩欧美精品在线视频| 91精品国产日韩91久久久久久| 在线观看国产一区二区| 91免费看`日韩一区二区| 成人av午夜电影| 国产91丝袜在线播放0| 国产老妇另类xxxxx| 激情综合五月婷婷| 久久99久久久欧美国产|