Einzelnen Beitrag anzeigen

simonko

Registriert seit: 2. Jun 2005
125 Beiträge
 
#6

Re: Kartenspiel dynamische liste

  Alt 17. Jul 2005, 10:48
es geht immer noch nicht:
ich poste mal was ich biser alles geschrieben hab.


Delphi-Quellcode:
type
  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    Button1: TButton;
    Edit1: TEdit;
    Image1: TImage;
    Image2: TImage;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
     kortn : Timage;
  public
    { Public declarations }
  end;
  Tforb = (herz,oachel,lupsn,schell);
  Tschlog = (siebmor,ochtor,neiner,zehner,
              unter,ober,kinig,ass);
  Tzeiger = ^Tkortn;
  Tkortn = record
    forb : Tforb;
    schlog : Tschlog;
    next : Tzeiger;
  end;

var
  Form1: TForm1;
  spieler : Tzeiger; // Kortn fan spieler
  computer : Tzeiger; // Kortn fan pc
  stapel : Tzeiger; // Kortn in Stapel
  spiel : Tzeiger; // oiglege kortn
  stapelanz : integer; // verbleibende kortn



implementation

{$R *.dfm}

procedure initstapel;
var
  neu : Tzeiger;
    i : Tforb;
    j : Tschlog;
begin
  stapel:=nil;
  for i:=herz to schell do
   for j:=siebmor to ass do
    begin
      new(neu);
      neu^.next:=nil;
      neu^.forb:=i;
      neu^.schlog:=j;
      if (stapel=nil) then
        stapel:=neu
      else
        begin
          neu^.next:=stapel;
          stapel:=neu;
        end;
    end;
  stapelanz:=32;
end;

procedure sortieren;
var
  i,j,k : integer;
  p,hilf : Tzeiger;
begin
 randomize;
 p:=stapel;
 for i:=1 to 99999 do
   begin
     j:=random(30)+1;
     for k:=1 to j do
       begin
         hilf:=p;
         p:=p^.next;
       end;
     hilf^.next:=p^.next;
     p^.next:=p^.next^.next;
     hilf^.next^.next:=p;
     p:=stapel;
   end;
end;

procedure ausgeben;
begin
  if stapelanz>0 then
    form1.image2.Picture.LoadFromFile('C:\lol.jpg')
  else
    form1.image2.Picture.LoadFromFile('C:\lol2.jpg');
  form1.kortn:= TImage.Create(form1);
  form1.kortn.Parent:=form1;
  form1.kortn.Left:=100;
  form1.kortn.Top:=100;
  form1.kortn.Width:=100;
  form1.kortn.Height:=50;
  form1.kortn.Picture.LoadFromFile('C:\bild005.jpg');
end;

procedure kortengeben(var liste : Tzeiger;anz : integer);
var
  i : integer;
  p : Tzeiger;
begin
  liste:=stapel;
  p:=stapel;
  for i:=1 to anz do
    stapel:=stapel^.next;
  for i:=1 to (anz-1) do
    p:=p^.next;
  p^.next:=nil;
  stapelanz:=stapelanz-anz;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  initstapel;
  sortieren;
  kortengeben(spieler,5);
  kortengeben(computer,5);
  kortengeben(spiel,1);
  ausgeben;
end;

end.
  Mit Zitat antworten Zitat