Kara - Automatenprogrammierung

flora.walker

Newbie
Registriert
Sep. 2012
Beiträge
1
Hallo!

Ich habe heute begonnen, mit Kara zu programmieren und bin nun in der Welt mit dem Namen "Kleeblattsuche im Wald IV (mittel)" angelangt. Aber ganz bekomme ich das nicht hin. Beim letzten Pilz ist dann der Hund drin.

Da hängts an der Bedingung "Pilz vorne - Ja; Baum links - Ja", sonst ist nichts in der Umgebung. Eigentlich habe ich ihm gesagt, dass er da nach rechts drehen und einen Schritt gehen soll, das macht er zwar, passt dort aber nicht. So habe ich rechts drehen mal weggenommen, dann stimmts aber für die Umgebung 2 nicht mehr... da er dann versucht den Pilz ewig weiter zu schieben...

Danke für eure Hilfe!

LG
Flora
 
Hi Flora,

Ich hab es so gelöst, dass ich einen Zustand habe, der bis zum nächsten Pilz bzw. bis zum Kleeblatt läuft (laufen) und einen der den Pilz schiebt (schieben).

laufen:
- kein Hindernis -> (geradeaus laufen; laufen)
- beim Treffen auf einen Pilz -> (keine Aktion; schieben)
- beim Treffen auf einen Baum -> (entsprechend drehen; laufen)
- beim Treffen auf das Kleeblatt -> (aufnehmen; stop)

schieben:
- links und rechts bäume -> (geradeaus laufen; schieben)
- rechts kein Baum -> (drehen nach rechts; laufen)
- links kein Baum -> (drehen nach links; laufen)

Dieser Automat löst beide Welten und ich hoffe ich habe das Spiel richtig verstanden und habe deine Frage beantwortet.

Hier nochmal der Automat (einfach als *.kara speichern, dann kannst du ihn laden):
Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<XmlStateMachines version="KaraX 1.0 kara">
    <XmlStateMachine startState="S" actor="Kara">
        <XmlState y="126.0" x="227.0" name="gerade" finalstate="false">
            <XmlSensors>
                <XmlSensor name="treeFront"/>
                <XmlSensor name="mushroomFront"/>
                <XmlSensor name="treeRight"/>
                <XmlSensor name="treeLeft"/>
                <XmlSensor name="onLeaf"/>
            </XmlSensors>
        </XmlState>
        <XmlState y="127.0" x="366.0" name="Stop" finalstate="true">
            <XmlSensors/>
        </XmlState>
        <XmlState y="125.0" x="100.0" name="S" finalstate="false">
            <XmlSensors>
                <XmlSensor name="mushroomFront"/>
            </XmlSensors>
        </XmlState>
        <XmlTransition to="gerade" from="gerade">
            <XmlSensorValues>
                <XmlSensorValue value="2" name="treeFront"/>
                <XmlSensorValue value="2" name="mushroomFront"/>
                <XmlSensorValue value="0" name="treeRight"/>
                <XmlSensorValue value="0" name="treeLeft"/>
                <XmlSensorValue value="2" name="onLeaf"/>
            </XmlSensorValues>
            <XmlCommands>
                <XmlCommand name="move"/>
            </XmlCommands>
        </XmlTransition>
        <XmlTransition to="S" from="gerade">
            <XmlSensorValues>
                <XmlSensorValue value="2" name="treeFront"/>
                <XmlSensorValue value="1" name="mushroomFront"/>
                <XmlSensorValue value="0" name="treeRight"/>
                <XmlSensorValue value="0" name="treeLeft"/>
                <XmlSensorValue value="2" name="onLeaf"/>
            </XmlSensorValues>
            <XmlCommands/>
        </XmlTransition>
        <XmlTransition to="gerade" from="gerade">
            <XmlSensorValues>
                <XmlSensorValue value="1" name="treeFront"/>
                <XmlSensorValue value="0" name="mushroomFront"/>
                <XmlSensorValue value="1" name="treeRight"/>
                <XmlSensorValue value="0" name="treeLeft"/>
                <XmlSensorValue value="2" name="onLeaf"/>
            </XmlSensorValues>
            <XmlCommands>
                <XmlCommand name="turnLeft"/>
            </XmlCommands>
        </XmlTransition>
        <XmlTransition to="gerade" from="gerade">
            <XmlSensorValues>
                <XmlSensorValue value="1" name="treeFront"/>
                <XmlSensorValue value="0" name="mushroomFront"/>
                <XmlSensorValue value="0" name="treeRight"/>
                <XmlSensorValue value="1" name="treeLeft"/>
                <XmlSensorValue value="2" name="onLeaf"/>
            </XmlSensorValues>
            <XmlCommands>
                <XmlCommand name="turnRight"/>
            </XmlCommands>
        </XmlTransition>
        <XmlTransition to="Stop" from="gerade">
            <XmlSensorValues>
                <XmlSensorValue value="0" name="treeFront"/>
                <XmlSensorValue value="0" name="mushroomFront"/>
                <XmlSensorValue value="0" name="treeRight"/>
                <XmlSensorValue value="0" name="treeLeft"/>
                <XmlSensorValue value="1" name="onLeaf"/>
            </XmlSensorValues>
            <XmlCommands>
                <XmlCommand name="removeLeaf"/>
            </XmlCommands>
        </XmlTransition>
        <XmlTransition to="gerade" from="S">
            <XmlSensorValues>
                <XmlSensorValue value="1" name="mushroomFront"/>
            </XmlSensorValues>
            <XmlCommands>
                <XmlCommand name="move"/>
                <XmlCommand name="turnLeft"/>
                <XmlCommand name="move"/>
            </XmlCommands>
        </XmlTransition>
    </XmlStateMachine>
    <XmlSensorDefinition name="treeFront" identifier="treeFront" description="Baum vorne?"/>
    <XmlSensorDefinition name="treeLeft" identifier="treeLeft" description="Baum links?"/>
    <XmlSensorDefinition name="treeRight" identifier="treeRight" description="Baum rechts?"/>
    <XmlSensorDefinition name="mushroomFront" identifier="mushroomFront" description="Pilz vorne?"/>
    <XmlSensorDefinition name="onLeaf" identifier="onLeaf" description="Kleeblatt unten?"/>
</XmlStateMachines>
 
Zuletzt bearbeitet:
Zurück
Oben