2D Waypoint TuT by Basecamp
Übersicht

BasecampBetreff: 2D Waypoint TuT by Basecamp |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hey Leute Hab euch hier ein kleines Waypoint Example, das ich selber gecodet und selber dokumentiert habe... Ist mein erstes TuT also pls ned zusammenscheissen^^ Aber Kritik is trotzdem erwünscht ![]() Code: [AUSKLAPPEN] ; Waypoint2D Example 2008 by Basecamp
; www.basecamp-online.net ; ; Ein einfaches 2D Waypoint Beispiel um z.b Bots zu programmieren ; --------------------------------------------------------------------- Graphics 800,600,16,2 ; Grafikmodus setzen SetBuffer BackBuffer() ; Buffer setzen SeedRnd MilliSecs() ; Wert für Zufallszahlen einstellen AppTitle "Waypoint2D Example" ; Titel des Programms w = 20 ; Anzahl Waypoints Dim WayPointX(w) ; WayPointX mit Anzahl Waypoints in ein Feld setzen Dim WayPointY(w) ; WayPointY mit Anzahl Waypoints in ein Feld setzen For i = 1 To w ; Von 1 bis n (Anzahl Waypoints) WayPointX(i) = Rnd(800) ; WayPointX darf höchstens 800 Pixel betragen WayPointY(i) = Rnd(600) ; WayPointY darf höchstens 600 Pixel betragen Next ; Global PosX# = 400 ; Definierter Anfang (Beispiel Mitte [X Position]) ; Global PosY# = 300 ; Definierter Anfang (Beispiel Mitte [Y Position]) Global PosX# = Rnd(800) ; Zufälliger Anfang (X Position) Global PosY# = Rnd(800) ; Zufälliger Anfang (Y Position) Speed = 5 ; Tempo des Bots Global WP ; Waypoint als Global setzen Winkel = NextWayPoint() ; Winkel definieren (als NextWayPoint()) Repeat ; Repeat-Until Schleife definiert Cls ; Grafik vom Bildschirm löschen For i = 1 To w ; Von 1 bis n (Anzahl Punkte) Next ; For-Next Schleife beenden Color 0,255,0: Oval PosX-5, PosY-5, 20, 20 ; Farbe, Form, Position und Grösse des Bots einstellen PosX = PosX + Cos(Winkel) * speed ; PosX entspricht PosX + Kosinuswert * Tempo des Bots PosY = PosY + Sin(Winkel) * speed ; PosY entspricht PosY + Sinuswert * Tempo des Bots If Abs(WayPointX(WP) - PosX) =< Speed And Abs(WayPointY(WP) - PosY) =< Speed Then Winkel = NextWayPoint() ; Unwichtiges Zeugs Flip ; Alles anzeigen Until KeyHit(1) ; Wenn Taste 1 (Esc) gedrückt wird End ; dann wird das Proggy beendet Function NextWayPoint() ; NextWayPoint() Funktionsbeginn WP = WP + 1 ; Das der Punkt immer vom aktuellen eins weiter geht If WP = 21 Then WP = 1 ; Wenn einer mehr als der letzte erreicht wird, wieder zu Punkt 1 Winkel# = (450 - ATan2((WayPointX(WP) - PosX), (WayPointY(WP) - PosY))) Mod 360 ; Winkel bestimmen Return Winkel# ; Zur Winkel# Funktion zurück End Function ; Funktion beenden |
||
-------------------------
www.basecamp-online.net ------------------------- |
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Habs mal ein bisschen nach meinem Geschmack abgeändert...
Was mich am meisten gestört hat war, dass du das suchen des nächsten Waypoints als "Unwichtiges zeugs" kommentriert hattest ![]() Naja, sonst noch ein paar kleine Änderungen gemacht. Viel Spass. Code: [AUSKLAPPEN] ; Waypoint2D Example 2008 by Basecamp, modified by Eingeproggt ; www.basecamp-online.net ; ; Ein einfaches 2D Waypoint Beispiel um z.b Bots zu programmieren ; --------------------------------------------------------------------- gfx_x=800 ;Graphik-Fenstergröße gfx_y=600 Graphics gfx_x,gfx_y,16,2 ; Grafikmodus setzen SetBuffer BackBuffer() ; Buffer setzen SeedRnd MilliSecs() ; Wert für Zufallszahlen einstellen AppTitle "Waypoint2D Example" ; Titel des Programms Global w = 20 ; Anzahl Waypoints Dim WayPointX(w) ; WayPointX mit Anzahl Waypoints in ein Feld setzen Dim WayPointY(w) ; WayPointY mit Anzahl Waypoints in ein Feld setzen For i = 1 To w ; Von 1 bis w (Anzahl Waypoints) WayPointX(i) = Rnd(gfx_x) ; WayPointX darf höchstens 800 Pixel betragen WayPointY(i) = Rnd(gfx_y) ; WayPointY darf höchstens 600 Pixel betragen Next ; Global PosX# = 400 ; Definierter Anfang (Beispiel Mitte [X Position]) ; Global PosY# = 300 ; Definierter Anfang (Beispiel Mitte [Y Position]) Global PosX# = Rnd(gfx_x) ; Zufälliger Anfang (X Position) Global PosY# = Rnd(gfx_y) ; Zufälliger Anfang (Y Position) Speed = 5 ; Tempo des Bots Global WP ; Waypoint als Global setzen Winkel = NextWayPoint() ; Winkel definieren (als NextWayPoint()) timer=CreateTimer(60) ;Timer, damit CPU nicht 100% ausgelastet wird Repeat ; Repeat-Until Schleife definiert Cls ; Grafik vom Bildschirm löschen ;Vorschau der Waypoints (Kann weggelassen werden, nur zur Veranscheulichung) Color 0,0,200 For i = 1 To w ; Von 1 bis w (Anzahl Punkte) Rect WayPointX(i)-2,WayPointY(i)-2,4,4,1 Text WayPointX(i)+2,WayPointY(i)+2,i Next ; For-Next Schleife beenden Color 0,255,0:Oval PosX-5, PosY-5, 20, 20 ; Farbe, Form, Position und Grösse des Bots einstellen PosX = PosX + Cos(Winkel) * speed ; PosX entspricht PosX + Kosinuswert * Tempo des Bots PosY = PosY + Sin(Winkel) * speed ; PosY entspricht PosY + Sinuswert * Tempo des Bots ;Wenn Waypoint erreicht wurde, nächsten suchen und Bewegung darauf einstellen If Abs(WayPointX(WP) - PosX) =< Speed And Abs(WayPointY(WP) - PosY) =< Speed Then Winkel = NextWayPoint() WaitTimer timer Flip 0; Alles anzeigen Until KeyHit(1) ; Wenn Taste 1 (Esc) gedrückt wird End ; dann wird das Proggy beendet Function NextWayPoint() ; NextWayPoint() Funktionsbeginn WP = WP + 1 ; Das der Punkt immer vom aktuellen eins weiter geht If WP>w Then WP = 1 ; Wenn einer mehr als der letzte erreicht wird, wieder zu Punkt 1 Winkel# = (450 - ATan2((WayPointX(WP) - PosX), (WayPointY(WP) - PosY))) Mod 360 ; Winkel bestimmen Return Winkel# ; Zur Winkel# Funktion zurück End Function ; Funktion beenden mfG, Christoph PS. ich bin ein Type-Fan, hab aber die Arrays dringelassen, weil sonst hätt ich gleich mein eigenes Tut schreiben können ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group