Autor Beitrag
Struppi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 41



BeitragVerfasst: So 03.06.07 15:21 
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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 682

Mac OS X Snow Leopard
Xcode 3.1
BeitragVerfasst: 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:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
{...}
var
  Zaehler: integer;
{...}

procedure TForm1.OnClick(Sender: TObject);
begin
  Inc(Zaehler);  // hier wird die Variable Zaehler immer um 1 erhöht!
end;


Ach ja, die Variable sollte noch initialisiert werden, sprich am Anfang des Programms (OnCreate z.B.) auf 0 gesetzt werden.

_________________
Ich streite einsam mich mit dieser Oberflächenwelt
Gutes sei ein löblich Brot von dem ich zehre - bis zum Tod [Das Ich - Im Ich]
Struppi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 41



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 29

Win VistaSP1

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

XP
D3Prof, D6Pers.
BeitragVerfasst: So 03.06.07 18:14 
user profile iconNilan hat folgendes geschrieben:
Doppelklick auf dein Formular, dann kommt automatisch das OnCreate Ereignis deiner Form.
Da musst du nur noch folgenden Code reinschreiben:
ausblenden 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:

_________________
Blackheart666
Der Irrsinn ist bei Einzelnen etwas Seltenes, - aber bei Gruppen, Parteien, Völkern, Zeiten die Regel. (Friedrich Nietzsche)
jakobwenzel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1889
Erhaltene Danke: 1

XP home, ubuntu
BDS 2006 Prof
BeitragVerfasst: 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.

_________________
I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
Struppi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 41



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 682

Mac OS X Snow Leopard
Xcode 3.1
BeitragVerfasst: 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!

_________________
Ich streite einsam mich mit dieser Oberflächenwelt
Gutes sei ein löblich Brot von dem ich zehre - bis zum Tod [Das Ich - Im Ich]
Struppi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 41



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

XP
D3Prof, D6Pers.
BeitragVerfasst: Mo 04.06.07 08:40 
Wollen mal nicht so sein, eigentlich hatte Dunkel das schon geschrieben.
Crashkurs mal anschauen :wink:
www.christian-stelzm...urs_reloaded.htmlvar

ausblenden 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);// Count um 1 erhöhen
 // MyCount:=MyCount+1; wäre das gleiche
 if MyCount > 10 then MyCount:=1//Bis 10 zählen dann zurücksetzen
 Caption:=IntToStr(MyCount);// Anzeigen
end;

_________________
Blackheart666
Der Irrsinn ist bei Einzelnen etwas Seltenes, - aber bei Gruppen, Parteien, Völkern, Zeiten die Regel. (Friedrich Nietzsche)
rd3
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 04.06.07 08:57 
vielleicht solltest du allen enten das gleiche onclick-event hinzufügen...

evtl. so, z.B. bei oncreate

ausblenden 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;  // MeinOnClickEvent muss existieren...
      end;
    end;
  end;
end;


gruß
rd3