Distanzen

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Burnser

Betreff: Distanzen

BeitragMi, Feb 20, 2008 16:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi, Ich habe vor einen kleinen selbstdenkenden Robotor in 2d zu schreiben.

Das einzigste was er vorerst können sollte ist eigenständig durch die Gegen Fahren.

Wenn der Fensterrand kommt, soll er natürlich anhalt und die Richtung wechseln und weiterfahren (das soll sich letzendlich dauernd wiederholen)

Woltle das Ursprünglich in c/c++ realisieren, aber da hätte ich mir erst sdl oder ogl aneignen müssen, dafür bin ich ehrlichgesagt zu faul. Deswegen nehme ich doch die schöne und einfache Sprache BlitBasic die wie ich finde für soetwas genau richtig ist <:

So nun zum eigenltichen:

der Bot soll sozusagen einen Distanzsensor haben (auf der Vorderseite) und dieser soll genau in Fahrtrichtung zeigen ( von 0° - 360° je nach dem), ist die Distanz zu gering > richtung ändern und weiterfahren.

So, nun ist mir bisher nix zur Richtung bekannt, also keine Funktionen. Kennt ihr da was? Oder muss ich mit sin/cos/tan arbeiten?

mfg

Cardonic

BeitragMi, Feb 20, 2008 17:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie ist die Landschaft gespeichert ?
Bei einer Tilemap muss man anders vorgehen, wie wenn man es vektoriell macht...
If you should go skating on the thin ice of modern life, dragging behind you the silent reproach of a million tear-stained eyes, don't be surprised when a crack in the ice appears under your feet.
 

Burnser

BeitragMi, Feb 20, 2008 17:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Noch gibts keine Landschaft, habe bb gerade wieder ausgegraben, eigne mir es gerade erst wieder an.
Wird wohl 1,2 Tage dauern bis ich wieder drinne bin.

Die erste Landschaft soll einfach nur ein Rechteckiges Fenster sein,in dem nix drin ist.

Also nur die Fensterränder an denen gebremst und die Richtung geändert werden soll.


mfg

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMi, Feb 20, 2008 17:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Du musst denoch deine imaginäre Wände in irgend einer Form bestimmen, auch wenn es die einfachste aller ist - If RoboXPos > RechteWand Then DreheUm. Mit Tiles wäre es dann eben eine Kollisionsabfrage, die vor deinem Roboter greift. Auf einem 3D-Terrain wären es andere verfügbare Parameter.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

Gast

BeitragMi, Feb 20, 2008 18:19
Antworten mit Zitat
Ich hab ein kleines Beispiel gecodet. Die KI ist nicht vorhanden, der roboter Mit laser schon.
Sobald der laser aushalb ist, verschwindet das OK...
Hier ist der Code: [AUSKLAPPEN]

Graphics 800,600,32,2
SetBuffer BackBuffer()

X# = 400
Y# = 300

Repeat
   Cls
   Color 255,255,255
   Rect 1,1,798,598,0
   Line X,Y,+X+Sin(Winkel)*20,Y-(Cos(Winkel)*20)
   Color 255,0,0
   Line X+Sin(Winkel)*20,Y-(Cos(Winkel)*20),X+Sin(Winkel)*100,Y-(Cos(Winkel)*100)
   If RectsOverlap(X+Sin(Winkel)*100,Y-(Cos(Winkel)*100),1,1,1,1,798,598) = 1 Then Text 10,10,"OK!"
   Color 255,255,255
   Winkel = Winkel + KeyDown(205)
   Winkel = Winkel - KeyDown(203)
   If KeyDown(200) Then X = X + Sin(Winkel) : Y = Y - Cos(Winkel)
   Color 255,0,0
   Plot X,Y
Flip
Until KeyDown(1)

Ghost

BeitragMi, Feb 20, 2008 19:19
Antworten mit Zitat
Benutzer-Profile anzeigen
? dein code hab ich durchgelesen und da ich nix verstanden hab hab ich in den dummymodus geschalten^^ habs ins BB kopiert und gestartet.
hab ich was falsch gemacht oder kann man da nur mit einem roten strich rumfahren und zusehn wie sich das ok ein und ausblendet?
sry ich kapiere das mit syn/cos nicht. habs aber bald in der schule.
Das ist keine Lüge sondern eine sachzwangreduzierte Ehrlichkeit.
----
Anakin: " Was für eine Lichtschwertform habt ihr da eigentlich benutzt, Meister? "

Obi Wan: " Form? Es war wohl eher ein Mangel an Form. "

The_Nici

BeitragMi, Feb 20, 2008 20:17
Antworten mit Zitat
Benutzer-Profile anzeigen
ql:Sin wird auf Blitzbase ziemlich gut erklärt. Im grossen und ganzen kannst du einen Winkel in eine Y Koordinate umwandeln, mit Cosinus eine X Koordinate. Damit kannste dann z.B. bestimmen wohin das Raumschiff Fliegen soll, wenn es einen Winkel von 95° hat.
Also:
Code: [AUSKLAPPEN]

xbewegung#=Cos(Winkel)
ybewegung#=Sin(Winkel)
x#=x#+xbewegung#*10
y#=x#+ybewegung#*10

*10 um es etwas schneller zu machen, weil Cos und Sin imemr einen Wert zwischen -1 und 1 zurückgibt.
Die Floats damit die Berechnung genauer wird.

MfG
 

Burnser

BeitragMi, Feb 20, 2008 21:44
Antworten mit Zitat
Benutzer-Profile anzeigen
So, habe mal den Code von Flitzetüte genomen und etwas angepasst:

Code: [AUSKLAPPEN]
Graphics 800,600,32,2
SetBuffer BackBuffer()

X# = 400
Y# = 300

Repeat
   Cls
   Color 255,255,255
   Rect 1,1,798,598,0
   Line X,Y,+X+Sin(Winkel)*20,Y-(Cos(Winkel)*20)
   Color 255,0,0
   Line X+Sin(Winkel)*20,Y-(Cos(Winkel)*20),X+Sin(Winkel)*100,Y-(Cos(Winkel)*100)
   If RectsOverlap(X+Sin(Winkel)*100,Y-(Cos(Winkel)*100),1,1,1,1,798,598) = 0 Then Winkel = Winkel - 3
   Color 255,255,255
   X = X + Sin(Winkel) : Y = Y - Cos(Winkel)
   Color 255,0,0
   Plot X,Y
Flip
Until KeyDown(1)


Das soll in etwa das Prinzip sein nach dem der Bot funktionieren soll, nachher gebe ich ihm mehr als einen Sensor damit er besser entscheiden kann...

PS: The_Nice seine Kurzerklärung hat mir den letzendlichen denkanstoß gegeben, damit ich nachvollziehen konnte, was da überhaupt passiert.


mfg

DerKeks

BeitragMi, Feb 20, 2008 21:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Nice
Aber da muss eine simple "KI" her, denn sonst würde dein Rober los fahren, an eine Wand kommen und ab da nur noch an der Wand entlang fahren. Denn dreht sich immer nur solange, bis der Sensor im Bild ist und nicht bis er von der Wand weg ist.
Wenn man ihm mal eine Weile zuschaut, merkt man was ich meine
 

Burnser

BeitragMi, Feb 20, 2008 21:57
Antworten mit Zitat
Benutzer-Profile anzeigen
DerKeks hat Folgendes geschrieben:
Nice
Aber da muss eine simple "KI" her, denn sonst würde dein Rober los fahren, an eine Wand kommen und ab da nur noch an der Wand entlang fahren. Denn dreht sich immer nur solange, bis der Sensor im Bild ist und nicht bis er von der Wand weg ist.
Wenn man ihm mal eine Weile zuschaut, merkt man was ich meine


Ist schon klar, ich sagte ja: Das soll in etwa das Prinzip sein nach dem der Bot funktionieren soll, nachher gebe ich ihm mehr als einen Sensor damit er besser entscheiden kann...

Ich werde da noch ein bisschen den Zufallsfaktor mit einbringen und kleine hindernisse, sollte ja wie gesagt vorerst das Grundprinzip sein.


mfg

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group