Bewegen mehrerer Objekte gleichzeitig

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Tymolc
Beiträge: 3
Registriert: Mo 21. Jan 2013, 09:11

Bewegen mehrerer Objekte gleichzeitig

Beitrag von Tymolc »

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!

Cybermonkey342
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

Beitrag von Cybermonkey342 »

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

Benutzeravatar
theo
Beiträge: 10927
Registriert: Mo 11. Sep 2006, 19:01

Re: Bewegen mehrerer Objekte gleichzeitig

Beitrag von theo »

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.

Tymolc
Beiträge: 3
Registriert: Mo 21. Jan 2013, 09:11

Re: Bewegen mehrerer Objekte gleichzeitig

Beitrag von Tymolc »

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?

Benutzeravatar
theo
Beiträge: 10927
Registriert: Mo 11. Sep 2006, 19:01

Re: Bewegen mehrerer Objekte gleichzeitig

Beitrag von theo »

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?
Doch, eigentlich schon.

MAC
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

Beitrag von MAC »

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?
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.

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;

Benutzeravatar
theo
Beiträge: 10927
Registriert: Mo 11. Sep 2006, 19:01

Re: Bewegen mehrerer Objekte gleichzeitig

Beitrag von theo »

MAC hat geschrieben: Nein, das löst das Problem nicht.
Ich bin schon der Meinung, dass es das Problem löst. Du beschreibst übrigens die gleiche Lösung wie ich.
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.

Tymolc
Beiträge: 3
Registriert: Mo 21. Jan 2013, 09:11

Re: Bewegen mehrerer Objekte gleichzeitig

Beitrag von Tymolc »

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.

Antworten