Grafik und dessen Pfad

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Challenger

Betreff: Grafik und dessen Pfad

BeitragFr, Jun 28, 2013 19:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo allerseits!

Ich bin gerade an dabei einen kleinen Formel 1 Manager zu programmieren. Ein Teil des lästigen Programmierens mit vielen Variablen etc. ist bereits abgeschlossen aber jetzt geht es langsam aber sicher um die graphische Umsetzung. Und da hapert es bei mir noch ziemlich und ich würde gerne nach einer Hilfestellung fragen (da ich ja weiß wie ungern die komplette Programmierung von anderen übernommen wird):

Um es grob zu machen: Ich habe eine Zeit (in der sich das Auto um einen Kurs bewegt, z.B. 1:30.000 Min.) und möchte diese in einen Rennverlauf bringen (zunächst simpel und nur für ein Auto). Das Konzept lautet also: Abhängig von dieser Zeit soll sich eine Grafik entlang eines Pfades (der vor dem Hintergrund der Rennstrecke von oben in 2D) bewegen. Die Idee mit der vorgerenderten Animation, die dann von Blitz nur noch in unterschiedlichem Tempo wiedergegeben wird, habe ich aus unterschiedlichen Gründen recht schnell verworfen.

Mal von den Kleinigkeiten, wie, dass die Grafik des Fahrzeugs auf unterschiedlichen Teilen der Strecke unterschiedlich schnell sein soll etc., abgesehen habe ich aufgrund fehlender Kenntnisse schon mit dem einfachsten Probleme:

Wie kann ich eine Grafik in einem bestimmten Tempo (am besten als Zeit definiert) einen Pfad entlang bewegen lassen?

Ich wäre für jeden Tipp sehr dankbar!

BladeRunner

Moderator

BeitragFr, Jun 28, 2013 20:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Sollte im wesentlichen recht einfache Mathe sein:
Du setzt dir entlang der Strecke auf dem Bildschirm Wegpunkte.
Diese Wegpunkte (am besten ein Type) beinhalten die Koordinaten des Punktes, eine Info über die Dauer bis zum nächsten Wegpunkt sowie das zu verwendende Bild des Autos.
Nun lässt sich anhand der Koordinaten eines Wegpunktes und des darauf folgenden Wegpunktes und der Angabe der Zeit eine Interpolation berechnen:

X = (Xersterwp*1-(vergangeneZeit/gesamtZeit))+(Xzweiterwp*(vergangeneZeit/gesamtZeit))
Analog für y.
Wichtig ist dass alle verwendeten Variablen Float sind, damit Blitz nicht durch ein internes Umwandeln auf Integer die Ergebnisse verfälscht.

Die Angabe der Grafik inm WP dient dazu dass Auto der Strecke anzupassen, so dass die Grafik passend rotiert ist.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

Challenger

BeitragFr, Jun 28, 2013 20:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm ok ich versuch mich dem mal anzunähern, mit Types habe ich mich bisher überhaupt nicht beschäftigt. Ein ähnliches Verfahren mit einfachen Variablen ist nicht möglich? Ich kriege im Moment noch nicht einmal die Bilddatei von einer Koordinate übergangslos zu einer anderen transportiert.

DAK

BeitragFr, Jun 28, 2013 20:49
Antworten mit Zitat
Benutzer-Profile anzeigen
@Blade: Dir fehlt da noch eine Klammer:
X = (Xersterwp*(1-(vergangeneZeit/gesamtZeit)))+(Xzweiterwp*(vergangeneZeit/gesamtZeit))

@Topic:
Die Types haben hier deutlich mehr Sinn aus folgenden Gründen:
-Du kannst so viele von ihnen haben wie du willst, ohne an deinem Verarbeitungscode was ändern zu müssen.
Bei normalen Variablen musst du jede Variable einzeln durchrechnen. Hast du z.B. 10 Autos, dann musst du 10 mal hintereinander die gleichen Rechnungen schreiben. Das ist blöd weil du dann nur 10 Autos fix hast, und du ewig viel Code brauchst.
Bei Types schreibst du einfach nur, was sie generell alle machen sollen, und dann kannst du so viele und wenige von ihnen verwenden, wie du willst

-Du kannst sinnvoll gruppieren und strukturieren
Jedes Auto hat z.B. eine Position (X und Y) und eine Geschwindigkeit. Diese drei Variablen sind dann fix einer Instanz des Types Auto zugewiesen. Du wirst dich nie vertun und unabsichtlich eine der Variablen als was anderes missbrauchen, weil du später im Code eine Variable namens X brauchst.

Lies dich in Types ein. Du wirst es nicht bereuen!
Gewinner der 6. und der 68. BlitzCodeCompo

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group