Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - counter
Struppi - So 03.06.07 15:21
Titel: counter
ich programmiere gerade an einem kleinen shooter und habe ein problem.
im groben geht es darum auf fliegende enten zu schießen.
die getroffenen enten werden per onclick auf visible := false gesetzt.
1. wie kann ich einen counter erstellen ??
2. wie kann ich einen dynamischen zähler erstellen, der durchs onclick auf die ente einfach immer eins dazu zählt ??
das problem ist ja, dass das ganze dynamisch sein soll, da die viecher in unterschiedlichen reihenfolgen abgeschossen werden können.
dadurch muss der zähler immer eins dazu zählen egal welche ente angeklickt wird...
bitte helft mir, ich hänge fest
Dunkel - So 03.06.07 15:33
Was ist der Unterschied zwischen #1 & #2?
Einfach nur eine globale Integer Variable erstellen und um 1 erhöhen, z.B. so:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| var Zaehler: integer;
procedure TForm1.OnClick(Sender: TObject); begin Inc(Zaehler); end; |
Ach ja, die Variable sollte noch initialisiert werden, sprich am Anfang des Programms (OnCreate z.B.) auf 0 gesetzt werden.
Struppi - So 03.06.07 15:59
die variablke wird also immer um 1 erhöht ??
gut, dann gibts keinen unterschied zwischen 1 und 2 :D
was genau meinst du mit OnCreate auf 0 setzen ??
da steh ich grad auffm schlauch ...
Nilan - So 03.06.07 16:22
Doppelklick auf dein Formular, dann kommt automatisch das OnCreate Ereignis deiner Form.
Da musst du nur noch folgenden Code reinschreiben:
Delphi-Quelltext
1: 2: 3: 4:
| procedure TForm1.FormCreate(Sender: TObject); begin Zaehler:=0; end; |
Das heißt, die Variable initialisieren, macht man das nicht, kann es zu Problemen kommen.
Aber vielleicht solltest du dir erstmal ein wenig Grundwissen verschaffen? ;)
Nilan :)
Blackheart666 - So 03.06.07 18:14
Nilan hat folgendes geschrieben: |
Doppelklick auf dein Formular, dann kommt automatisch das OnCreate Ereignis deiner Form.
Da musst du nur noch folgenden Code reinschreiben:
Delphi-Quelltext 1: 2: 3: 4:
| procedure TForm1.FormCreate(Sender: TObject); begin Zaehler:=0; end; |
Das heißt, die Variable initialisieren, macht man das nicht, kann es zu Problemen kommen.
Aber vielleicht solltest du dir erstmal ein wenig Grundwissen verschaffen? ;)
Nilan :) |
Welche Probleme sollten da deiner Meinung nach auftauchen, vieleicht soll ja auch der Zaehler nicht unbedingt bei 0 starten :wink:
jakobwenzel - So 03.06.07 18:37
Die Probleme, die Nilan meint, treten nur bei lokalen Variablen auf, da globale automatisch auf 0 initialisiert werden.
Loale werden überhaupt nicht initialisiert, weswegen dann da irgendwas drinsteht.
Struppi - So 03.06.07 21:58
ich hab das jetz alles so gemacht und es passiert einfach überhaupt nix ...
es kommt zwar keine fehlermeldung, aber im programm tut sich auch nix ...
und zu dem grundwissen:
da hast du wohl recht, aber ich mach das ganze für die schule und hatte vorher noch null delphi erfahrung ...
Dunkel - So 03.06.07 22:07
Was hast Du denn wie gemacht? Wenn Du einfach nur den Quellcode von hier via C&P in Dein Projekt eingefügt hast, dann tut sich da auch nix.
Zeig mal ein wenig Code von Dir!
Struppi - So 03.06.07 23:52
klar hab ich das per C & P eingefügt :D
das war ja meine frage, wie man genau sonen counter erstellt ...
ich hab kein plan von nix *sich schäm*
Blackheart666 - Mo 04.06.07 08:40
Wollen mal nicht so sein, eigentlich hatte Dunkel das schon geschrieben.
Crashkurs mal anschauen :wink:
http://www.christian-stelzmann.de/index_tutorials_crashkurs_reloaded.htmlvar
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| Form1: TForm1; MyCount:Integer; implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); begin Inc(MyCount); if MyCount > 10 then MyCount:=1; Caption:=IntToStr(MyCount);end; |
Delete - Mo 04.06.07 08:57
vielleicht solltest du allen enten das gleiche onclick-event hinzufügen...
evtl. so, z.B. bei oncreate
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure TForm1.FormCreate(Sender: TObject); var i : integer; begin for i := 0 to self.ComponentCount -1 do begin if self.Components[i] is TEntenKomponente then begin with self.Components[i] as TEntenKomponente do begin onClick := MeinOnClickEvent; end; end; end; end; |
gruß
rd3
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 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!