AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Bildarrays mit zusätzlichen Werten versehen
Thema durchsuchen
Ansicht
Themen-Optionen

Bildarrays mit zusätzlichen Werten versehen

Ein Thema von KING_OF_BONGO · begonnen am 1. Nov 2009 · letzter Beitrag vom 1. Nov 2009
Antwort Antwort
KING_OF_BONGO

Registriert seit: 29. Okt 2009
21 Beiträge
 
Delphi 5 Standard
 
#1

Bildarrays mit zusätzlichen Werten versehen

  Alt 1. Nov 2009, 13:44
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:
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;
PS: Wenn sich jemand wundert, warum ich immer noch direkte Pfade benutze, obwohl
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
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Bildarrays mit zusätzlichen Werten versehen

  Alt 1. Nov 2009, 13:47
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:
PS: Wenn sich jemand wundert, warum ich immer noch absolute Pfade benutze, obwohl
es mir von vielen ans Herz gelegt wurde direkte 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.
Du benutzt relative Pfade und solltest absolute benutzen.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

Re: Bildarrays mit zusätzlichen Werten versehen

  Alt 1. Nov 2009, 13:49
Oder aus dem Record eine Klasse machen und in einer TObjectList verwalten. Funktionieren sollten beide Varianten.
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
Benutzerbild von patti
patti

Registriert seit: 20. Okt 2004
Ort: Mittelfranken
665 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Bildarrays mit zusätzlichen Werten versehen

  Alt 1. Nov 2009, 13:52
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:

type TWert = (kwEins, kwZwei (* und so weiter*), kwAss); So kannst du dann beispielsweise auf die einzelnen Werte zugreifen:

Delphi-Quellcode:
BildArray[1].Pfad := 'Dein Pfad';
BildArray[1].KartenWert := kwKoenig;
Patti
Patrick Kreutzer
[Informatik-Student im 4. Semester]
http://www.patti-k.de/
  Mit Zitat antworten Zitat
Benutzerbild von vsilverlord
vsilverlord

Registriert seit: 7. Jan 2008
Ort: Baden Württemberg- Hohenlohekreis
174 Beiträge
 
RAD-Studio 2009 Arc
 
#5

Re: Bildarrays mit zusätzlichen Werten versehen

  Alt 1. Nov 2009, 13:57
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:
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.
Das abrufen funktioniert genauso wie bei einem array:
Delphi-Quellcode:
bilderliste.items[1].pfad
bilderliste.items[1].wert
Volker
~beware
Wizards First Rule:
People are stupid; given proper motivation, almost anyone will believe almost anything. Because people are stupid, they will believe a lie because they want to believe it’s true, or because they are afraid it might be true
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.053 Beiträge
 
Delphi 12 Athens
 
#6

Re: Bildarrays mit zusätzlichen Werten versehen

  Alt 1. Nov 2009, 13:58
auch wenn hier welche schneller getippt haben (oder ich nur langsam bin) ...
nja, immerhin nochmal alles zusammen

wie du siehst, kann man selbst mit absoluten Pfaden übersichtlicher arbeiten
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');
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

Re: Bildarrays mit zusätzlichen Werten versehen

  Alt 1. Nov 2009, 14:00
Zitat von vsilverlord:
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
Das gilt aber nur für TObjectList mit OwnsObjects auf true, ansonsten musst Du Dich selbst um den Speicher kümmern oder eine eigene Ableitung von TList schreiben.
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 18:51 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz