Autor Beitrag
ZeitGeist87
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Do 11.01.07 08:31 
Was springt für uns dabei raus?

Wenn ich jedesmal wenn ich n Problem hätte nach Quelltext fragen würde, dann hätt ich in meiner Ausbildung nix gelernt...

LG
Stefan

PS Probieren geht über Studieren. Und wenn das nicht mehr geht -> DF :)

_________________
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
julian2304 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 26



BeitragVerfasst: Do 11.01.07 11:37 
Titel: lol?
back to topic^^

ich habe doch geschrieben das ich nicht weiterkomme mit dem "torwart".
da hab ich schon so viel ausprobiert aber es hat nicht funktioniert! darum habe ich mich hier im forum gemeldet!!! ALSO!!

ich brauche den quelltext!!

danke :)
ZeitGeist87
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Do 11.01.07 11:52 
Ich hab zwar sowas noch nie gemacht, allerdings ergeben sich aus den vorherigen Posts alle Antworten..

Wo ist dein Problem?
Du musst doch nur prüfen, ob sich die Position des Balls mit denen des Torwarts überschneidet.

Ist dies der Fall, einfach alle Richtungen ändern..

Betrachte den Torwart einfach als Wand, also Außenwand.
Wie n Haus um den Garten ist. Wenn du dann den Ball schießt prallt er irgendwo vom Haus (Hauswand) ab, weil er kollidiert ist.

Du musst einfach nur prüfen, von welcher wand, links, rechts, oben oder unten.

So hab ichs mir vorgestellt und ich programmiers jez einfach mal!

Und du auch!

LG
Stefan

_________________
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
julian2304 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 26



BeitragVerfasst: Do 11.01.07 16:08 
Titel: -.-
wenn ich den torwart als "wand" nehme, prallt der ball aber auch dort ab wo der torwart gar nich ist, also an der ganzen seite!??!
ich hab doch gesagt das ich ein noob bei delphi bin, darum hab ich mich ja auch hier gemeldet
ZeitGeist87
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Do 11.01.07 16:24 
Das Problem hat ich auch =)

dann hab ich mir ne skizze gemacht und gesehen, dass er nur abprallen darf, wenn er auf der höhe des torwarts ist und natürlich in den dimensionen (links bis rechts = oberkante) liegt.

Ich poste mal das was ich bis jez hab =)

Ist noch bissl buggy..unten funktionier noch nicht richtig..naja kann man alles optimieren, ging halt rein um die Kollissionskontrolle..

LG
Stefan
Einloggen, um Attachments anzusehen!
_________________
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.


Zuletzt bearbeitet von ZeitGeist87 am Do 11.01.07 16:27, insgesamt 1-mal bearbeitet
julian2304 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 26



BeitragVerfasst: Do 11.01.07 16:26 
ahh ok!nur du hast ja auch das problem das der ball so komisch blinkt? was ist das?
ZeitGeist87
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Do 11.01.07 16:48 
bei mir is das der refresh =)

_________________
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Do 11.01.07 17:50 
user profile iconjulian2304 hat folgendes geschrieben:
ahh ok!nur du hast ja auch das problem das der ball so komisch blinkt? was ist das?

Nun, da gibts eine Universalantwort die immer zieht: DoubleBuffered:=true; :mrgreen:
Egal wohin, am besten aber ins Form1Create oder in den Startbutton, muss ja nur einmal auf true gesetzt werden fürs ganze Programm.
(Kleine Einschränkung: DoubleBuffered ist eine Variable der Form, das heißt, es muss für jede Form einzeln auf True gesetzt werden, auf der eine Bewegung dargestellt werden soll. Einfachster Weg: Ins Form1Create für jede Form dies braucht einstellen:
ausblenden Delphi-Quelltext
1:
2:
Form1.DoubleBuffered := true;
Form2.DoubleBuffered := true; //etc.
)

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
BerTeL
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 45

Windowx XP
Delphi 7 Enterprise
BeitragVerfasst: Do 11.01.07 18:27 
Ihr wollt euren source: eines meiner alten projeckte (wirklich alt) und hatt noch ein paar fehler. Aber müsste reichen (und ja nicht das abgeben ^^). Und nicht gleich jammer wenn ihr es nciht versteht :P anschauen und es versuchen es zu verstehen.
Einloggen, um Attachments anzusehen!
Dragon06
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 25



BeitragVerfasst: Do 11.01.07 18:31 
user profile iconBerTeL hat folgendes geschrieben:
Ihr wollt euren source: eines meiner alten projeckte (wirklich alt) und hatt noch ein paar fehler. Aber müsste reichen (und ja nicht das abgeben ^^). Und nicht gleich jammer wenn ihr es nciht versteht :P anschauen und es versuchen es zu verstehen.


oha :D naja also sooo professionell sollte unser prog nun nicht werden xD

aber nice!! ^^

werde es heut abend oder so noch mal versuchen und dann hier posten ob ich's hingekriegt hab ;)
BerTeL
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 45

Windowx XP
Delphi 7 Enterprise
BeitragVerfasst: Do 11.01.07 18:41 
Es reicht schon wenn du dir anschaust wie die kollision arbeitet ...
außerdem: argh 2. seite übersehen -.-. Dann hätte ich das nicht gepostet :P
julian2304 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 26



BeitragVerfasst: Do 11.01.07 19:25 
me^2 @ Dragon06
julian2304 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 26



BeitragVerfasst: Sa 13.01.07 16:46 
also.......^^

ich habe es immer noch nicht hinbekommen das der ball am torwart abprallt.

könnte mir jemande jetzt hier mal den quelltext hinschreiben?

danke :)

mfg
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Sa 13.01.07 16:53 
:motz: Wenn das so ist, dann ließ dir einfach nochmal den ganzen Thread durch ... :roll:
Da wäre zum Beispiel meine Ausführung, wie man das auf dem Blatt Papier berechnen kann, dann wär da BerTels fertiges Programm das er euch zur Verfügung gestellt hat, und viele weitere Tipps und Hilfestellungen anderer Leute...
Zeitgeist87 hat auch, extra für euch, ein Programm geschrieben, das euch das demonstrieren soll...

Poste uns doch mal deinen Quelltext, der nicht funktioniert, dann sehn wir ja, ob du unsere Ratschläge befolgt hast ;) Ausserdem sehn wir dann, was du falsch machst und können es verbessern.

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 13.01.07 16:59 
user profile iconjulian2304 hat folgendes geschrieben:
könnte mir jemande jetzt hier mal den quelltext hinschreiben?

:rofl: :rofl: :rofl: :rofl: :rofl:
Ich lach mich gleich tot... Das gibts doch nicht nach dem was hier schon alles gepostet wurde... :roll:
julian2304 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 26



BeitragVerfasst: Mo 15.01.07 09:04 
-.-
ZeitGeist87
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Mo 15.01.07 09:27 
Also!

Noch mal von vorn, so dass es jeder versteht!

Du hast das Ding ja "Torwart" getauft.

Ergibt es dann also sinn, dass der Ball links oder rechts vom Torwart abprallen kann?
Nein!
Warum? Weil der sich nur auf der Linie bewegt, sprich nach links und rechts.

Alles was an ihm vorbeigeht ist nunmal n Tor!
Weil was bringts wenn der "rausläuft"?

Also reicht es, wenn du die Kollissionsabfrage deines "Torwarts" nur von oben her implementierst.

Wie gehts das?

Ich poste mal den Quelltext aus meinem Beispiel und erklär ihn:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
 //Torwart (halten)
 if ((rund.Top + rund.height) >= Torwart.Top) and
    (rund.Top <= Torwart.Top) then
 begin
  if (rund.left >= Torwart.Left) and
     ((rund.left + rund.Width) <= (Torwart.Left + Torwart.Width)) then
  begin
   rund.Top:= -rund.Top;
   vw:= -vw;
   debugbox.lines.add('Gehalten');
  end;
 end;


Erklärung:

mit

ausblenden Delphi-Quelltext
1:
2:
if ((rund.Top + rund.height) >= Torwart.Top) and
    (rund.Top <= Torwart.Top) then


prüfen wir, ob sich der Ball überhaupt in der Nähe des Torwarts befindet, sprich ob der in berührt.

Allerings erfolgt diese Berührung mit Einschränkung:

ausblenden Delphi-Quelltext
1:
2:
if (rund.left >= Torwart.Left) and
     ((rund.left + rund.Width) <= (Torwart.Left + Torwart.Width)) then


Denn nur wenn rund (der Ball) auch im Bereich des Torwarts ist, also sich so:

| * |
---------
|Torwart|
---------

befindet, darf er auch abprallen. Befindet er sich links oder rechts vom Torwart, aber auf gleicher Höhe, so darf er nicht abprallen.

Erst wenn diese beiden Bedingung erfüllt sind (auf gleicher Höhe und im Bereich des Towarts/Buttons), dann darfst du den Ball abprallen lassen:

ausblenden Delphi-Quelltext
1:
2:
 rund.Top:= -rund.Top;
 vw:= -vw;


Ich hoffe es ist einigermaßen gut erklärt!

LG
Stefan

_________________
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
Dragon06
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 25



BeitragVerfasst: Mo 15.01.07 18:05 
jo cool danke, jetz hab ich's auch endlich gerafft xD
naja aber die aufgabe war jetzt nicht ein fussball-programm zu machen ^^ sondern einfach nur einen bewegbaren button und einen anderen button der an dem bewegbaren abprallt!
also hab ich das auch noch für die untere seite gemacht...

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
    If (Button.Top <= Button1.Top + Button1.height) and
    (Button.Top >= Button1.Top + Button1.height)
    then
    begin
    if (Button.left <= Button1.Left) and
     ((Button.left + Button.Width) >= (Button1.Left + Button1.Width)) then
    begin
     Button.Top:= -Button.Top;
     vw:= -vw;
    end;
    end;


klappt auch soweit... naja der "ball" prallt zwar irgendwie eher in der mitte des anderen buttons ab, aber das dürfte ja nich so schlimm sein... oder hab ich da noch nen fehler drin??

danke für die reichliche hilfe ^^
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Mo 15.01.07 20:54 
user profile iconDragon06 hat folgendes geschrieben:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
    If (Button.Top <= Button1.Top + Button1.height) and
    (Button.Top >= Button1.Top + Button1.height)
    then
    begin
    if (Button.left <= Button1.Left) and
     ((Button.left + Button.Width) >= (Button1.Left + Button1.Width)) then
    begin
     Button.Top:= -Button.Top;
     vw:= -vw;
    end;
    end;

oder hab ich da noch nen fehler drin??

Ja, erstens: grauenhafte Formatierung. Zweitens: Wenns nicht richtig klappt, ist ein Fehler drin.
Ich würde dir empfehlen, nicht mit Button und Button1, sondern vielleicht mit Player und Keeper zu arbeiten oder was die grad am liebsten ist, solangs eindeutig ist.
Die markierte Zeile ist, wie wir schon seeehr oft gesagt haben, totaler Blödsinn.
Man verschachtelt If-Abfragen nicht sondern verknüpft sie mit and (einfach alle statements die du schon hast in klammern setzen und mit nem and verbinden)
Wenn uns dann klar ist, welcher der Torwart und welcher der "Ball" ist, dann machen wir weiter ;)

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
Dragon06
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 25



BeitragVerfasst: Mo 15.01.07 21:14 
ach so ja...

button = ball
button1 = keeper

und es klappt ja auch jetzt! nur halt bei der unteren kante müsste noch n kleiner fehler sein... der ball prallt nicht an der kante ab, sondern in der mitte des keepers soweit ich das sehe ^^

hier ich hänge mal die anwundung an, könnt euch das ja mal angucken wie ich das meine;)
Einloggen, um Attachments anzusehen!