Wände nicht überfahrbar?? wie z.B. bei Pacman

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
seggl
Beiträge: 17
Registriert: 25.08.2005 16:57

Wände nicht überfahrbar?? wie z.B. bei Pacman

Beitrag von seggl »

wie kann ich es anstellen, dass die wände z.b. bei einem labyrinth nicht "überfahrbar" sind sprich, dass man nicht einfach durch die wand hindurch fahren kann??
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Dies ist eine automatische Nachricht des Forenbots:

Bitte benutzen sie die Forensuche. :freak:



Zum Thema Kollision wurde schon reichlich gepostet.
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 »

Postition der Wände mit der der Spielfigur vergleichen, bei Kollision die Spielfigur anhalten, fertig.
Eine ausführlichere Antwort kannst du mit so wenigen Infos, was genau das für ein Spiel ist usw. hier nicht erwarten. Eigentlich müsstest du wohl selbst darauf kommen können, logisch nachgedacht, zumindest.
Denn im Grunde genommen ist es tatsächlich so, dass man Position der Mauer und Position des Spielers vergleichen muss. Dann gibt es gewisse Bereiche (z.B. Wände) die der Spieler nicht einnehmen darf. Befindet er sich in diesem Bereich, wird er zurückgesetzt bis er draußen ist. Das sorgt dafür, dass der Spieler nicht durch Wände geht.
Benutzeravatar
Green Snake
Beiträge: 1394
Registriert: 22.02.2005 19:08

Beitrag von Green Snake »

schau dir am besten in der hilfe die themen zu spritecollision und spritepixelcollision an ;)

damit wird das berechnet, wenn 2 sprites bzw bilder sich überlappen ;)

kannst aber auch alles mit if abfragen machen :lol:
-.-"
Benutzeravatar
Lukas-P
Beiträge: 262
Registriert: 07.10.2004 12:03

Beitrag von Lukas-P »

kannst aber auch alles mit if abfragen machen Laughing

Code: Alles auswählen

if spritepixelcollision(...
hää.. muss ich den "Witz" verstehen? :?
Benutzeravatar
Green Snake
Beiträge: 1394
Registriert: 22.02.2005 19:08

Beitrag von Green Snake »

nene, mit if meinte ich etwa folgendes:

Code: Alles auswählen

if Playerx < 500 and playery > 200 or playerx < 20 and BLABLABLA
ich meinte damit, das man JEDE mauer position abfragen müsste, die ein spieler blocken kann.

so hab ichs mal mit vb gemacht, man kann sich ja vorstellen, das man da "relativ" viel zeit braucht :allright:
-.-"
Benutzeravatar
unix
Beiträge: 361
Registriert: 15.02.2005 19:25
Wohnort: Zwischen Coburg und Bamberg :-)
Kontaktdaten:

Beitrag von unix »

Am besten du erstellst ein Raster z.B. 5x5 und Gibst jeden Rasterfelt einen 'Layer'.
und dan fragst du ab ob der Layer wohin du wilst 0 ist wen nicht dann soll er stehenbleiben.

Code: Alles auswählen

Dim Feld(5,5) ;x, y

Restore Layers

for y = 1 to 5
 for x = 1 to 5
  Layer = read
  Feld(x,y) = Layer
 next
next

repeat

 if keyboarrdpush.... ; alle 4 Richtungen

if Feld(PlayerX-1,PlayerY) and Richtung = "Links"
 Player-X Bewegung = 0
...

und so weiter

datasection

Layers:

Data.l  0, 0, 0, 0, 0
Data.l  0, 1, 1, 1, 0
Data.l  0, 1, 0, 0, 0
Data.l  0, 1, 0, 1, 1
Data.l  0, 1, 0, 0, 0

enddatasection

Ich hoffe deine Fragen sind damit geklärt
Hier steht normalerweise die Putzfrau drin,
die hat aber Urlaub.
MfG : Unix
Antworten