| 
| Autor | Beitrag |  
| Janine Hält's aus hier
 Beiträge: 11
 
 
 
 
 | 
Verfasst: Mo 22.01.07 18:22 
 
Hallo! Ich haoffe das mein eintrag hier einbisschen reinpasst,ich habe das nämlich noch nicht so ganz verstanden wo was hin muss.
 Muss für die schule Memory programmieren (was mir extrem schwer fällt, da ich eingentlich gar nicht programmieren kann)
 Könntet ihr mir zu beginn vielleicht dabei helfen wie ich Bilder in Panels einfügt?Das wäre mir schon einmal eine große hilfe.
 Danke schon malModeriert von  Christian S.: Topic aus Dateizugriff verschoben am Mo 22.01.2007 um 18:40 |  |  |  
| Blackheart666 
          Beiträge: 2195
 
 XP
 D3Prof, D6Pers.
 
 | 
Verfasst: Mo 22.01.07 18:36 
 
Um Bilder Anzuzeigen benutzte ein Image dem kannst Du dann im Objektinspektor unter Picture ein Bild zuweisen,
 oder auch zur Laufzeit laden.
 		                       Delphi-Quelltext 
 									| 1:2:
 3:
 4:
 
 | procedure TForm1.Button1Click(Sender: TObject);begin
 Image1.Picture.LoadFromFile('C:\MeinBild.bmp');
 end;
 | _________________Blackheart666 Der Irrsinn ist bei Einzelnen etwas Seltenes, - aber bei Gruppen, Parteien, Völkern, Zeiten die Regel. (Friedrich Nietzsche)
 |  |  |  
| Janine  Hält's aus hier
 Beiträge: 11
 
 
 
 
 | 
Verfasst: Mo 22.01.07 18:43 
 
das problem ist,dass ich mir das ganze so gedacht habe,dass ich auf das panel draufklicken kann,damit es sich umdreht,wie bei einem richtigen Memory die karten (auch wenn ich keine ahnung habe wie ich das machen soll). wenn ich das ganze in ein image feld mache dann kann ich es ja nicht anklicken,damit es sich umdreht,oder? |  |  |  
| Blackheart666 
          Beiträge: 2195
 
 XP
 D3Prof, D6Pers.
 
 | 
Verfasst: Mo 22.01.07 18:47 
 
Du kannst zb. die Rückseite im OI zuweisen, und bei Klick aufs Image das entsprechende zweite Bild laden. _________________Blackheart666 Der Irrsinn ist bei Einzelnen etwas Seltenes, - aber bei Gruppen, Parteien, Völkern, Zeiten die Regel. (Friedrich Nietzsche)
 |  |  |  
| Janine  Hält's aus hier
 Beiträge: 11
 
 
 
 
 | 
Verfasst: Mo 22.01.07 18:51 
 
schon mal danke.
Hättest du aber vielleicht auch einen tipp für mich wie ich die Bilder durch einen Zufallsgenerator den Feldern dann zuweisen kann?Also das jedes Feld ein anderes Bild bekommt?
 |  |  |  
| Janine  Hält's aus hier
 Beiträge: 11
 
 
 
 
 | 
Verfasst: Mo 22.01.07 19:02 
 
ich befürchte du müsstest mir deinen Vorschlag doch noch mal genauer erklären.hab grad bei genauerem überlegen festgestellt,dass ich nichts weiß wie ich das machen muss.Sorry aber ich brauch da echt länger um so was dann auch umsetzten zu können.meine Programme funktionieren eher aus Glück |  |  |  
| Blackheart666 
          Beiträge: 2195
 
 XP
 D3Prof, D6Pers.
 
 | 
Verfasst: Mo 22.01.07 19:26 
 
Schau Dir mal das an, vieleicht kommst du damit weiter.
www.bildung.hessen.d...phi/memory/index.htm_________________Blackheart666 Der Irrsinn ist bei Einzelnen etwas Seltenes, - aber bei Gruppen, Parteien, Völkern, Zeiten die Regel. (Friedrich Nietzsche)
 |  |  |  
| Roadrunner116 
          Beiträge: 89
 
 Win XP Home, Ubuntu Linux 6.06
 Delphi 7, Java, PHP
 
 | 
Verfasst: Mo 22.01.07 20:22 
 
Nimm eine normale Picture Komponente (und benenn sie Karte1 oder ähnlich)!
 Mach mehrere Karten (Karte1, Karte2, ....Karte10), halt so viele wie benötigt!
 Dieser weist du ein BIld für eine verdeckte Karte zu!
 Wenn du darauf klickst sagst du dem Programm:
 		                       Delphi-Quelltext 
 									| 1:
 | Karte1.Picture.LoadFromFile('Pfad');					 |  Zu dem Problem mit dem zufälligen Bildern....
 Ich hab jetzt keie 100%ige Lösung, aber ich würde jedem bild eine Nummer zuweisen (1,2,3,...,10), soviele wie auch karten da sind!
 Würde dann ne Schleife bauen, in der die Zahlen von 1-10 (nur ein Beispiel, kannst auch mehr oder weniger nehmen) zufällig anngeordnet und in eine Variable gespeichert werden (KartenBild, oder so -> Integer)!
 Danach weist du nacheinander jeder Karte ein bild zu, das ginge dann vielleicht so:
 		                       Delphi-Quelltext 
 									| 1:
 | Karte1.Picture.LoadFromFile('C:\Programme\Memmory\Bilder\' + KartenBild + '.jpg');					 |  und nicht vergessen! wenn du ein jpeg bild laden willst:
 JPEG in der Uses-Liste mit anführen!!!
 Ich hoffe ich verwirre dich net, frag einfach nochmal, wenn du etwas nicht verstehst...!
 Oder hat jemand eine bessere Idee? |  |  |  
| Janine  Hält's aus hier
 Beiträge: 11
 
 
 
 
 | 
Verfasst: Sa 27.01.07 14:56 
 
Ich hab mir gedacht das ich das auch mit einem Feld machen könnte. dort kann ich ja dann am einfachsten Zahlen vertauschen.Jedoch weiß ich noch nicht so genau wie ich dann wenn ich auf die Buttons drücke (die dann verschwinden und mein image Felde zum vorschein kommt) den Zahlen die bilder zuordne. Bis jetzt wird beim form create das Feld erzeugt und  mein Start Button sieht so aus procedure 
TForm1.Button23Click(Sender: TObject);
 var i:integer ;
 begin
 timer1.enabled:=true;
 for i= 0 to 19 do
 begin
 meinFeld[i]:=(i+2)mod19;
 end;
 end;
 Jedoch weiß ich jetzt nicht wie ich das ganze ausgebe.
 Ich hoffe ihr versteht mein Problem irgendwie
 |  |  |  
| jaenicke 
          Beiträge: 19326
 Erhaltene Danke: 1749
 
 W11 x64 (Chrome, Edge)
 Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
 
 | 
Verfasst: Sa 27.01.07 15:20 
 
Ich würde folgendes vorschlagen:
 Du nimmst dir ein Array mit sovielen Einträgen wie du Bilder hast. Darein packst du immer der Reihe nach per Schleife die Zahlen zu den Bildern. Du hast z.B. img01.jpg, img02.jpg, ...
 Und in das Array packst du also (1, 1, 2, 2, 3, 3, ...). Jede Karte kommt ja zweimal vor. Mit mod geht das ja ganz gut.
 Dann nimmst du Miller-Yates um die zu mischen:
www.delphi-forum.de/...c.php?t=58154#348095 Und schließlich lädst du die Bilder entsprechend des Arrray-Inhalts, so sieht das also grob aus:
 		                       Delphi-Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 17:
 18:
 19:
 20:
 21:
 
 | vari: Integer;
 Cards: array of Integer;
 begin
 SetLength(Cards, 10);
 for...
 Cards[i] :=
 
 
 for i := 0 to High(Cards) do
 if Cards[i] < 10 then
 TImage(FindComponent('imgCard0' + IntToStr(Cards[i]))).Picture.LoadFromFile(
 'img0' + IntToStr(Cards[i]) + '.jpg')
 else
 TImage(FindComponent('imgCard' + IntToStr(Cards[i]))).Picture.LoadFromFile(
 'img' + IntToStr(Cards[i]) + '.jpg');
 end;
 |  Hiermit würden jetzt alle angezeigt, das ist nur ein Beispiel. In Wirklichkeit muss dein Array global deklariert werden (also nicht lokal in der Funktion selbst) und du musst bei einem Klick genau die Karte "umdrehen", d.h. das entsprechende Bild laden.
 Dafür noch ein paar Tipps:
 1. könntest du die Bilder in FormCreate zur Laufzeit erzeugen
 2. gibt es die Eigenschaft Tag bei jedem Bild, womit du eine Klick-Routine für alle Bilder nehmen kannst, wenn du da den Array-Index reintust:
 		                       Delphi-Quelltext 
 									| 1:
 |   Cards[TImage(Sender).Tag]					 |  wäre dann der Eintrag im Array, der zu dem TImage gehört auf das gerade geklickt wurde.
 Ja, und jetzt lasse ich dir mal erstmal Zeit für Fragen...    // EDIT Picture. im Quelltext vergessen... ergänzt. 
 Zuletzt bearbeitet von jaenicke am Sa 27.01.07 15:53, insgesamt 1-mal bearbeitet
 |  |  |  
| Janine  Hält's aus hier
 Beiträge: 11
 
 
 
 
 | 
Verfasst: Sa 27.01.07 15:37 
 
ok noch mal von vorne,so viel hab ich nit wirklich verstanden.
  also mein ganzes Programm sieht im moment grad mal so aus
 												| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 17:
 18:
 19:
 20:
 21:
 22:
 23:
 24:
 25:
 26:
 27:
 28:
 29:
 30:
 31:
 32:
 33:
 34:
 35:
 36:
 37:
 38:
 39:
 40:
 41:
 42:
 43:
 44:
 45:
 46:
 47:
 48:
 49:
 50:
 51:
 52:
 53:
 54:
 55:
 56:
 57:
 58:
 59:
 60:
 61:
 62:
 63:
 64:
 65:
 66:
 67:
 68:
 69:
 70:
 71:
 72:
 73:
 74:
 75:
 76:
 77:
 78:
 79:
 80:
 81:
 82:
 83:
 84:
 85:
 86:
 87:
 88:
 89:
 90:
 91:
 92:
 93:
 94:
 95:
 96:
 97:
 98:
 99:
 100:
 101:
 102:
 103:
 104:
 105:
 106:
 107:
 108:
 109:
 110:
 111:
 112:
 113:
 114:
 115:
 116:
 117:
 118:
 119:
 120:
 121:
 122:
 123:
 124:
 125:
 126:
 127:
 128:
 129:
 130:
 131:
 132:
 133:
 134:
 135:
 136:
 137:
 138:
 139:
 140:
 141:
 142:
 143:
 144:
 145:
 146:
 147:
 148:
 149:
 150:
 151:
 152:
 153:
 154:
 155:
 156:
 157:
 158:
 159:
 160:
 161:
 162:
 163:
 164:
 165:
 166:
 167:
 168:
 169:
 170:
 171:
 172:
 173:
 174:
 175:
 176:
 177:
 178:
 
 | unit Unit1;
 interface
 
 uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 StdCtrls, ExtCtrls,Spielleiter,Konto,Stoppuhr,karten, jpeg;
 
 type
 
 
 TForm1 = class(TForm)
 Label1: TLabel;
 Label2: TLabel;
 Label3: TLabel;
 Panel26: TPanel;
 Timer1: TTimer;
 Panel25: TPanel;
 Panel27: TPanel;
 Panel28: TPanel;
 Image1: TImage;
 Image2: TImage;
 Image3: TImage;
 Image4: TImage;
 Image5: TImage;
 Image6: TImage;
 Image7: TImage;
 Image8: TImage;
 Image9: TImage;
 Image10: TImage;
 Image11: TImage;
 Image12: TImage;
 Image13: TImage;
 Image14: TImage;
 Image15: TImage;
 Image16: TImage;
 Image17: TImage;
 Image18: TImage;
 Image19: TImage;
 Image20: TImage;
 Button1: TButton;
 Button2: TButton;
 Button3: TButton;
 Button4: TButton;
 Button5: TButton;
 Button6: TButton;
 Button7: TButton;
 Button8: TButton;
 Button9: TButton;
 Button10: TButton;
 Button11: TButton;
 Button12: TButton;
 Button13: TButton;
 Button14: TButton;
 Button15: TButton;
 Button16: TButton;
 Button17: TButton;
 Button18: TButton;
 Button19: TButton;
 Button20: TButton;
 Button21: TButton;
 Button22: TButton;
 Label4: TLabel;
 Panel1: TPanel;
 Button23: TButton;
 procedure Button1Click(Sender: TObject);
 procedure Button21Click(Sender: TObject);
 procedure FormCreate(Sender: TObject);
 procedure Button22Click(Sender: TObject);
 procedure Button23Click(Sender: TObject);
 procedure Timer1Timer(Sender: TObject);
 
 
 private
 
 public
 
 end;
 TFeld=Array[0..19]  of integer;
 
 
 var
 Form1: TForm1;
 K:TKonto;
 uhr:Tstoppuhr;
 ka:Tkarte;
 meinFeld:TFeld ;
 implementation
 
 {$R *.DFM}
 
 procedure TForm1.Button1Click(Sender: TObject);
 var betrag:integer;
 Schritte,i:integer;
 begin
 (Sender as TButton).Visible:=false;
 image1.picture:= (i) ;
 image2.picture:=picturea[2];
 image3.picture:=picture a[3] ;
 image4.picture:=picture a[4];
 image15icture:=picture a[5] ;
 image6.picture:=picture a[6];
 image7.picture:=picture a[7] ;
 image8.picture:=picture a[8];
 image9.picture:=picture a[9] ;
 image10.picture:=picture a[10];
 image11.picture:=picture a[1] ;
 image12.picture:=picture a[2];
 image13.picture:=picture a[3] ;
 image14.picture:=picture a[4];
 image15.picture:=picture a[5] ;
 image16.picture:=picture a[6];
 image17.picture:=picture a[7] ;
 image18.picture:=picture a[8];
 image19.picture:=picture a[9] ;
 image20.picture:=picture a[10];
 
 
 
 
 
 k.abheben (betrag);
 ka.bestimmen (schritte);
 panel1.caption:=inttostr (ka.getzug);
 panel26.caption:=inttostr(k.getPunkte);
 
 end;
 
 procedure TForm1.Button21Click(Sender: TObject);
 begin
 close;
 end;
 
 procedure TForm1.FormCreate(Sender: TObject);
 var
 i:integer;
 begin
 for i:=0 to 19
 do meinFeld[i]:=i ;
 uhr:=TStoppuhr.create;
 K:=Tkonto.create (50);
 ka:=Tkarte.create (0);
 
 panel26.caption:=inttostr(k.getPunkte);
 panel1.caption:=inttostr(ka.getzug);
 
 end;
 
 procedure TForm1.Button22Click(Sender: TObject);
 begin
 uhr.stop;  timer1.enabled:= false;
 panel25.caption:=inttostr(uhr.getmin);
 panel27.caption:=inttostr(uhr.getsec);
 panel28.caption:=inttostr(uhr.getzsec);
 end;
 
 procedure TForm1.Button23Click(Sender: TObject);
 var i:integer ;
 begin
 timer1.enabled:=true;
 for i:=0 to 19 do
 begin
 meinFeld[i]:=(i+2);
 end;
 
 end;
 
 procedure TForm1.Timer1Timer(Sender: TObject);
 begin
 uhr.start;
 panel25.caption:=inttostr(uhr.getmin);
 panel27.caption:=inttostr(uhr.getsec);
 panel28.caption:=inttostr(uhr.getzsec);
 end;
 
 end.
 |  erst einmal müsstest du mir sagen wo ich das genau hinschreiben soll,ins form create oder in meinen start button.dann muss ich zugeben versteh ich das mit den karten füllen und der for schleife nicht. dort wird doch überprüft ob i kleiner 10 ist,wird dann für jedes i kleiner 10 das gleiche bild eingesetze?
Moderiert von  raziel: Delphi-Tags hinzugefügt |  |  |  
| jaenicke 
          Beiträge: 19326
 Erhaltene Danke: 1749
 
 W11 x64 (Chrome, Edge)
 Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
 
 | 
Verfasst: Sa 27.01.07 15:47 
 
	  |  Janine hat folgendes geschrieben: |  	  | erst einmal müsstest du mir sagen wo ich das genau hinschreiben soll,ins form create oder in meinen start button.dann muss ich zugeben versteh ich das mit den karten füllen und der for schleife nicht. dort wird doch überprüft ob i kleiner 10 ist,wird dann für jedes i kleiner 10 das gleiche bild eingesetze? | 
 Ich schreib mal ein kleines Beispiel mit ein paar Erklärungen. Dann siehst du wo was hinkommt und kannst dann anhand der Kommentare die fehlenden Teile weiterschreiben.    Was die Frage angeht: i läuft ja von 0 bis zur Größe des Arrays. Wenn es kleiner als 10 ist, also 0 bis 9, dann wird imgCards01 bis imgCards09 benutzt, danach imgCards10 bis ..., weil so die führende 0 genutzt werden kann, was das übersichtlicher macht.
 Aber da i ja nicht immer denselben Wert hat wird auch nicht immer das gleiche Bild benutzt. |  |  |  
| jaenicke 
          Beiträge: 19326
 Erhaltene Danke: 1749
 
 W11 x64 (Chrome, Edge)
 Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
 
 | 
Verfasst: Sa 27.01.07 16:15 
 
So, hier ein kleines Beispiel. Es funktioniert insoweit als die Karten auf- und zugedeckt werden... 
Einloggen, um Attachments anzusehen!
 |  |  |  |