Bewegen mehrerer Objekte gleichzeitig
Bewegen mehrerer Objekte gleichzeitig
Hallo!
Ich versuche mich grade für die Schule an einem Spiel, in "The Binding of Isaac"-Art.
Dazu muss ich 2 Images gleichzeitig bewegen (nämlich die Figur und das Projektil (ein Ball)).
Einzeln funktioniert die Bewegung schon, wenn ich allerdings beide Prozeduren triggere, dann hält eine an.
(Mit den Pfeiltasten wird die Figur und mit WASD der Ball gesteuert, letzterer soll sich natürlich selbstständig bewegen, als wenn man ihn wirft.)
Ich habe schon probiert, ob ich Threads benutzen kann, bin aber nicht unbedingt damit klar gekommen und hoffe, dass es eine einfachere Möglichkeit gibt.
Danke im Voraus!
Ich versuche mich grade für die Schule an einem Spiel, in "The Binding of Isaac"-Art.
Dazu muss ich 2 Images gleichzeitig bewegen (nämlich die Figur und das Projektil (ein Ball)).
Einzeln funktioniert die Bewegung schon, wenn ich allerdings beide Prozeduren triggere, dann hält eine an.
(Mit den Pfeiltasten wird die Figur und mit WASD der Ball gesteuert, letzterer soll sich natürlich selbstständig bewegen, als wenn man ihn wirft.)
Ich habe schon probiert, ob ich Threads benutzen kann, bin aber nicht unbedingt damit klar gekommen und hoffe, dass es eine einfachere Möglichkeit gibt.
Danke im Voraus!
-
- Beiträge: 109
- Registriert: Sa 1. Mär 2008, 15:19
- OS, Lazarus, FPC: openSUSE Leap 15.6 (FPC 3.2.2) / Windows 11 Pro (FPC 3.2.2)
- CPU-Target: x64
- Kontaktdaten:
Re: Bewegen mehrerer Objekte gleichzeitig
Ich werde hier keine komplette Lösung geben, da es sich ja um eine Hausaufgabe zu handeln scheint. Ich gebe dir aber ein Stichwort: TIMER.
Mit besten Grüßen,
Cybermonkey
Cybermonkey
Re: Bewegen mehrerer Objekte gleichzeitig
Ich würde das so anpacken.
Zeichne einfach immer die ganze Situation im OnPaint Ereignis. Mit einem Timer veranlasst du das Neuzeichnen alle X ms.
Die Pfeiltasten bzw. ein zweiter Timer verändern nun nur die Koordinaten X/Y deiner Objekte, so dass sie beim nächsten Neuzeichnen an neuer Position erscheinen.
Zeichne einfach immer die ganze Situation im OnPaint Ereignis. Mit einem Timer veranlasst du das Neuzeichnen alle X ms.
Die Pfeiltasten bzw. ein zweiter Timer verändern nun nur die Koordinaten X/Y deiner Objekte, so dass sie beim nächsten Neuzeichnen an neuer Position erscheinen.
Re: Bewegen mehrerer Objekte gleichzeitig
Das klingt interessant, aber das löst das Problem, dass 2 Prozeduren (Ball-Werfen und Figur-Bewegen) nicht gleichzeitig ausgeführt werden können nicht wirklich, oder?
Re: Bewegen mehrerer Objekte gleichzeitig
Doch, eigentlich schon.Tymolc hat geschrieben:Das klingt interessant, aber das löst das Problem, dass 2 Prozeduren (Ball-Werfen und Figur-Bewegen) nicht gleichzeitig ausgeführt werden können nicht wirklich, oder?
-
- Beiträge: 770
- Registriert: Sa 21. Feb 2009, 13:46
- OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
- CPU-Target: 32Bit
Re: Bewegen mehrerer Objekte gleichzeitig
Nein, das löst das Problem nicht. Allerdings, kann ich dir sagen, du willst es garnicht gleichzeitig auslösen, denn das wäre ein großer aufwand (Multitasking und so). Du willst, das es schnell hintereinander passiert, so das man denkt es passiert gleichzeitig.Tymolc hat geschrieben:Das klingt interessant, aber das löst das Problem, dass 2 Prozeduren (Ball-Werfen und Figur-Bewegen) nicht gleichzeitig ausgeführt werden können nicht wirklich, oder?
Die Eleganteste Lösung wär meiner Meinung Berechnung und Zeichnung zu trennen, also du Rechnest mit deinen Variablen (Spielerx, spielery, ballx, bally) und änderst die in einem Timer(notgedrungen auch beim drücken der Tasten). Und ein Anderer Timer setzt dann die Image1.Left auf Spielerx und danach halt Image2.Left auf ballx. Die Berechnung wie sich der Ball jedoch bewegt sollte im anderen Timer stattfinden, so trennst du Berechnung und Zeichnung, und könntest zum Beispiel einfach das eine verändern ohne das du das andere bearbeiten musst...
Code: Alles auswählen
Signatur := nil;
Re: Bewegen mehrerer Objekte gleichzeitig
Ich bin schon der Meinung, dass es das Problem löst. Du beschreibst übrigens die gleiche Lösung wie ich.MAC hat geschrieben: Nein, das löst das Problem nicht.
Was "Gleichzeitigkeit" bedeutet ist natürlich Interpretationssache. Ich meinte natürlich, dass beide Objekte sich für das Auge gleichzeitig bewegen.
Streng genommen ist ja nicht mal mit multithreading Gleichzeitigkeit garantiert.
Re: Bewegen mehrerer Objekte gleichzeitig
Ich hatte offensichtlich einen völlig anderen Ansatz, deshalb viel mir das Verstehen etwas schwierig.
Ich werde mal sehen, wie weit ich das umsetzen kann, was momentan in meinem Kopf schwirrt.
Ich werde mal sehen, wie weit ich das umsetzen kann, was momentan in meinem Kopf schwirrt.