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!

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 ...