Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Frage zu "Ball"-Spiel / Zähler für Mausklick (https://www.delphipraxis.net/108935-frage-zu-ball-spiel-zaehler-fuer-mausklick.html)

procedure22 21. Feb 2008 13:07


Frage zu "Ball"-Spiel / Zähler für Mausklick
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen,

ich bin Delphi-Interessiert und gerade dabei, es zu lernen. Hab eine PDF-Datei von einem Freund bekommen, in der die Programmiersprache Schritt für Schritt erklärt wird. Dazu gibt es dann immer Aufgaben, aber bei der aktuellen komme ich nicht weiter.

Es geht dabei um ein Spiel, in dem ein Ball herumhüpft und der Spieler in mit der Maus treffen muss. Die Treffer sollen gezählt werden. Ich habe schon einen Großteil des Programms geschrieben. Im Moment bin ich soweit, dass der Ball herumhüpft. Aber wie kann ich die Klicks auf den Ball automatisch zählen lassen? Gibt es auch die Möglichkeit, mehrere Bälle hüpfen zu lassen?

Vielen Dank schonmal und viele Grüße wünscht euch
Hans-Peter

DeddyH 21. Feb 2008 13:15

Re: Kurze Frage zu Delphi-Projekt
 
Hallo procedure22, Willkommen in der DP :dp: ,

Du kannst die Datei auch einfach an Deinen Beitrag anhängen (klicke dazu auf Edit). Da ich nicht weiß, was der Ball überhaupt ist (ein eigenes Objekt?), kann ich Dir auch noch keinen Tipp bzgl. des Zählens geben. Möglich ist es auf jeden Fall.

Kroko1999 21. Feb 2008 13:22

Re: Kurze Frage zu Delphi-Projekt
 
3 Foren, 3x das gleiche und alles ohne Link, :|

Andi1985 21. Feb 2008 13:23

Re: Kurze Frage zu Delphi-Projekt
 
Delphi-Quellcode:
MeineCollision(MouseX, MouseY)
WENN
MouseX > BallX UND
MouseX < BallX + BallBreite UND
MouseY > BallY UND
MouseY < BallY + BallHöhe
DANN
  KOLLISION VORHANDEN
ANSONSTEN
  KEINE KOLLISION
Delphi-Quellcode:
WENN MeineCollision(MouseX, MouseY) DANN
  ERHÖHE EINEN GANZZAHLWERT
die Ball-Kordinaten wirst du haben da du den Ball ja rumhümpfen läst... und an die Mauskordinaten solltest du auch drankommen :)

mfg,
Moggy

RavenIV 21. Feb 2008 13:23

Re: Kurze Frage zu Delphi-Projekt
 
Zitat:

Zitat von procedure22
Das Delphi-Projekt habe ich hier hochgeladen
<URL>

Du kannst auch Files direkt an den Beitrag anhängen.
Somit ersparst Du den hilfswilligen Leuten, dass sie erst noch auf ner anderen Seite was runterladen müssen.
Ausserdem bleibt bei dem RapidShare der Upload nicht ewig liegen.
Wäre schade, wenn der Beitrag dadurch sinnlos würde.

RavenIV 21. Feb 2008 13:25

Re: Kurze Frage zu Delphi-Projekt
 
Zitat:

Zitat von Kroko1999
3 Foren, 3x das gleiche und alles ohne Link, :|

Jupp wirklich sehr unschön.
Gut, dass es Leute gibt, denen sowas auffällt.

Somit schenke ich mir die weiteren Antworten auf diesen Thread.
Ich mag das Crossposten nämlich nicht leiden.

DeddyH 21. Feb 2008 13:26

Re: Kurze Frage zu Delphi-Projekt
 
Ich werfe aber schon mal PtInRect als Ansatz in den Raum :mrgreen:

[edit] Da es sich ja anscheinend um ein Crossposting handelt, verlinke bitte auf die anderen Foren, sonst machst Du Dir nirgends Freunde :? [/edit]

procedure22 21. Feb 2008 18:31

Re: Kurze Frage zu Delphi-Projekt
 
Oha, das mit den Crossposts wusste ich nicht. War nicht böse gemeint!

Hier sind dementsprechend die anderen Links
http://forum.delphi-treff.de/showthr...337#post165337
http://www.delphi-forum.de/viewtopic...f448f5799dc980
http://entwickler-forum.de/showthrea...264#post160264

Nochmal: Entschuldigung! Thementitel hab ich geändert

DeddyH 21. Feb 2008 19:41

Re: Frage zu "Ball"-Spiel / Zähler für Mausklick
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe Dein Programm mal ein wenig erweitert. Du wirst es vermutlich nicht auf Anhieb verstehen, also heißt es lesen, lesen, lesen :zwinker: . Bei Fragen einfach fragen.

P.S.: das mit dem Crossposting sei Dir verziehen, beim nächsten Mal einfach beachten :-)

procedure22 24. Feb 2008 12:50

Re: Frage zu "Ball"-Spiel / Zähler für Mausklick
 
Sieht super aus, vielen Dank schonmal :)
Versuche gerade den Programmcode nachzuvollziehen. Allerdings werden in der TrefferBar die Treffer gar nicht angezeigt?! Die Zahl der Treffer soll aber doch dort ausgegeben werden.

Vielleicht find ich noch raus, woran es liegt. Falls du das hier liest, kannst du mir ja auch noch einen Tipp geben ;)

Viele Grüße!

DeddyH 24. Feb 2008 12:55

Re: Frage zu "Ball"-Spiel / Zähler für Mausklick
 
Komisch, bei mir werden die Treffer sehr wohl angezeigt :gruebel:

procedure22 24. Feb 2008 13:00

Re: Frage zu "Ball"-Spiel / Zähler für Mausklick
 
Ja, das wundert mich auch, dass es bei mir nicht geht. Der Code scheint ja zu stimmen, die Treffer werden ja in der TrefferBar ausgegeben. Bei mir bleibt die Bar allerdings weiß.

Kann das an meiner Delphi-Version o.ä. liegen? Ich hab Delphi 7

DeddyH 24. Feb 2008 13:08

Re: Frage zu "Ball"-Spiel / Zähler für Mausklick
 
Ich hab auch Delphi 7. Hast Du beim Kompilat (im Archiv) dasselbe Problem?

procedure22 24. Feb 2008 13:14

Re: Frage zu "Ball"-Spiel / Zähler für Mausklick
 
Du meinst, wenn ich die exe-Datei direkt starte? Ja, da ist es genauso.

Ich hab nochmal ein paar kleine Änderungen am Programm vorgenommen. Schau doch bitte nochmal, ob es bei dir jetzt auch noch funktioniert. Vielleicht hab ich ja auch aus Versehen den Code geändert.
Wenn es dann immernoch nicht klappt, geh ich mal an einen anderen PC damit.

DeddyH 24. Feb 2008 13:15

Re: Frage zu "Ball"-Spiel / Zähler für Mausklick
 
Funktioniert bei mir. Welches Betriebssystem hast Du?

[edit] Sonst nimm das doch aus der TrefferBar raus und schreib es in die Caption, das sollte ja wohl funktionieren :zwinker: [/edit]

procedure22 24. Feb 2008 13:18

Re: Frage zu "Ball"-Spiel / Zähler für Mausklick
 
XP

procedure22 24. Feb 2008 13:22

Re: Frage zu "Ball"-Spiel / Zähler für Mausklick
 
Gute Idee, das in der Caption auszugeben :) Es geht doch bestimmt auch, dass die Treffer in der Caption UND in der TrefferBar angezeigt werden. Wie muss ich den Code denn dann ändern? Wenn ich TrefferBar.SimpleText durch Caption.SimpleText ersetze, gibt es Fehler.

Das ist seit jeher mein Problem mit Delphi. Ich weiß, was ich will aber weiß nicht, wie ich mich richtig ausdrücken soll :lol:

DeddyH 24. Feb 2008 13:27

Re: Frage zu "Ball"-Spiel / Zähler für Mausklick
 
Delphi-Quellcode:
procedure TForm1.ShowTreffer;
begin
  TrefferBar.SimpleText := Format('Treffer: %d',[Zaehler]);
  Caption := Format('Spielfeld (Treffer: %d)',[Zaehler]);
end;

procedure22 24. Feb 2008 13:31

Re: Frage zu "Ball"-Spiel / Zähler für Mausklick
 
Traumhaft :) Es funktioniert! Vielen Dank, sehr nett, dass du mir so lange geholfen hast!

Eine Sache ist da noch: Den Ball soll ich jetzt durch ein Image ersetzen. Es soll also dieser Ball hier herumhüpfen und nicht mehr der rote. Vielleicht kannst du mir nur einen Tipp (nicht den ganzen Code) geben, wie ich den Ball einbinden kann. Damit wäre mir sehr geholfen, den Rest schaffe ich dann sicher alleine ;)

Nochmals vielen Dank an dich und das Delphi-PRAXIS-Forum!

DeddyH 24. Feb 2008 13:37

Re: Frage zu "Ball"-Spiel / Zähler für Mausklick
 
Du kannst entweder ein 2. TImage nehmen, die Ballgrafik dort hineinladen und dessen Position verschieben oder nur die Ballgrafik laden und per Canvas.Draw auf das 1. Image zeichnen.

procedure22 24. Feb 2008 13:43

Re: Frage zu "Ball"-Spiel / Zähler für Mausklick
 
Ok, dankeschön!

procedure22 24. Feb 2008 16:00

Re: Frage zu "Ball"-Spiel / Zähler für Mausklick
 
Ich habs jetzt die ganze Zeit versucht, aber es sind ständig Fehler drin.
Kannst du mir nicht vielleicht doch den Code schreiben? Habe versucht, per Canvas.Draw das Bild über den Ball zu legen...

Bin hier am verzweifeln...

DeddyH 24. Feb 2008 16:09

Re: Frage zu "Ball"-Spiel / Zähler für Mausklick
 
Hast Du das Bild auch vorher in eine Bitmap konvertiert?

procedure22 24. Feb 2008 16:20

Re: Frage zu "Ball"-Spiel / Zähler für Mausklick
 
Ja, hab ich gemacht. Aber ich bekomm den Programmcode einfach nicht zustande :(

DeddyH 24. Feb 2008 16:23

Re: Frage zu "Ball"-Spiel / Zähler für Mausklick
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hier mal die Lösung mit einem 2. Image.

procedure22 24. Feb 2008 16:29

Re: Frage zu "Ball"-Spiel / Zähler für Mausklick
 
Super, danke :) Bin gerade dabei, den Code nachzuvollziehen. Wo wird denn das Bild eingebunden? Also wenn ich das Bild ändern wollte, wo steht das im Code?

Wundere mich nämlich gerade, dass keine BMP-Datei in der ZIP-Datei auftaucht, die ist anscheinend wo versteckt

DeddyH 24. Feb 2008 16:30

Re: Frage zu "Ball"-Spiel / Zähler für Mausklick
 
Schau Dir mal imgBall an, da ist sie drin ;)

[edit] Hab noch einen Fehler entdeckt: die Methode BildClick muss imgBall zugewiesen werden und nicht mehr dem großen Bild [/edit]

procedure22 24. Feb 2008 16:54

Re: Frage zu "Ball"-Spiel / Zähler für Mausklick
 
Alles klar, hat geklappt. Hab jetzt mal ein anderes Bild eingefügt. Aber wie kann ich den Hasen jetzt größer machen? Die Attribute Width und Heigth vom TImage ändern bringt nichts...

Das mit BildClick hab ich nicht ganz verstanden?! Kannst du das vielleicht gerade mitändern? Danke dir!

DeddyH 24. Feb 2008 17:08

Re: Frage zu "Ball"-Spiel / Zähler für Mausklick
 
Die Größe gibst Du doch selbst an (im OnCreate). Und das Zuweisen der Methode geht ganz einfach im Objektinspektor. Auf dem Reiter "Ereignisse" löschst Du beim Bild das OnClick raus und fügst es beim imgBall ein.

procedure22 24. Feb 2008 17:19

Re: Frage zu "Ball"-Spiel / Zähler für Mausklick
 
BildClick hab ich geändert. OnCreate find ich allerdings nicht. Weder im Objektinspektor noch im Quellcode?!

Larsi 24. Feb 2008 17:21

Re: Frage zu "Ball"-Spiel / Zähler für Mausklick
 
Dann geh doch im Objektinspektor auf Form1 und klick dann auf oncreate

DeddyH 24. Feb 2008 17:23

Re: Frage zu "Ball"-Spiel / Zähler für Mausklick
 
Im Quellcode heißt das "FormCreate".

procedure22 24. Feb 2008 17:35

Re: Frage zu "Ball"-Spiel / Zähler für Mausklick
 
Meint ihr diese Zeile?

Code:
Hase.init(clRed,Random(Bild.width-50)+25,Random(Bild.Height-50)+25,Random(9)-4,Random(9)-4,20);
Egal, was ich da ändere, der Hase wird nicht doppelt so groß.

DeddyH 24. Feb 2008 17:40

Re: Frage zu "Ball"-Spiel / Zähler für Mausklick
 
Setz da mal als erste Zeile ein Randomize rein. Das hatte ich glatt übersehen.

[edit] Oh Mann, klar, der Radius steht ja mit 20 fest drin. Ändere zusätzlich mal die genannte Zeile in
Delphi-Quellcode:
     Hase.init(clRed,Random(Bild.width-50)+25,Random(Bild.Height-50)+25,Random(9)-4,Random(9)-4,Random(30) + 20);
[/edit]

procedure22 24. Feb 2008 17:53

Re: Frage zu "Ball"-Spiel / Zähler für Mausklick
 
Jetzt geht alles. Vielen Dank!

procedure22 24. Feb 2008 17:55

Re: Frage zu "Ball"-Spiel / Zähler für Mausklick
 
Noch ein kleines Extra^^

Ich hätte neben dem "Beenden"-Button gerne noch einen Knopf "Neustart", also praktisch ein Reset des Zählers auf Null und ein neuer Hase kommt ins Bild, der alte verschwindet.

Ist das realisierbar?

DeddyH 24. Feb 2008 17:58

Re: Frage zu "Ball"-Spiel / Zähler für Mausklick
 
Klar, Du musst auf Knopfdruck nur den "Hasen" neu intialisieren.

procedure22 24. Feb 2008 18:01

Re: Frage zu "Ball"-Spiel / Zähler für Mausklick
 
Hab das so gemacht. Der Hase verschwindet, aber taucht nicht mehr wieder auf. Zähler wird auch nicht zurückgesetzt

Code:
procedure TForm1.NeustartClick(Sender: TObject);
begin
  Randomize;
  Hase := tHase.create;
end;

DeddyH 24. Feb 2008 18:08

Re: Frage zu "Ball"-Spiel / Zähler für Mausklick
 
Delphi-Quellcode:
procedure TForm1.NeustartClick(Sender: TObject);
begin    
  Zaehler := 0;
  ShowTreffer;
  Hase.init(clRed,Random(Bild.width-50)+25,Random(Bild.Height-50)+25,Random(9)-4,Random(9)-4,Random(30) + 20);
  Hase.ZeigDich;
end;

procedure22 24. Feb 2008 18:32

Re: Frage zu "Ball"-Spiel / Zähler für Mausklick
 
Ah, jetzt geht es. Das wars auch schon. Vielen Dank!


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:38 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz