Autor Beitrag
luckyluc
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 103



BeitragVerfasst: Sa 07.03.09 12:38 
Hallo ich benötige wieder einmal eure Hilfe. Also ich habe ein Nimmspiel programmiert, möchte jetzt noch etwas Grfik hinzufügen.
1.Es sollen immer soviele Streichhölzer angezeigt werden, wie noch da sind. Doch bei der Umsetzung treten fehler auf. wenn ich auf den "Neu" Button drücke, so erscheinen mir die anfangszahl der streichhölzer. doch wenn z.B. zuvor die zahl der steichhölzer 90 war (und auch angzeigt wurden), und jetzt die zahl 30 ist, so werden immer noch 90 angezeigt. ich muss Image wieder auf false setzen, doch wie, denn ich kann nicht image auf false und gleichzeitig auf true setzen?
2. Es sollen immer die aktuelle anzahl der streichhöler angezeigt werden, d.h auch wenn ich od. der copm. welche weggnommen haben.
Danke für eure Hilfe.
(Programm siehe Anhang)
Einloggen, um Attachments anzusehen!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19341
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 07.03.09 14:03 
Ja, du musst an der Stelle wo du die Stäbe weg nimmst auch die Bilder ausblenden. Beim Einblenden gehst du mit der Schleife alle Indizes der Bilder durch. Wobei du das auch optimieren kannst.
ausblenden 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:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Randomize;
  Button_NeuClick(Sender); // Einfach ein neues Spiel starten
end;

procedure TForm1.Button_NeuClick(Sender: TObject);
begin
  staebe := Random(71) + 30;
  Label1.Caption := IntToStr (staebe);
  Edit1.Text := '';
  Label2.Caption := '';
  Label3.Caption := '';
  Button_Nehmen.Enabled := true;
  Button_Rechner.Enabled := true;
  Label4.Visible := true;
  Label4.Caption := 'Wählen Sie hier aus wer beginnt' ;
  for k := 1 to staebe do // direkt staebe statt dem Labelinhalt
  begin
    Image := 'Image' + IntToStr(k);
    TImage(Form1.FindComponent(Image)).Visible := true;
  end;
end;
Für die Schleife kannst du ja direkt den Wert nehmen statt den aus dem Label zurückzukonvertieren.

Ja, und das Ausblenden muss ja bei dieser Zeile passieren:
ausblenden Delphi-Quelltext
1:
  staebe := staebe - eingabe;					
Und zwar müssen die Bilder staebe bis staebe - eingabe + 1 ausgeblendet werden. Das riecht doch nach einer weiteren for-Schleife. ;-)

Das Wegnehmen von dir und dem PC kannst du auch zusammenfassen.

Das sind nur Vorschläge, kein Muss:
Nebenbei solltest du dir vielleicht einmal den Styleguide für das Schreiben von Quelltext anschauen. Wenn du überall richtig einrückst, ist der Code gleich sehr viel besser lesbar.
Immerhin hast du die Buttons schon benannt. :zustimm: Unterstriche sind aber nicht so gut, besser wäre z.B. einfach ButtonNeu oder btnNeu (btn für Button).

Für die Schreibweise von Delphi-Quelltext gibt es hier einen Styleguide:
dn.codegear.com/article/10280 (englisch)
www.delphi-treff.de/delphi-styleguide/ (deutsch)
luckyluc Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 103



BeitragVerfasst: Sa 07.03.09 16:17 
ja ok danke erstmal für die tipps. ich werde es versuchen hinzubekommen. auch das mit dem style ;-)
luckyluc Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 103



BeitragVerfasst: So 08.03.09 19:44 
also es funzt nicht: ich habe den direkten wert staebe genommen doch wenn ich mehrmals auf dem neu button klicke und die eine anzahl der staebe kleiner ist als die vorherige, zeigt er immernoch alles stäbe an. 2. meine for-schleife sieht jetzt so aus:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
for k := 1 to (staebe-eingabe)+1 do 
 begin
  Image:='Image'+IntToStr(k);
  TImage (form1.FindComponent(Image)).visible:= false;
 end;

ich weiß es ist kaum anders, doch ich weiß nicht so recht wie ich es umsetzten soll.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19341
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 08.03.09 19:47 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Und zwar müssen die Bilder
ausblenden Delphi-Quelltext
1:
staebe					
bis
ausblenden Delphi-Quelltext
1:
staebe - eingabe + 1					
ausgeblendet werden.
user profile iconluckyluc hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext
1:
for k := 1 to (staebe-eingabe)+1 do					
Fällt dir ein Unterschied aus? Also von wo bis wo die Schleife läuft?

Es gibt ggf. auch downto, wenn die Schleife von einem höheren bis zu einem niedrigeren Wert laufen soll.
luckyluc Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 103



BeitragVerfasst: So 08.03.09 19:49 
aber ich kann doch nicht image := usw. schreiben, das sind inkomatible typen
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19341
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 08.03.09 19:56 
ausblenden Delphi-Quelltext
1:
for k := staebe - eingabe + 1 to staebe do					
bzw.
ausblenden Delphi-Quelltext
1:
for k := staebe downto staebe - eingabe + 1 do					
:roll:
luckyluc Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 103



BeitragVerfasst: So 08.03.09 20:09 
also diese schleife muss ich dann jeweils bei button neu und button rechner einfügen, oder? so dann soiel ich das speil und wenn ich das letzt hölchen wegnimmt stürzt das spiel ab. außerdem nimmt der manche hölchen nicht mehr weg. und die das problem der anfangszahl bleibt auch. sry. wenn ich nerve, nur ich möchte das halt hinbekommen mit der grafik.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19341
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 08.03.09 20:16 
user profile iconluckyluc hat folgendes geschrieben Zum zitierten Posting springen:
also diese schleife muss ich dann jeweils bei button neu und button rechner einfügen, oder?
Ja, beim Rechner angepasst an die dortigen Hölzchen, die wegkommen.

user profile iconluckyluc hat folgendes geschrieben Zum zitierten Posting springen:
so dann soiel ich das speil und wenn ich das letzt hölchen wegnimmt stürzt das spiel ab.
Dann greifst du vermutlich auf ein Bild zu, das es gar nicht gibt.

Du müsstest einmal mit dem Debugger selbst schauen was passiert. Also mit Haltepunkten und zeilenweisem abarbeiten des Quelltextes.