![]() |
Kartenspiel dynamische liste
Ich mach grad ein kartenspiel und ich hab eine dynamische liste mit den karten für
spieler,computer und stapel; nun mein problem ist eigentlich nur das anzeigen der karten; ich geh jetzt die liste sequentiell durch und möchte die karten anzeigen. ich hab diese image komponente und in einen ordner meine karten als jpg. wie kann ich die karten aber anzeigen? image1.picture:= ?????? //wie kann ich den pfad angeben wo die karten liegen? dann müßte ich auch wissen ob man zur laufzeit neue image komponenten erstellen kann und plazieren kann. das wäre auch besser und leichter als schon im voraus plazierte images zu haben. ich bitte um hilfe danke im voraus MFG |
Re: Kartenspiel dynamische liste
Du könntest ein dynamisches Array aus TImage-Komponenten machen und das dann bei Bedarf vergrößern.
Wenn du die Karten-Bilder als JPEG vorliegen hast, dann binde die Unit JPEG in die uses ein und schreib
Delphi-Quellcode:
ImageArray[index].Picture.LoadFromFile(Dateiname);
|
Re: Kartenspiel dynamische liste
ich hab das jetzt versucht aber ich seh kein bild. es kommt keines.
hab das so gemacht:
Delphi-Quellcode:
kann ich als Pfad auch irgendsowas wählen dass er das bild im ornder sucht wo das program läuft`?
procedure ausgeben;
var kortn : Timage; begin kortn:= TImage.Create(form1); kortn.Parent:=form1; kortn.Left:=100; kortn.Top:=100; kortn.Width:=100; kortn.Height:=50; kortn.Picture.LoadFromFile('C:\bild005.bmp'); end; [edit=Sharky]Delphi-Tags gesetzt. Mfg, Sharky[/edit] |
Re: Kartenspiel dynamische liste
Zitat:
jedem Delphiprogramm wird als erster Parameter der Pfad inkl. des Namens der Exe übergeben. Daraus kannst Du dann den Pfad extrahieren. Das ganze kann z.B. so aussehen:
Delphi-Quellcode:
function GetAppPath : String;
begin result := ExtractFilePath(ParamStr(0)); end; procedure TForm1.Button1Click(Sender: TObject); var s : string; begin s := GetAppPath; ShowMessage(s); end; |
Re: Kartenspiel dynamische liste
in deinem beispiel ist kortn eine lokale variable, die nach beenden der procedure "im nirvana" verschwindet...
du musst sie global deklarieren, dann solte es genau so funktionieren, tuts bei mir. ich hab einfach nur die deklaration in den private teil der form getan... der vollständigkeit halber:
Delphi-Quellcode:
type
TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); private kortn : TImage; public { Public-Deklarationen } end; //####### procedure TForm1.Button1Click(Sender: TObject); begin kortn:= TImage.Create(form1); kortn.Parent:=form1; kortn.Left:=100; kortn.Top:=100; kortn.Width:=100; kortn.Height:=50; kortn.Picture.LoadFromFile('C:\StartLogo.bmp'); Button1.Enabled:=False;//Kein doppeltes Create, musst du anders realisieren end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin kortn.Free; //Freigeben!!! end; |
Re: Kartenspiel dynamische liste
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. |
Re: Kartenspiel dynamische liste
ich hab den fehler gefunden ich hatte so ein schei*** group box davor der das alles verdeckte
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:14 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