Thema: Delphi Mischen Funktion

Einzelnen Beitrag anzeigen

Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Mischen Funktion

  Alt 16. Sep 2004, 18:15
Hmm, finde den Fehler (da ist einer drin) grad nicht, evtl. siehst du ihn ja, aber so in der Art sollte es klappen:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    ListBox1: TListBox;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

const
  KartenAnzahl = 25;

var
  Form1: TForm1;
  Karten: array of integer;

implementation

{$R *.dfm}

//Die Zahlen Z1 und Z2 vertauschen
procedure Swap(var Z1, Z2: integer);
var Temp: integer;
begin
  Temp := Z1;
  Z1 := Z2;
  Z2 := Temp;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  randomize;
end;

procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
    KartenIndex1, KartenIndex2: integer;
begin
  SetLength(Karten, KartenAnzahl);

  //Array füllen
  for i := 1 to KartenAnzahl do
    Karten[i] := i;

  //Karten mischen:
  for i := 1 to 100 do //Anzahl der Vertauschdurchgänge
  begin
    KartenIndex1 := random(KartenAnzahl) + 1;

    repeat
      KartenIndex2 := random(KartenAnzahl) + 1;
    until
      KartenIndex2 <> KartenIndex1;

    Swap(Karten[KartenIndex1], Karten[KartenIndex2]);
  end;
end;



procedure TForm1.FormDestroy(Sender: TObject);
begin
  FreeAndNil(Karten);
end;

end.
  Mit Zitat antworten Zitat