Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.653 Beiträge
Delphi 12 Athens
|
Re: Skatblatt darstellen durch Random?
10. Nov 2009, 19:23
Hier ein (nicht optimiertes) Beispiel (Formular enthält eine Listbox und einen Button, mehr nicht):
Delphi-Quellcode:
unit uKarten;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Contnrs;
const MAXINDEX = 31;
type
TKartenIndex = 0..MAXINDEX;
TKarte = class
private
FIndex: TKartenIndex;
function GetName: string;
public
constructor Create( Index: TKartenIndex);
property Name: string read GetName;
end;
TFrmKarten = class(TForm)
ListBoxBlatt: TListBox;
ButtonMischen: TButton;
procedure ButtonMischenClick(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
FrmKarten: TFrmKarten;
implementation
{$R *.dfm}
{ TKarte }
constructor TKarte.Create( Index: TKartenIndex);
begin
inherited Create;
FIndex := Index;
end;
function TKarte.GetName: string;
const Farben: array[0..3] of string = (' Karo', ' Herz', ' Pik', ' Kreuz');
Werte: array[0..7] of string = (' 7',' 8',' 9',' 10',' Bube',' Dame',' König',' As');
begin
Result := Format(' %s %s',[Farben[FIndex div 8],Werte[FIndex mod 8]]);
end;
procedure TFrmKarten.ButtonMischenClick(Sender: TObject);
var Buch, Blatt: TObjectList;
Karte: TKarte;
i: integer;
begin
Buch := TObjectList.Create(false);
try
for i := 0 to MAXINDEX do
begin
Karte := TKarte.Create(i);
Buch.Add(Karte);
end;
Blatt := TObjectList.Create;
try
repeat
i := Random(Buch.Count);
Blatt.Add(Buch[i]);
Buch.Delete(i);
until Buch.Count < 1;
for i := 0 to Blatt.Count - 1 do
ListBoxBlatt.Items.Add(TKarte(Blatt[i]). Name);
finally
Blatt.Free;
end;
finally
Buch.Free;
end;
end;
end.
[edit] Da muss natürlich noch ein Randomize ins OnCreate, hab ich vergessen. [/edit]
Detlef "Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
|
|
Zitat
|