Seite 1 von 1

labyrinth

Verfasst: Mittwoch 17. Februar 2010, 16:53
von S.
hallo :)

also ich hab ein problem bei programmieren eines Labyrinths...das heißt eigentlich habe ich das labyrinth an sich schon programmiert aber jetzt soll sich ein roboter noch durch das labyrinth finden!!

Er muss irgendwie erkennen können wo eine "wand" ist und wo nicht, wenn da eine "wand" ist, soll er sich um 90 grad drehen und gucken, ob er da weiter kommt....

Irgendwie komme ich da nicht weiter und hab überlegt, ob hier vielleicht jemand eine Idee haben könnten?!
Wär lieb wenn mir jemand weiter helfen kann :) DANKE

Verfasst: Mittwoch 17. Februar 2010, 16:56
von Leonidas
Hallo S., willkommen im Forum,

Na ohne deinen Quelltext wird wohl keiner eine Idee haben.

Verfasst: Mittwoch 17. Februar 2010, 17:03
von S.
ohh :D dann stell ich den mal rein ;)

from xturtle import*

#Labyrinth

def hori(liste):
global i
i = 0
a1 = 0
while i < len(liste):
if liste[a1] > 0:
pd()
fd(40)
pu()
a1 = a1 + 1
else:
fd(40)
a1 = a1 + 1
i = i + 1
back(240)
rt(90)
fd(40)
lt(90)



def verti(liste):
global i
i = 0
a = 0
while i < len(liste):
if liste[a] > 0:
pd()
lt(90)
fd(40)
pu()
back(40)
rt(90)
fd(40)
a = a + 1
else:
fd(40)
a = a + 1
i = i + 1
back(280)
rt(90)
fd(40)
lt(90)

pu()
pensize(6)
lt(90)
fd(120)
lt(90)
fd(120)
lt(180)

#horizontal

a1 = [1,1,1,1,1,1]
b1 = [0,0,1,0,1,0]
c1 = [0,1,1,0,1,0]
d1 = [1,1,0,1,0,1]
e1 = [0,1,0,1,1,0]
f1 = [1,1,1,1,2,1]

hori(a1)
hori(b1)
hori(c1)
hori(d1)
hori(e1)
hori(f1)

rt(90)
back(200)
lt(90)

#vertikal

a = [2,0,0,0,0,0,1]
b = [1,0,1,0,0,1,1]
c = [1,0,1,1,1,0,1]
d = [1,0,0,0,0,0,1]
e = [1,1,0,0,0,1,1]


verti(a)
verti(b)
verti(c)
verti(d)
verti(e)

#Roboter

left(90)
fd(220)
right(90)
fd(20)

k = 1
x = a[k]
y = 0
while (x != 2):
if (x == 0):
fd(40)
y = y + 1
if (y >= 0) and (a[k + y - 2] == 0):
x = a[k + y - 2]
else:
right(90)
fd(40)

Verfasst: Mittwoch 17. Februar 2010, 17:06
von Hyperion
Bei längerem Quellcode lagere ihn mal lieber in ein paste bin aus, etwas paste.pocoo.org.

Desweiteren gibt s hier code tags: [ code=py ] ohne die Leerzeichen. Damit gehen die Einrückungen nicht verloren.

Verfasst: Mittwoch 17. Februar 2010, 17:46
von S.
http://paste.pocoo.org/show/179340/

ich weiß nicht ob ich das so richtig gemacht habe...ich hoffe es :)

Verfasst: Mittwoch 17. Februar 2010, 17:50
von numerix
S. hat geschrieben:http://paste.pocoo.org/show/179340/

ich weiß nicht ob ich das so richtig gemacht habe...ich hoffe es :)
Der Wille war jedenfalls da. Aber:
1. Wenn du exakt den gleichen Code 1x hier und 1x ausgelagert postest, dann bringt es nix.
2. Sicher hast du schon gelernt, dass in Python Einrückungen eine wichtige Rolle spielen. Fällt dir auf, dass dein gezeigter Code - und zwar in beiden Fällen - keine Einrückungen aufweist, obwohl es z.B. Funktionsdefinitionen usw. gibt?

Das müsstest du erst einmal hinbiegen ...

Verfasst: Mittwoch 17. Februar 2010, 17:59
von S.
http://paste.pocoo.org/show/179344/

sorry, das ist jetzt das richtige :)

Verfasst: Mittwoch 17. Februar 2010, 18:18
von numerix
S. hat geschrieben:http://paste.pocoo.org/show/179344/

sorry, das ist jetzt das richtige :)
Nein, ist es nicht. Der Code läuft nicht.

Verfasst: Mittwoch 17. Februar 2010, 19:00
von Dav1d
Ich glaub so solls sein http://paste.pocoo.org/show/179380/

Verfasst: Donnerstag 18. Februar 2010, 13:48
von S.
DANKE :)