| Autor |
Beitrag |
Matthias-K
      
Beiträge: 271
Win95, Win98, Win2000, WinXP, Linux
D2, D4 Client/Server, D5 Enterprise, D6 Enterprise, D7 Enterprise, Delphi2005, C/C++ 3.0, C/C ++ 5.0, C/C++ 6.0
|
Verfasst: Mi 21.09.05 15:05
hi leutz,
ich hab folgendes problem.
ping pong spiel!
ich weis: nicht noch so einer!
aber des muss nu sein! *ggg*
also, mein ping pong ist fast fertig! ich betone, fast.
wenn ich eine collision habe, geht der ball auch dorthin, wo er soll! nur wenn ich den ball in einem bestimmten winkel treffe, mit meinem "schläger", dann kommt keine kollision zustande.
der ball wandert an meinem schläger, der ein panel ist, entlang und verzieht sich dann.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58:
| function tform1.test : string; begin str := 0000; if colli(panel2.BoundsRect, image1.BoundsRect) then if ((image1.Left) > (panel2.left)) or (image1.left >= form1.ClientWidth) then str := 0000 else str := 1000; if colli(bandeunten.BoundsRect, image1.BoundsRect) then str := 0100; if colli(panel1.BoundsRect, image1.BoundsRect) then begin if ((image1.left) < (panel1.left + panel1.Width)) or ((image1.left + image1.Width) <= 0) then str := 0000; else str := 0010; end; if colli(bandeoben.BoundsRect, image1.BoundsRect) then str := 0001; end;
procedure TForm1.Timer1Timer(Sender: TObject); begin test; case str of 0000 : begin image1.top := image1.top + y; image1.left := image1.left + x; end; 1000 : begin x := x * (-1); image1.left := image1.left + x; image1.top := image1.top + y; end; 0100 : begin y := y * (-1); image1.left := image1.left + x; image1.top := image1.top + y; end; 0010 : begin x := x * (-1); image1.left := image1.left + x; image1.top := image1.top + y; end; 0001 : begin y := y * (-1); image1.left := image1.left + x; image1.top := image1.top + y; end; end; end; |
ich hab mir hier scho den halben tag den kopf zerbrochen, woran das liegen könnte, aber ich hab keen plan!
hab euch mal meine collisions routine geschickt. vieleicht seht ihr etwas, was ich nicht sehe!
matthias
Moderiert von Tino: Titel geändert.
_________________ Ein Spezialist ist ein Mensch, der immer mehr von immer weniger weis, bis er alles von nichts weis!
|
|
Heiko
      
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: Mi 21.09.05 15:31
Kannst du vlt. das Programm uns schicken, damit wir es selber sehen unter welchem Fall er nicht kollidiert? Oder wenigesten einen Screenshout (falls du den Fall triffst  ).
|
|
Solaris
      
Beiträge: 33
|
Verfasst: Mi 21.09.05 15:48
So da ist das Programm.
Der Fehler tritt nur dann auf wenn der "Ball" entweder oben auf einen der "Schläger" trifft oder wenn der "Ball" die beiden "Schläger" unten berührt.
Der Ball wandert dann an der linken oder rechten Panelseite entlang (entweder nach oben oder nach unten) und wird dann am Ende des Schlägers wieder "abgestoßen".
|
|
Heiko
      
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: Mi 21.09.05 18:44
Wo ist es? Du hast glaube ich den Anhang vergessen  .
PS: Solaris=Matthias-K? (Scheint zu mindestens so) 
|
|
GTA-Place
      

Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: Mi 21.09.05 18:54
Das Game war vorher noch da. Kann ich bezeugen 
_________________ "Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
|
|
Solaris
      
Beiträge: 33
|
Verfasst: Do 22.09.05 08:09
Also wir sind nicht ein und die selbe Person!
Das Programm musste leider neu aufgebaut werden aber nu ist es da...
Einloggen, um Attachments anzusehen!
|
|
GTA-Place
      

Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: Do 22.09.05 15:45
Ich glaub die meisten hier wissen,
dass ich nicht du bin 
_________________ "Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
|
|
Amateur
      
Beiträge: 777
(Win98, WinMe) WinXP Prof
D3 Prof, D6 Pers, D2k5 Pers., Turbo C++ Explorer
|
Verfasst: Do 22.09.05 15:58
das problem hatte ich auch. du musst noch ein paar überprüfungen schreiben wenn der ball über dem schläger auftaucht und drauf trifft. is viel denkarbeit aber mit nem bisschen logik und wenn man es sich ma aufmalt kommt man drauf. wenn er von oben kommt musste halt prüfen ob ein punkt der unteren kante des balls oben auf den schläger trifft soll er nach oben wegfliegen. oder du machst ein trect um das image und überprüfst immer nur ob der ball in dem trect drin liegt. hab ich selbst noch net getestet sollte aber auch gehn. dann musste net soviel mit image denken sondern kannst dir ne eigene klasse tkollisionsrechteck schaffen mit eigenschaften wie kantelinks und so.
mit nen bisschen logik und dem aufzeichnen des problems mit einem analogen stift auf ein analoges papier wirste da sicher weiterkommen.
_________________ "Kein dummes Gerede. Kein Rumrätseln. Denkt an nichts anderes mehr, nur noch an das, was vor euch liegt. Das ist die wahre Herausforderung. Ihr müßt euch vor euch selbst schützen, Leute." (Rennes in "Cube")
Beiträge: >700
|
|
Heiko
      
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: Do 22.09.05 16:31
Solaris hat folgendes geschrieben: | | Also wir sind nicht ein und die selbe Person! |
Mich wundert es nur das Matthias K. das problem meldet und du uns das programm gibst  .
@Programm den Fall kann ich leider nicht überprüfen, da der Ball bei mir immer unten raus verschwindet, wenn ich direkt die exe ausführe.
|
|
Solaris
      
Beiträge: 33
|
Verfasst: Do 22.09.05 20:23
Das mit dem nach unten raus verschwinden liegt daran das das panel auf albottom gesetzt wurde und nich auf alnone... und das der ball zu den seiten raus verschwindet wurde auch behoben.
du musst den ball gegen die untere oder obere seite des schlägers kommen lassen... mit etwas "glück" siehst du dann was ich meine
|
|
Solaris
      
Beiträge: 33
|
Verfasst: Fr 23.09.05 09:09
Da ich anders keine Bilder hier reinposten kann habe ich es mal als Anhang an das Ende des Posts gehangen.
Auf dem Bild sieht man, wie der Ball auf das Panel trifft und wie er sich dann weiter bewegt.
Ich hoffe nun könnt ihr euch mal einen Eindruck von meinem Problem machen.
Einloggen, um Attachments anzusehen!
|
|
Heiko
      
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: Fr 23.09.05 12:47
Mhm, der mag wohl deine Anhänge nicht  .
|
|
Solaris
      
Beiträge: 33
|
Verfasst: Fr 23.09.05 12:49
Also bei mir sind da Anhänge vorhanden >___>
evtl. mal F5 drücken?
|
|
Heiko
      
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: Fr 23.09.05 12:51
Jetzt uach, nachdem ich gelesen habe, das man einfach einmal aktualisieren muss  . Jetzt weiß ich wenigstens wie es aussieht.
//Edit: Kannst du vlt. die Koordinaten geben wann der Fall genau eintritt? Also Winkel in dem er "rollt", letzter Abprallpkt an der Wand und Koordinaten des Schlägers? Dann können wir es eigentlich rekonstruieren  .
|
|
Amateur
      
Beiträge: 777
(Win98, WinMe) WinXP Prof
D3 Prof, D6 Pers, D2k5 Pers., Turbo C++ Explorer
|
Verfasst: Fr 23.09.05 13:24
ich hab schon geschrieben wie es geht. mit etwas logik kommste dahinter! es sind nur ein paar abfragen wenn der ball oben drauf kommt. abhängig von der geschwindigkeit und so kannste dann oben so etwas wie nen gesperrten bereich machen wo der ball abprallt. überleg einfach ein bisschen
_________________ "Kein dummes Gerede. Kein Rumrätseln. Denkt an nichts anderes mehr, nur noch an das, was vor euch liegt. Das ist die wahre Herausforderung. Ihr müßt euch vor euch selbst schützen, Leute." (Rennes in "Cube")
Beiträge: >700
|
|
Matthias-K 
      
Beiträge: 271
Win95, Win98, Win2000, WinXP, Linux
D2, D4 Client/Server, D5 Enterprise, D6 Enterprise, D7 Enterprise, Delphi2005, C/C++ 3.0, C/C ++ 5.0, C/C++ 6.0
|
Verfasst: Fr 23.09.05 17:09
wir haben bereits diesen netten tip aus dem edh angewandt, um die kollision zu prüfen!
also nix mit trect! wenn du dir den quelltext angeschaut hättest, hättest du es gesehen!
daran liegt nicht das problem! das problem ist, das diese collisionsabfrage irgendwo ne kleine macke hat!
matthias
_________________ Ein Spezialist ist ein Mensch, der immer mehr von immer weniger weis, bis er alles von nichts weis!
|
|
Amateur
      
Beiträge: 777
(Win98, WinMe) WinXP Prof
D3 Prof, D6 Pers, D2k5 Pers., Turbo C++ Explorer
|
Verfasst: So 25.09.05 16:43
ich schreib es nun zum dritten mal.
du brauchst kein trect. das war nur noch ne andere idee wie man es machen kann.
du musst nur ein paar abfragen hinzuschreiben wo getestet wird ob der obere /bzw. untere rand eures balls in dem panel liegt.
wenn man es sich aufmalt kriegt man es mit ein paar for und if abfragen locker hin.
überlegt halt mal ein bisschen.
wenn ihr hier nen fertigen quelltext erwartet muss ich euch enttäuschen.
nen bisschen logik hilft da weiter. wenn ihr das net hinkriegt solltet ihr noch ein paar tuts lesen und nachdenken.
sry aber ich habs auch hinbekommen. der quellcode is net schwer. es is nur logik!
denn das selbe prob gabs bei mir und nach ein, zwei din A4 seiten zeichnungen hatte ich meine beiden abfragen fertig. und siehe da nach ein paar versuchen mit kleinen änderungen hat es gepasst
_________________ "Kein dummes Gerede. Kein Rumrätseln. Denkt an nichts anderes mehr, nur noch an das, was vor euch liegt. Das ist die wahre Herausforderung. Ihr müßt euch vor euch selbst schützen, Leute." (Rennes in "Cube")
Beiträge: >700
|
|
Matthias-K 
      
Beiträge: 271
Win95, Win98, Win2000, WinXP, Linux
D2, D4 Client/Server, D5 Enterprise, D6 Enterprise, D7 Enterprise, Delphi2005, C/C++ 3.0, C/C ++ 5.0, C/C++ 6.0
|
Verfasst: So 25.09.05 16:58
ich brauch bestimmt keine tuts mehr lesen!
ich bin auch nicht für des ping pong spiel verantwortlich.
die beiden, die dafür verantwortlich sind, sind solaris und stadtfuchs!
diese beiden sind lehrlinge und sollen es lernen! lernen zu programmieren und lernen, zu fragen in foren oder sonstwo! und da teilweise recht unbrauchbare anregungen kamen, hab ich mich selbst eingeklinkt!
und ich brauch bestimmt keinen code hier!
ich hab beiden schon gesagt, das sie die prüfung auf die oberen und unteren kanten durchführen sollen. nur hab ich keine zeit, mich auch noch darum zu kümmern! auch wenns hart klingt, is aber zur zeit so!
matthias
_________________ Ein Spezialist ist ein Mensch, der immer mehr von immer weniger weis, bis er alles von nichts weis!
|
|