--> Hinter Spieler Linie zeichnen???

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Monko-Monko

Betreff: --> Hinter Spieler Linie zeichnen???

BeitragMo, Jan 12, 2009 17:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi @ All!

Ich möchte ein Spiel programmieren wo man mit einem Raumschiff über den Bildschirm fliegen kann, und dabei eine Linie zieht, die als Mauer für den Schutz vor Alien-Schiffen dienen soll. Die Aliens schießen die Mauer kaputt, und dann knallen sie den Spieler ab. Alles ist soweit fertig, bis auf die Mauer. Meine Frage ist:

Wie kann ich es so einrichten, dass hinter dem Raumschiff eine Linie, also die Mauer, gezeichnet wird???


Danke im Voraus,
MfG
--- Der Monko-Monko ---
Blitz2D Tutorial & Programme:
Meine Website
 

BadDeath

BeitragMo, Jan 12, 2009 17:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Einfach mit Line(...), o.Ä., die Linie zeichnen und dann den Spieler.
-~= real coders just code in binary =~-

Der Eisvogel

BeitragMo, Jan 12, 2009 18:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein, das würde nicht gehen, denn er meint etwas anderes.
Du legst ein Bild (CreateImage) an. auf dieses Zeichnest du in jedem Schleifendurchlauf eine Linie. Die Linie muss von dem Punkt, an dem der Spieler im vorherigen Schleifendurchlauf war, zu dem Punkt wo er in dem jetztigen Schleifendurchlauf ist. Das heißt, dass du die Player-Posiotion zwischenspeichern musst. Dann zeichnest du dieses Bild vor bevor du den Player zeichnest. Das war die Linie. Jetzt musst du die Schüsse der Gegner auf Kollision mit den Linien überprüfen, und bei bedarf ein Teil der Linie aus dem Bild löschen. Siehe dazu ReadPixelFast,WritePixelFast

MfG
Der Eisvogel
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

Noobody

BeitragMo, Jan 12, 2009 18:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Eine Lösung wäre, einen Type zu machen, der X/Y - Koordinaten enthält.
Dann erstellt man in regelmässigen Zeitabständen einen Punkt beim Spieler und füllt die Felder mit den aktuellen Spielerkoordinaten.
Am Schluss geht man die Typeliste durch und zeichnet die Mauer, indem man Linien von Punkt zu Punkt zeichnet.
Der Zeitabstand darf einfach nicht zu klein sein (auf keinen Fall jedes Frame), da ansonsten zu viele Types entstehen.

Die Kollision lässt sich dann mit einer einfachen Linien - Kollision errechnen (LinesIntersect gibts ja auch im Codearchiv).
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

Monko-Monko

Betreff: ...

BeitragDi, Jan 13, 2009 16:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für die Antworten Very Happy
Werd mal gucken was ich machen kann Wink

Bis Bald,
Euer Monko-Monko
--- Der Monko-Monko ---
Blitz2D Tutorial & Programme:
Meine Website

TimBo

BeitragDi, Jan 13, 2009 18:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

ich würde das so wie Noobody machen, da es schneller mit der berechnung ist, als beispielsweise ImagesCollid. Damit die Mauer dennoch genau, sowie nicht übermäßig viel Speicher verloren geht, würde ich empfehlen, nur ein Punkt in einem Type zu speichern, wenn der Spieler die Richtung ändert. Auf dauer könnte auch dies viel Speicher verbrauchen, aber nicht die Welt.

Viele Grüße
TimBo
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31
hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht.

Der Eisvogel

BeitragDi, Jan 13, 2009 20:14
Antworten mit Zitat
Benutzer-Profile anzeigen
aber wenn die gegner dann schießen, dann viel spaß bei der Berechnung.
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

Noobody

BeitragDi, Jan 13, 2009 20:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist doch ganz einfach.
Wie gesagt LinesIntersect nehmen und dann bei jedem Schuss von einer Linie ausgehen (die Länge der Linie ist seine Geschwindigkeit).
Dann alle Schüsse mit allen Linien prüfen *zing* hat man schon die Linie, die kollidiert.
Und schon muss man nur noch die zugehörigen Types löschen und die Mauer hat ein Loch.
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

TimBo

BeitragDi, Jan 13, 2009 22:38
Antworten mit Zitat
Benutzer-Profile anzeigen
richitg,

Zitat:
(die Länge der Linie ist seine Geschwindigkeit).


du zeichnest eine Linie von dem Punkt, wo sich die Linie jetzt befindet,zu dem Punkt, wo sie vor einem Frame war und woila.

Viele Grüße
TimBo
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31
hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht.
 

da_poller

BeitragMi, Jan 14, 2009 20:31
Antworten mit Zitat
Benutzer-Profile anzeigen
werden verdammt viele linen/daten) sollte evtl auf ein sinnvolles maß runtergerechnet werden(alte evtl löschen)

Monko-Monko

BeitragDo, Jan 15, 2009 17:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Okee Dokee Very Happy
Ich stell bald mal den Quelltext rein, ja?

Danke für die AW's
--- Der Monko-Monko ---
Blitz2D Tutorial & Programme:
Meine Website
 

Darren

BeitragSo, Feb 01, 2009 19:43
Antworten mit Zitat
Benutzer-Profile anzeigen
wenn mann will, kann man das ganze auch noch mit quadratischer oder kubischer interpolation ein wenig abrunden Smile
MFG Darren

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group