NKXXGBPMUBFVEBTQAWPKWTQBAGXGLAZFTSJVYISLPCFNEB3W32NAC unit SysRandom;interfaceprocedure Randomize;implementation{$ifdef UNIX}procedure Randomize;constRandomDeviceName = '/dev/urandom';varRandomNumber: Cardinal;RandomReader: File of Cardinal;beginAssign(RandomReader, RandomDeviceName);{$push}{turn off runtime error gen}{$IOChecks off}Reset(RandomReader);if IOResult() = 0 thenbeginWriteLn('opened');Read(RandomReader, RandomNumber);if IOResult() = 0 thenbeginSystem.RandSeed := RandomNumber;Close(RandomReader);endelse System.Randomize;end{$pop}elsebeginSystem.Randomize;end;end;{$else}procedure Randomize;beginSystem.Randomize;end;{$endif}end.
TCell = (Empty, Bomb);TField = recordCells: array of TCell;Rows: Integer;Cols: Integer;end;
TCell = (Empty, Bomb);TField = recordCells: array of TCell;Open: array of Boolean;Rows: Integer;Cols: Integer;end;function FieldGet(Field: TField; Row, Col: Integer): TCell;beginFieldGet := Field.Cells[Row * Field.Cols + Col];end;
Field.Cells[Row * Field.Cols + Col] := Cell;
Field.Cells[Row * Field.Cols + Col] := Cell;end;procedure FieldResize(var Field: TField; Rows, Cols: Integer);beginSetLength(Field.Cells, Rows * Cols);SetLength(Field.Open, Rows * Cols);Field.Rows := Rows;Field.Cols := Cols;
WriteLn('hello world')
Row := Random(Field.Rows);Col := Random(Field.Cols);FieldRandomCell := FieldGet(Field, Row, Col);end;procedure FieldRandomize(var Field: TField; BombsPercentage: Integer);varIndex, BombsCount: Integer;Row, Col: Integer;beginfor Index := 0 to Field.Rows * Field.Cols dobeginField.Cells[Index] := Empty;Field.Open[Index] := False;end;if BombsPercentage > 100 then BombsPercentage := 100;BombsCount := (Field.Rows * Field.Cols * BombsPercentage + 99) div 100;for Index := 1 to BombsCount dobeginwhile FieldRandomCell(Field, Row, Col) = Bomb do ;FieldSet(Field, Row, Col, Bomb);end;end;function FieldCountNeighbors(Field: TField; Row, Col: Integer): Integer;varDRow, DCol: Integer;Cell: TCell;beginFieldCountNeighbors := 0;for DRow := -1 to 1 dofor DCol := -1 to 1 doif (DRow <> 0) or(DCol <> 0) thenbeginif FieldGetChecked(Field, Row + DRow, Col + DCol, Cell) thenif Cell = Bomb thenInc(FieldCountNeighbors);end;end;procedure FieldWrite(Field: TField);varRow, Col, Neighbors: Integer;beginfor Row := 0 to Field.Rows - 1 dobeginfor Col := 0 to Field.Cols - 1 dobeginWrite(' ');if FieldIsOpen(Field, Row, Col) thencase FieldGet(Field, Row, Col) ofBomb: Write('*');Empty: beginNeighbors := FieldCountNeighbors(Field, Row, Col);if Neighbors > 0 then Write(Neighbors) else Write(' ');end;endelse Write('#');Write(' ');end;WriteLn;end;end;varMainField: TField;beginRandomize;FieldResize(MainField, 10, 10);FieldRandomize(MainField, 20);FieldSet(MainField, 0, 0, Bomb);FieldSet(MainField, 0, 1, Bomb);FieldWrite(MainField);
current_page=1FILE_NAME_0=203;Pascal;0;EUTF-8;1;1;0;%2Fhome%2Fkyle%2FDocuments%2Fmine%2Fmine.pas;0;4FILE_NAME_1=29;None;0;EUTF-8;1;1;0;%2Fhome%2Fkyle%2FDocuments%2Fmine%2F.ignore;0;4
current_page=0FILE_NAME_0=26;None;0;EUTF-8;1;1;0;%2Fhome%2Fkyle%2FDocuments%2Fmine%2F.ignore;0;4FILE_NAME_1=221;None;0;EUTF-8;1;1;0;%2Fhome%2Fkyle%2FDocuments%2Fmine%2F.editorconfig;0;4FILE_NAME_2=173;Pascal;0;EUTF-8;0;1;0;%2Fhome%2Fkyle%2FDocuments%2Fmine%2Fsysrandom.pas;0;2FILE_NAME_3=0;Pascal;0;EUTF-8;0;1;0;%2Fhome%2Fkyle%2FDocuments%2Fmine%2Fmine.pas;0;2FILE_NAME_4=26;Make;0;EUTF-8;1;1;0;%2Fhome%2Fkyle%2FDocuments%2Fmine%2Fmakefile;0;8
.PHONY: allall:fpc mine.pas
root = true[*]indent_style = spaceindent_size = 4trim_trailing_whitespace = trueinsert_final_newline = truecharset = utf-8[*.pas]indent_style = spaceindent_size = 2[makefile]indent_style = tabindent_size = 8