Seite 3 von 5

Verfasst: 21.02.2007 13:51
von GreyEnt
Hi NG,

also das mit dem PathFind-algo würde mich Interessieren.
Habt ihr mal ein Tip oder denkanstoß für mich?

Verfasst: 21.02.2007 15:12
von STARGÅTE
JO :

Stichwort: Wasser, Wassertropfen

Stell dir vor am START Läuft Wasser in alle Richtungen.
Jeder Wassertopfen merkt sich sein Weg.
Der Wassertropfen der als erstes das Ziel erreicht, hat dann die INFO über den kürzesten weg.

Mein Tip: Versuch es selber zu erarbeiten, ist besser als ein COde zu bearbeiten.

Wenn du willst kann ich aber mein kleinen CODE posten

Verfasst: 21.02.2007 16:01
von GreyEnt
@Stargate

Gratulation für Dune 2077. Hab ich mir mal angeschaut.
Toll.
Wenn Du ein Beispiel Code für mich hättest, wäre schön.

Verfasst: 21.02.2007 16:34
von STARGÅTE
Ich habe die ne Mail geschickt (ZIP), ich hoffe du aknnst damit was anfangen ;-)

Verfasst: 21.02.2007 18:53
von GreyEnt
Danke Stargate,
Mail ist angekommen. Ich bin gerade bei einem Testprogramm dabei um zu schauen
ob ich ein altes Rundenbasiertes Strategiespiel clonen kann. bzw ob ich nicht besser die Finger davon lasse.
Das Spielfeld besteht aus Quadraten mit Land/Wasser/Bergen. Wie das bei Strategiespielen so ist. :)
Ich glaube da kommt mir dein Code gerade recht.

Verfasst: 21.02.2007 20:12
von Vermilion
Ich hab die ganze Zeit auf meine Lösung geglotzt... /:->

Als Untergrund benutze ich eine Tile Engine. Nur zu optischen Zwecken. Das mit den Entities pro Tile ist eine gute Idee.

Kaeru hat mir schon wieder mal die Augen geöffnet! :lol:

Verfasst: 22.02.2007 12:38
von Kaeru Gaman
tja... manchmal is altes eisen zu was gut... ;)

Verfasst: 18.09.2007 18:33
von lassma-asma
Hia leute,

@stargate ... ich interessiere mich auch für das thema und finde stargates demo auf seite 1 super .. ich versteh den code nur leider noch nich ganz ... wollte ma fragen ob ihn mir ma einer erklären könnte und dazuschreibt wozu welche variable da is ...


wäre echt toll

PS : SChon ma danke im Voraus

Gruß lassma-asma

Verfasst: 18.09.2007 18:56
von STARGÅTE
OK, dann frische ich das mal auf :

Code: Alles auswählen

InitSprite() 
InitKeyboard() 
InitMouse() 

b.f = 3.14159265/180  ; Umrechnungsfaktor von Grad in Bogenmaß

OpenScreen(1024, 768, 32, "Bot 1.0") 

 Winkel.f ; Berechnungswinkel

 Bot_x.f = 512 ; X-Position vom Bot
 Bot_y.f = 386 ; Y-Position vom Bot
 Bot_v.f = 0 ; Geschwindigkeit vom Bot
 Bot_w.f = 0 ; Bewegungsrichtung (in Grad) vom Bot
 Bot_dw.f = 0 ; Rotationsgeschwindigkeit um sich selber vom Bot

 a = 1  ; Beschleunigungsfaktor
 max_v = 50 ; maximale Geschwindigkeit

 Repeat 

  ExamineMouse() 
   MouseX = MouseX() 
   MouseY = MouseY() 

  ClearScreen(0,0,0) 

  StartDrawing(ScreenOutput()) 

   ; Positionsänderung des Bots
   Bot_x = Bot_x + Cos(Bot_w*b)*Bot_v*0.1
   Bot_y = Bot_y + Sin(Bot_w*b)*Bot_v*0.1

   ; Richtungsänderung des Bots
   Bot_w = Bot_w + Bot_dw 
   While Bot_w < 0 : Bot_w + 360 : Wend 
   While Bot_w >= 360 : Bot_w - 360 : Wend 

   ; Abstand von Bot zu Maus
   deX = MouseX-Bot_x
   deY = MouseY-Bot_y 
   If deX = 0 : 
    If deY < 0 : Winkel = -90 : EndIf 
    If deY >= 0 : Winkel = 90 : EndIf 
   Else 
    Winkel = ATan(deY/deX)/b 
    If deX < 0 : Winkel + 180 : EndIf 
   EndIf 
   Unterschied = Winkel-Bot_w ; Winkelunterschied zwischen Bewegungsrichtung und Zielrichtung

   If Unterschied > 180 : Unterschied = Unterschied - 360 : EndIf 
   If Unterschied < -180 : Unterschied = Unterschied + 360 : EndIf 
   If Unterschied > 0 And Unterschied <= 180 : Bot_dw = Unterschied/10 : EndIf 
   If Unterschied < 0 And Unterschied >= -180 : Bot_dw = Unterschied/10 : EndIf 
   ; Richtungsänderung
   If Bot_dw > 45 : Bot_dw = 45 : ElseIf Bot_dw < -45 : Bot_dw = -45 : EndIf 
   ; Geschwindigkeitsänderung
   If Bot_v > Sqr((Sqr(Pow(deX,2)+Pow(deY,2)))*2*a) : If Bot_v > 0 : Bot_v = Bot_v - a : EndIf : EndIf 
   If Bot_v < Sqr((Sqr(Pow(deX,2)+Pow(deY,2)))*2*a) : If Bot_v < max_v : Bot_v = Bot_v + a : EndIf : EndIf 

   ;Bot 
   Circle(Bot_x, Bot_y, 10, RGB(255,255,255)) 
   LineXY(Bot_x, Bot_y, Bot_x+Cos(Bot_w*b)*20, Bot_y+Sin(Bot_w*b)*20) 

   ;Maus 
   Circle(MouseX, MouseY, 5, RGB(128,128,128)) 

  StopDrawing() 

  FlipBuffers() 

  ExamineKeyboard() 

 Until KeyboardReleased(#PB_Key_Escape) <> 0 

End 
Ich hoffe das Hilf weiter, wenn noch was Unklar ist, dann frag^^

WICHTIG: Es ist in 3.3 geschrieben, wenn als Fehler auftreten, musst du möglicherweise den ProcedurenSyntax ändern:
ClearScreen(0,0,0) >> bei dir >> ClearScreen(0)
usw...

Verfasst: 19.09.2007 14:15
von lassma-asma
ja nee... danke schonma ... hab auch noch nich die 4.0 version ...

so ich versteh jetzt schon mehr aber leider noch nich alles ... wie lässt du denn den bot sich drehen ?? wie machst du das mit winkeln und so ...
und wofür setzt du die sin() und cos() funktionen ein ...