AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Skatblatt darstellen durch Random?

Offene Frage von "Lotus"
Ein Thema von Lotus · begonnen am 9. Nov 2009 · letzter Beitrag vom 11. Nov 2009
Antwort Antwort
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.667 Beiträge
 
Delphi 12 Athens
 
#1

Re: Skatblatt darstellen durch Random?

  Alt 10. Nov 2009, 18: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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:07 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz