labyrinth

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
S.
User
Beiträge: 6
Registriert: Mittwoch 17. Februar 2010, 16:25

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
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Hallo S., willkommen im Forum,

Na ohne deinen Quelltext wird wohl keiner eine Idee haben.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
S.
User
Beiträge: 6
Registriert: Mittwoch 17. Februar 2010, 16:25

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)
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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.
S.
User
Beiträge: 6
Registriert: Mittwoch 17. Februar 2010, 16:25

http://paste.pocoo.org/show/179340/

ich weiß nicht ob ich das so richtig gemacht habe...ich hoffe es :)
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

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 ...
S.
User
Beiträge: 6
Registriert: Mittwoch 17. Februar 2010, 16:25

http://paste.pocoo.org/show/179344/

sorry, das ist jetzt das richtige :)
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

S. hat geschrieben:http://paste.pocoo.org/show/179344/

sorry, das ist jetzt das richtige :)
Nein, ist es nicht. Der Code läuft nicht.
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Ich glaub so solls sein http://paste.pocoo.org/show/179380/
the more they change the more they stay the same
S.
User
Beiträge: 6
Registriert: Mittwoch 17. Februar 2010, 16:25

DANKE :)
Antworten