Autor Beitrag
rossinie
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 19



BeitragVerfasst: Di 25.01.05 15:29 
Delphix Kollision und nicht aus dem Bild fahren

Hallo.
ich muss für die Schule ein 2d Autospiel programmieren. Ich hab jetzt ein Auto das Vor und zurück fährt. Drehn kann es sich acuh schon, nur schräg fahren geht nicht icht so 100% hab noch ein problem mit der winkelfunktion.Das bekomm ich sicher noch gelöst.
Aber ich weiss nicht wie ich das Problem lösen soll mit dem, dass das Auto nicht aus dem bildschirm fährt. Ausserdem will ich noch ne strecke haben wo es fahren darf, wo ich später nur noch eine grafik drauf lege. Es soll fahren,langsamfahren(sand) und nicht befahren geben.
Ich kann mir aber nicht vorstellen wie ich das machen soll. Also ich müsste unüberfahrbare linien ziehen können. Ich hab schon viel gesucht aber nichts brauchbares gefunden. bitte antwortet jetzt nciht google oder sowas das kann ich schon allein :-.)
DaNkE
rossinie
Socher
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 45

warmes flüssiges Blut
D7 Prof, D8 Prof
BeitragVerfasst: Mi 26.01.05 01:37 
Dieses Problem mußt Du mathematisch lösen, ein paar Zeilen Quellcode reichen
hier mit Delphi bzw. Pascal nicht. Geometrie, Vektoren, Matrix usw.
MaxiTB
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 679

Win2000, WinXp, Workbench ;-)
D7 Ent, VS2003 Arch.
BeitragVerfasst: Mi 26.01.05 08:51 
Ich gebe dir einen kleinen Lösungsvorschlag analog zur Windows GUI:

Daher, du machst eine Klasse, welche Rechteckkoordinaten enthält und nennst sie z.B. Region.

Nun muß eine Regionklasse neben Properties für die Coordinaten eine Funktion TEST enthalten,
welche bool zurückliefert und testet, ob ein übergebene Region vollständig in der angegebene Region ist (dann false).

Als erste Instanz nimmst du die Bildschirmkoordinaten (z.B. 0,0 - 1023,767).
Als zweite Instanz nimmst du das Rechteck umschließend das Auto (z.B. 65,65 - 78,96), welches du nach jeder Bewegung Koordinatenmäßig anpassen solltest.
Als weitere Instanzen zerlegst du deine Strecke ebenfalls in Rechtecke.

Weiters schreibst du eine Container-Klasse (Collection) welche alle Regionen enthält (z.B. Regions).

Hier schreibst du eine Funktion ebenfalls namens TEST welche die List durchgeht und dir die erste Instanz Region jener Region zurückliefert, welche bei einem dortigen TEST true zurückliefert.

Kollisionsabfrage ist nicht sehr einfach wenn man sie möglichst sauber und flexibel machen will. Dieser Ansatz des Boxings ist einfach und effizient, aber eben auch nicht sehr genau. Der Vorteil ist, man kann die Genauigkeit gut skalieren, allerdings geht das dann auch auf die Rechnerleistung. Da mußt du einen Kompromiß finden !

_________________
Euer Mäxchen
Wer früher stirbt, ist länger tot.
NeoInDerMATRIX
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 245

Win95, Win98(+se), WinNT, Win2000, WinME, WinXP(+pro), VISTA, Linux(SuSe), DOS [MultiMon(3)], Vista
D6 PeE + (FP 2.0l) + D3 Pe + D2005+ D2006 Arch
BeitragVerfasst: Mi 26.01.05 19:47 
Hi,

ich würde das mit einer GrayScale BMP machen! Weis beduetet befahrbar. und jedunkler ein Pixel wird des so schlechter kann man darauf fahren.

Immer wo dein Auto ist must du nun nur Testen welchen Grauwert in der Maske steht und kannst dem entsprechend agieren.

Cu
Neo
Elite
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 26.01.05 19:57 
Du hast in DelphiX ja die Möglichkeit zur pixelgenauen Kollisionsabfrage, aber ich rate schon im Vorwege davon ab, weil die Methode einfach zu viel Performance kostet.


Zuletzt bearbeitet von Elite am Do 27.01.05 19:07, insgesamt 1-mal bearbeitet
rossinie Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 19



BeitragVerfasst: Mi 26.01.05 20:18 
ja ich benutz delphi x.
ich glaub das mit den graudingsbums geht am besten. und am leichtesten. Pixelgenaue abfrage ist fuer ein einfaches 2d-rennspiel unnötig. aber das mit den container ist auch ein biscchen stress. :-/