Bestimmte Stellen blockieren

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Rubiko
Beiträge: 943
Registriert: 25.02.2005 19:43
Computerausstattung: Intel i7 2600k
8GB Ram
GeForce GTX 560 Ti
Wohnort: Schwabach

Bestimmte Stellen blockieren

Beitrag von Rubiko »

nehmen wir mal als Beispiel ein gutes RPG, D2 zum Beispiel, bei dem kann man ja auch nicht IN Bäume oder so laufen... schon klar ist blockiert... aber der char kann ja nicht von links drauf... ebenso nicht von rechts usw.
muss ich denn dann wenn ich ein game mach für jeden einzelenden Baum de n Code schreiben das er nicht von oben, links usw drauf kann? geht das nicht mit 'ner schleife oder so für alle Bäume?

Danke
Rubiko
Ich wollte die Welt verändern, doch Gott gab mir nicht den Quelltext.
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Du könntest doch alle Bäume in eine Linked List speichern ;) oder in einen Array oder so.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
Ynnus
Beiträge: 855
Registriert: 29.08.2004 01:37
Kontaktdaten:

Beitrag von Ynnus »

Ich habe eine Art Bouncebox um die Spielfigur bei meinen Projekten. Also eine Sicherheitsbereich von x * y Pixeln der zur Kollisionsprüfung verwendet wird.
Dann prüfe ich, ob die Bouncebox im Objekt ist (meine Objekte haben dann auch eine Bouncebox von x * y Pixel um das Objekt herum) und verschiebe den Spieler dann immer um einen Pixel entgegen der letzten Laufrichtung wenn die Box innerhalb der verbotenen Zone ist = Kollision vorliegt. Erst wenn er wieder außerhalb steht, wende ich den Buffer. Das hat den Effekt, dass er Pixelgenau neben dem Objekt stehen bleibt.
Das kann man dann natürlich in eine Funktion packen und der Funktion die Koordinaten des Objekts und des Spielers mitteilen. Dann ist es allgemein für alle Objekte und Bäume. Lass also pro Schleifendurchlauf jeden Baum mit dem Spieler mittels dieser Funktion prüfen (oder jeden Baum der in ungefährer Nähe des Spielers ist) und schon wird deine Kollision vorgenommen. Das ist dann übertragbar auf jede beliebige Position des Bildschirms wenn du einfach diese Koordinaten übergibst.
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Sunny hat geschrieben:...Bouncebox...
Wenn Fachbegriffe, dann doch richtig: Bounding-Box.

Bouncebox wäre eine Box die bei bouncen(abprallen) würde. :P
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
Rubiko
Beiträge: 943
Registriert: 25.02.2005 19:43
Computerausstattung: Intel i7 2600k
8GB Ram
GeForce GTX 560 Ti
Wohnort: Schwabach

Beitrag von Rubiko »

hört sich schonmal gut an... wird auch gut sein :D
aber kann jemand noch einen beispielcode oder so posten? bitte?

Rubiko
Ich wollte die Welt verändern, doch Gott gab mir nicht den Quelltext.
Antworten