Autor Beitrag
Janine
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Mo 22.01.07 19: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 mal


Moderiert von user profile iconChristian S.: Topic aus Dateizugriff verschoben am Mo 22.01.2007 um 18:40
Blackheart666
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2195

XP
D3Prof, D6Pers.
BeitragVerfasst: Mo 22.01.07 19:36 
Um Bilder Anzuzeigen benutzte ein Image dem kannst Du dann im Objektinspektor unter Picture ein Bild zuweisen,
oder auch zur Laufzeit laden.
ausblenden 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 Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Mo 22.01.07 19: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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2195

XP
D3Prof, D6Pers.
BeitragVerfasst: Mo 22.01.07 19: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 Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Mo 22.01.07 19: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 Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Mo 22.01.07 20: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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2195

XP
D3Prof, D6Pers.
BeitragVerfasst: Mo 22.01.07 20: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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 89

Win XP Home, Ubuntu Linux 6.06
Delphi 7, Java, PHP
BeitragVerfasst: Mo 22.01.07 21: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:
ausblenden 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:
ausblenden 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 Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Sa 27.01.07 15: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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 27.01.07 16: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:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
var
  i: Integer;
  Cards: array of Integer;
begin
  SetLength(Cards, 10); // Wenn du 10 Karten hast...

  // Array Cards füllen
  for...
    Cards[i] :=

  // mischen

  // Bilder laden
  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:
ausblenden 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 16:53, insgesamt 1-mal bearbeitet
Janine Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Sa 27.01.07 16:37 
ok noch mal von vorne,so viel hab ich nit wirklich verstanden.
also mein ganzes Programm sieht im moment grad mal so aus

ausblenden volle Höhe Delphi-Quelltext
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
    { Private-Deklarationen }
  public
 { Public-Deklarationen }
  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);
{panel25.caption:=inttostr(uhr.getmin);
 panel27.caption:=inttostr(uhr.getsec);
 panel28.caption:=inttostr(uhr.getzsec);}

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){mod19};
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 user profile iconraziel: Delphi-Tags hinzugefügt
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 27.01.07 16:47 
user profile iconJanine 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 27.01.07 17:15 
So, hier ein kleines Beispiel. Es funktioniert insoweit als die Karten auf- und zugedeckt werden...
Einloggen, um Attachments anzusehen!