Entwickler-Ecke
Sonstiges (Delphi) - Grafik bei Hölzchenspiel
luckyluc - Sa 07.03.09 12:38
Titel: Grafik bei Hölzchenspiel
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)
jaenicke - 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.
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); 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 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:
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:
http://dn.codegear.com/article/10280 (englisch)
http://www.delphi-treff.de/delphi-styleguide/ (deutsch)
luckyluc - 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 - 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:
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 - So 08.03.09 19:47
jaenicke hat folgendes geschrieben : |
| Und zwar müssen die Bilder bis ausgeblendet werden. |
luckyluc hat folgendes geschrieben : |
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 - So 08.03.09 19:49
aber ich kann doch nicht image := usw. schreiben, das sind inkomatible typen
jaenicke - So 08.03.09 19:56
Delphi-Quelltext
1:
| for k := staebe - eingabe + 1 to staebe do |
bzw.
Delphi-Quelltext
1:
| for k := staebe downto staebe - eingabe + 1 do |
:roll:
luckyluc - 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 - So 08.03.09 20:16
luckyluc hat folgendes geschrieben : |
| 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.
luckyluc hat folgendes geschrieben : |
| 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.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!