![]() |
Bildarrays mit zusätzlichen Werten versehen
Hi,
ich schreibe gerade ein Programm über Black Jack und habe dazu Bildarrays verwendet, um die Spielkarten zufällig anzeigen zu lassen, dass klappt auch alles soweit. Jetzt muss ich aber den Arrays noch Werte zuordnen, um dem Spieler die aktuelle Augenzahl seiner Karten anzeigen zu lassen. Vorweg ich bin ein Neuling in Delphi und habe gerade erst mit Programmieren angefangen. Wie kann ich das umsetzen, dass den Bildarrays zusätzlich zu ihrem Dateipfad, auch noch Werte zugeordnet werden können? Quellcode:
Delphi-Quellcode:
PS: Wenn sich jemand wundert, warum ich immer noch direkte Pfade benutze, obwohl
procedure TForm1.FormCreate(Sender: TObject);
begin randomize; bildarray[1] :='data\Black Jack Karten\1_1_K.bmp'; bildarray[2] :='data\Black Jack Karten\1_2_Q.bmp'; bildarray[3] :='data\Black Jack Karten\1_3_J.bmp'; bildarray[4] :='data\Black Jack Karten\1_4_10.bmp'; bildarray[5] :='data\Black Jack Karten\1_5_9.bmp'; bildarray[6] :='data\Black Jack Karten\1_6_8.bmp'; bildarray[7] :='data\Black Jack Karten\1_7_7.bmp'; bildarray[8] :='data\Black Jack Karten\1_8_6.bmp'; bildarray[9] :='data\Black Jack Karten\1_9_5.bmp'; bildarray[10] :='data\Black Jack Karten\1_10_4.bmp'; bildarray[11] :='data\Black Jack Karten\1_11_3.bmp'; bildarray[12] :='data\Black Jack Karten\1_12_2.bmp'; bildarray[13] :='data\Black Jack Karten\1_13_A.bmp'; bildarray[14] :='data\Black Jack Karten\2_1_K.bmp'; bildarray[15] :='data\Black Jack Karten\2_2_Q.bmp'; bildarray[16] :='data\Black Jack Karten\2_3_J.bmp'; bildarray[17] :='data\Black Jack Karten\2_4_10.bmp'; bildarray[18] :='data\Black Jack Karten\2_5_9.bmp'; bildarray[19] :='data\Black Jack Karten\2_6_8.bmp'; bildarray[20] :='data\Black Jack Karten\2_7_7.bmp'; bildarray[21] :='data\Black Jack Karten\2_8_6.bmp'; bildarray[22] :='data\Black Jack Karten\2_9_5.bmp'; bildarray[23] :='data\Black Jack Karten\2_10_4.bmp'; bildarray[24] :='data\Black Jack Karten\2_11_3.bmp'; bildarray[25] :='data\Black Jack Karten\2_12_2.bmp'; bildarray[26] :='data\Black Jack Karten\2_13_A.bmp'; bildarray[27] :='data\Black Jack Karten\3_1_K.bmp'; bildarray[28] :='data\Black Jack Karten\3_2_Q.bmp'; bildarray[29] :='data\Black Jack Karten\3_3_J.bmp'; bildarray[30] :='data\Black Jack Karten\3_4_10.bmp'; bildarray[31] :='data\Black Jack Karten\3_5_9.bmp'; bildarray[32] :='data\Black Jack Karten\3_6_8.bmp'; bildarray[33] :='data\Black Jack Karten\3_7_7.bmp'; bildarray[34] :='data\Black Jack Karten\3_8_6.bmp'; bildarray[35] :='data\Black Jack Karten\3_9_5.bmp'; bildarray[36] :='data\Black Jack Karten\3_10_4.bmp'; bildarray[37] :='data\Black Jack Karten\3_11_3.bmp'; bildarray[38] :='data\Black Jack Karten\3_12_2.bmp'; bildarray[39] :='data\Black Jack Karten\3_13_A.bmp'; bildarray[40] :='data\Black Jack Karten\4_1_K.bmp'; bildarray[41] :='data\Black Jack Karten\4_2_Q.bmp'; bildarray[42] :='data\Black Jack Karten\4_3_J.bmp'; bildarray[43] :='data\Black Jack Karten\4_4_10.bmp'; bildarray[44] :='data\Black Jack Karten\4_5_9.bmp'; bildarray[45] :='data\Black Jack Karten\4_6_8.bmp'; bildarray[46] :='data\Black Jack Karten\4_7_7.bmp'; bildarray[47] :='data\Black Jack Karten\4_8_6.bmp'; bildarray[48] :='data\Black Jack Karten\4_9_5.bmp'; bildarray[49] :='data\Black Jack Karten\4_10_4.bmp'; bildarray[50] :='data\Black Jack Karten\4_11_3.bmp'; bildarray[51] :='data\Black Jack Karten\4_12_2.bmp'; bildarray[52] :='data\Black Jack Karten\4_13_A.bmp'; end; procedure TForm1.Spiel_startenClick(Sender: TObject); begin Spiel_starten.visible:=False; Karte2.visible:=True; stay.visible:=True; zufall1:=Random (52)+1; Image1.Picture.LoadFromFile(bildarray[zufall1]); Image5.Picture.LoadFromFile('data\Black Jack Karten\Karte_verdeckt.bmp'); end; procedure TForm1.Karte2Click(Sender: TObject); begin Karte2.visible:=False; Karte3.visible:=True; Repeat zufall2:=Random(52)+1; Until zufall3<zufall1; Image2.Picture.LoadFromFile(bildarray[zufall2]); end; procedure TForm1.Karte3Click(Sender: TObject); begin Karte3.visible:=False; Karte4.visible:=True; Repeat zufall3:=Random(52)+1; Until zufall3>zufall1; Image3.Picture.LoadFromFile(bildarray[zufall3]); end; procedure TForm1.Karte4Click(Sender: TObject); begin Karte3.visible:=False; Karte4.visible:=False; Repeat zufall4:=Random(52)+1 Until zufall4>zufall3; Image4.Picture.LoadFromFile(bildarray[zufall4]); end; es mir von vielen ans Herz gelegt wurde absolute Pfade zu benutzen, dann kann ich nur sagen, dass ich wie bereits gesagt ein Anfänger in Delphi bin und auch verstehen möchte was ich da zu "Papier" bringe, um mich in diesem Bereich weiterzubilden. Daher bitte ich um euer Verständnis. KING_OF_BONGO |
Re: Bildarrays mit zusätzlichen Werten versehen
Hallo,
du könntest Dir eine Record basteln welche diese Informationen bereithält.
Delphi-Quellcode:
type
TBildInfo = record pfad : AnsiString; ... end; TBildArray = array of TBildInfo; [edit] Zitat:
Grüße Klaus |
Re: Bildarrays mit zusätzlichen Werten versehen
Oder aus dem Record eine Klasse machen und in einer TObjectList verwalten. Funktionieren sollten beide Varianten.
|
Re: Bildarrays mit zusätzlichen Werten versehen
Da Klaus01 schneller war als ich hier noch eine kleine Ergänzung.
Für den Wert der Spielkarten könntest du einen eigenen Typ definieren:
Delphi-Quellcode:
So kannst du dann beispielsweise auf die einzelnen Werte zugreifen:
type TWert = (kwEins, kwZwei (* und so weiter*), kwAss);
Delphi-Quellcode:
Patti
BildArray[1].Pfad := 'Dein Pfad';
BildArray[1].KartenWert := kwKoenig; |
Re: Bildarrays mit zusätzlichen Werten versehen
ja, mit dem record hätte ich das jetzt auch gemacht. Im übrigen würde ich statt einem array eine Liste benutzen (tlist). Die ist einfacher zu handhaben, und du hast keine scherereinen mit dem speicher und mit der verwaltung, falls du irgendetwas änderts du löschst:
Delphi-Quellcode:
Das abrufen funktioniert genauso wie bei einem array:
type
TBildInfo = record pfad : AnsiString; wert: integer; //... end; Bilderliste = tlist; //(...) procedure karteninitialisieren; var karte:tbildinfo; begin bild.pfad:= 'data\Black Jack Karten\1_1_K.bmp'; bild.wert:= 14142; bilderliste.add(bild); bild.pfad:= 'data\Black Jack Karten\1_2_Q.bmp'; bild.wert:= 1352; bilderliste.add(bild); // usw.
Delphi-Quellcode:
bilderliste.items[1].pfad
bilderliste.items[1].wert |
Re: Bildarrays mit zusätzlichen Werten versehen
auch wenn hier welche schneller getippt haben (oder ich nur langsam bin) ...
nja, immerhin nochmal alles zusammen :angel: wie du siehst, kann man selbst mit absoluten Pfaden übersichtlicher arbeiten :angel:
Delphi-Quellcode:
type
TBildInfo = record Datei: String; ... end; TBildArray = array of TBildInfo; // dieses im Private-Abschnitt deiner Form definieren BildVerzeichnis: String; procedure TForm1.FormCreate(Sender: TObject); begin randomize; BildVerzeichnis := ExtractFilePath(Application.ExeName) + 'data\Black Jack Karten\'; bildarray[1].Datei :='1_1_K.bmp'; bildarray[2].Datei :='1_2_Q.bmp'; bildarray[3].Datei :='1_3_J.bmp'; bildarray[4].Datei :='1_4_10.bmp'; bildarray[5].Datei :='1_5_9.bmp'; bildarray[6].Datei :='1_6_8.bmp'; ... end; procedure TForm1.Spiel_startenClick(Sender: TObject); begin Spiel_starten.visible:=False; Karte2.visible:=True; stay.visible:=True; zufall1:=Random (52)+1; Image1.Picture.LoadFromFile(BildVerzeichnis + bildarray[zufall1]); Image5.Picture.LoadFromFile(BildVerzeichnis + 'Karte_verdeckt.bmp'); |
Re: Bildarrays mit zusätzlichen Werten versehen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:19 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