Automatische Bewegung von 2D Spielfiguren
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
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
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Ich habe die ne Mail geschickt (ZIP), ich hoffe du aknnst damit was anfangen 

PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
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.
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.
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
- lassma-asma
- Beiträge: 107
- Registriert: 10.07.2007 09:14
- Wohnort: Saarland
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
@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
OK, dann frische ich das mal auf :
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...
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
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...
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
- lassma-asma
- Beiträge: 107
- Registriert: 10.07.2007 09:14
- Wohnort: Saarland