Softwareumgebung:Konfigurationsdatei

Aus Kicker
Version vom 3. Dezember 2012, 17:12 Uhr von Scharel (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springenZur Suche springen

Folgende Datei beinhaltet die meisten Konfigurationen. Sie ist ausführlich kommentiert um den Aufbau zu erläutern. Änderungen an den Werten können angewandt werden, ohne den Quellcode verändern zu müssen, die Struktur muss jedoch erhalten bleiben. Die entsprechende Datei, die im Betrieb verwendet wird, ist nicht mit Kommentaren versehen, da diese die Funktionalität von tinyxml beeinträchtigt haben.

<?xml version="1.0" encoding="utf-8"?>
<!-- XML Wurzelelement -->
<profile>

  <!-- Verbindungsinformationen -->
  <connections>
    <!-- Eigener Rechnername/IP-Adresse -->
    <localhost host="localhost" />
    <!-- Rechnername/IP-Adresse von der SPSchnittstelle -->
    <SPServer host="localhost" port="50000" />
    <!-- Rechnername/IP-Adresse der Ballerkennung -->
    <Ball host="localhost" port="50001" />
    <!-- Rechnername/IP-Adresse der GUI (noch nicht implementiert) -->
    <Gui host="localhost" port="60002" />
    <!-- Rechnername/IP-Adresse vom Client der Spielsteuerung zur SPSchnittstelle -->
    <KiSPServer host="localhost" port="60000" />
    <!-- Rechnername/IP-Adresse vom Client der Spielsteuerung zur Ballerkennung -->
    <KiBall host="localhost" port="60001" />
    <!-- Rechnername/IP-Adresse vom Client der Spielsteuerung zur GUI (noch nicht implementiert) -->
    <KiGui host="localhost" port="50002" />
    <!-- Rechnername/IP-Adresse -->
    <HighScore host="localhost" port="60020" />
  </connections>

  <!-- Abmessungen -->
  <dimensions>
  
    <!-- Größe des Spielsfeldes -->
    <field depth="690" breadth="1200">
      <!-- Breite des Tores -->
      <goal width="198" />
    </field>

    <!-- Spielstangen-bezogene Informationen -->
    <axis>
    
      <!-- Spielstange 1 (Torward) -->
      <one>
        <!-- Position der ersten Spielfigur (und einzigen) auf der Spielstange -->
        <figure pos="221" />
        <!-- Maximaler Verfahrweg der Spielstange -->
        <shift value="241" />
        <!-- Position der Spielstange entlang der X-Achse -->
        <pos x="75" />
      </one>

      <!-- Spielstange 2 (Abwehr) -->
      <two>
        <!-- Position der ersten Spielfigur auf der Spielstange -->
        <figure pos="38" />
        <!-- Position der zweiten Spielfigur auf der Spielstange -->
        <figure pos="270" />
        <!-- Maximaler Verfahrweg der Spielstange -->
        <shift value="377" />
        <!-- Position der Spielstange entlang der X-Achse -->
        <pos x="225" />
      </two>
      
      <!-- Spielstange 3 (Mittelfeld) -->
      <three>
        <!-- Position der ersten Spielfigur auf der Spielstange -->
        <figure pos="38" />
        <!-- Position der zweiten Spielfigur auf der Spielstange -->
        <figure pos="159" />
        <!-- Position der dritten Spielfigur auf der Spielstange -->
        <figure pos="280" />
        <!-- Position der vierten Spielfigur auf der Spielstange -->
        <figure pos="401" />
        <!-- Position der fünften Spielfigur auf der Spielstange -->
        <figure pos="522" />
        <!-- Maximaler Verfahrweg der Spielstange -->
        <shift value="120" />
        <!-- Position der Spielstange entlang der X-Achse -->
        <pos x="525" />
      </three>
      
      <!-- Spielstange 4 (Sturm) -->
      <four>
        <!-- Position der ersten Spielfigur auf der Spielstange -->
        <figure pos="38" />
        <!-- Position der zweiten Spielfigur auf der Spielstange -->
        <figure pos="221" />
        <!-- Position der dritten Spielfigur auf der Spielstange -->
        <figure pos="404" />
        <!-- Maximaler Verfahrweg der Spielstange -->
        <shift value="233" />
        <!-- Position der Spielstange entlang der X-Achse -->
        <pos x="825" />
      </four>
      
      <!-- Abstand der Spielstangen, von einer Reihe eines Spielers, zur nächsten Reihe, des selben Spielers, zueinander -->
      <distance value="150" />

      <!-- Abstand, der zu den Banden gehalten werden soll, um nicht gegen diese zu donnern -->
      <offset value="6" />

    </axis>
    
    <!-- Maximale Geschwindigkeit, für Translation und Rotation -->
    <velocity trans="2000" rot="4285" />
    
    <!-- Abmaße der Spielfiguren: Fußbreite, Höhe von Spielstange bis zum Fuß, Dicke des Fußes und Abstand vom Fuß zum Spielfeld -->
    <figure breadth="22" height="72" thickness="11" fielddistance="8" />
    
    <!-- Ballabmaße:    Durchmesser,
                        Abstand in X-Richtung, zur Spielstange, bei dem der Ball noch so getroffen werden kann, dass er geschossen wird
                        Abstand in X-Richtung, zur Spielstange, bei dem der Ball noch getroffen werden kann, aber nicht mehr geschossen
    -->
    <ball diameter="33" toaxisshootable="45" toaxisreachable="64" />
    
  </dimensions>
  
  
  <!-- Stati,   sie haben einen Standard-/Start-, Minimal- und Maximalwert
                und werden dazu benutzt den Status interner Objekte zu beschreiben
                während des Programmablaufs, können sie siech verändern
                (werden in der aktuellen Programmierung kaum benutzt, soll aber integriert werden)
  -->
  <states>
  
    <!-- Standard-/Start-, Minimal- und Maximalwerte -->
    <values>
    
      <!-- Stati bezüglich des Spielverlaufs -->
      <game>
        <!-- Angabe ob gerade ein Spiel läuft (0=Nein; 1=Ja) -->
        <running default="0" min="0" max="1" />
        <!-- Punktestand des Computers -->
        <computerscore default="0" min="0" max="10" />
        <!-- Punktestand des Menschen -->
        <humanscore default="0" min="0" max="10" />
      </game>
      
      <!-- Globale Stati des Programms -->
      <global>
        <!-- Grad, wie weit das Programm geladen hat, bei "max", ist das Programm betriebsbereit -->
        <ready default="0" min="0" max="8" />
      </global>
      
      <!-- Stati bezüglich der Klasse Config -->
      <config>
        <!-- Angabe, ob die Klasse Config betriebsbereit ist -->
        <ready default="0" min="0" max="1" />
      </config>
      
      <!-- Stati bezüglich der Klasse KnowledgeBase -->
      <knowledgebase>
        <!-- Angabe, ob die Klasse KnowledgeBase betriebsbereit ist -->
        <ready default="0" min="0" max="1" />
      </knowledgebase>
      
      <!-- Stati bezüglich der Klasse Ball -->
      <ball>
        <!-- Angabe, ob die Klasse Ball betriebsbereit ist -->
        <ready default="0" min="0" max="1" />
      </ball>
      
      <!-- Stati bezüglich der Klasse Kicker -->
      <kicker>
        <!-- Angabe, ob die Klasse Kicker betriebsbereit ist -->
        <ready default="0" min="0" max="1" />
      </kicker>
      
      <!-- Stati bezügluch der ersten Spielstange des Computers -->
      <axis1computer>
        <!-- Angabe, ob die Instanz der Klasse AxisAgent der ersten Spielstange betriebsbereit ist -->
        <ready default="0" min="0" max="1" />
        <!-- Angabe, ob die Spielstange blockiert -->
        <blocking default="0" min="0" max="1" />
        <!-- Angabe, ob sich die Spielstange bewegt, der Wert gibt die Richtung und die Geschwindigkeit an -->
        <moving default="0" min="-10" max="10" />
        <!-- Angabe, ob die Spielstange einen Schuss ausführt -->
        <shooting default="0" min="0" max="1" />
        <!-- Angabe, ob die Spielstange "wobbelt", also sich hin und her bewegt -->
        <wobbling default="0" min="-1" max="1" />
      </axis1computer>
      
      <!-- Stati bezügluch der zweiten Spielstange des Computers -->
      <axis2computer>
        <!-- Angabe, ob die Instanz der Klasse AxisAgent der ersten Spielstange betriebsbereit ist -->
        <ready default="0" min="0" max="1" />
        <!-- Angabe, ob die Spielstange blockiert -->
        <blocking default="0" min="0" max="1" />
        <!-- Angabe, ob sich die Spielstange bewegt, der Wert gibt die Richtung und die Geschwindigkeit an -->
        <moving default="0" min="-10" max="10" />
        <!-- Angabe, ob die Spielstange einen Schuss ausführt -->
        <shooting default="0" min="0" max="1" />
        <!-- Angabe, ob die Spielstange "wobbelt", also sich hin und her bewegt -->
        <wobbling default="0" min="-1" max="1" />
      </axis2computer>
      
      <!-- Stati bezügluch der dritten Spielstange des Computers -->
      <axis3computer>
        <!-- Angabe, ob die Instanz der Klasse AxisAgent der ersten Spielstange betriebsbereit ist -->
        <ready default="0" min="0" max="1" />
        <!-- Angabe, ob die Spielstange blockiert -->
        <blocking default="0" min="0" max="1" />
        <!-- Angabe, ob sich die Spielstange bewegt, der Wert gibt die Richtung und die Geschwindigkeit an -->
        <moving default="0" min="-10" max="10" />
        <!-- Angabe, ob die Spielstange einen Schuss ausführt -->
        <shooting default="0" min="0" max="1" />
        <!-- Angabe, ob die Spielstange "wobbelt", also sich hin und her bewegt -->
        <wobbling default="0" min="-1" max="1" />
      </axis3computer>
      
      <!-- Stati bezügluch der vierten Spielstange des Computers -->
      <axis4computer>
        <!-- Angabe, ob die Instanz der Klasse AxisAgent der ersten Spielstange betriebsbereit ist -->
        <ready default="0" min="0" max="1" />
        <!-- Angabe, ob die Spielstange blockiert -->
        <blocking default="0" min="0" max="1" />
        <!-- Angabe, ob sich die Spielstange bewegt, der Wert gibt die Richtung und die Geschwindigkeit an -->
        <moving default="0" min="-10" max="10" />
        <!-- Angabe, ob die Spielstange einen Schuss ausführt -->
        <shooting default="0" min="0" max="1" />
        <!-- Angabe, ob die Spielstange "wobbelt", also sich hin und her bewegt -->
        <wobbling default="0" min="-1" max="1" />
      </axis4computer>
      
      <!-- Der Aufbau der Stati des Menschen, ist der Gleiche, wie beim Computer,
            dies mach nicht unbedingt Sinn, hat sich aber so wegen der automatischen Interpretierung dieser Datei ergeben -->
      <!-- Stati bezügluch der ersten Spielstange des Menschen -->
      <axis1human>
        <!-- Angabe, ob die Spielstange bereit ist -->
        <ready default="0" min="0" max="1" />
        <!-- Angabe, ob die Spielstange blockiert -->
        <blocking default="0" min="0" max="1" />
        <!-- Angabe, ob sich die Spielstange bewegt, der Wert gibt die Richtung und die Geschwindigkeit an -->
        <moving default="0" min="-10" max="10" />
        <!-- Angabe, ob die Spielstange einen Schuss ausführt -->
        <shooting default="0" min="0" max="1" />
        <!-- Angabe, ob die Spielstange "wobbelt", also sich hin und her bewegt -->
        <wobbling default="0" min="-1" max="1" />
      </axis1human>
      
      <!-- Stati bezügluch der zweiten Spielstange des Menschen -->
      <axis2human>
        <!-- Angabe, ob die Spielstange bereit ist -->
        <ready default="0" min="0" max="1" />
        <!-- Angabe, ob die Spielstange blockiert -->
        <blocking default="0" min="0" max="1" />
        <!-- Angabe, ob sich die Spielstange bewegt, der Wert gibt die Richtung und die Geschwindigkeit an -->
        <moving default="0" min="-10" max="10" />
        <!-- Angabe, ob die Spielstange einen Schuss ausführt -->
        <shooting default="0" min="0" max="1" />
        <!-- Angabe, ob die Spielstange "wobbelt", also sich hin und her bewegt -->
        <wobbling default="0" min="-1" max="1" />
      </axis2human>
      
      <!-- Stati bezügluch der dritten Spielstange des Menschen -->
      <axis3human>
        <!-- Angabe, ob die Spielstange bereit ist -->
        <ready default="0" min="0" max="1" />
        <!-- Angabe, ob die Spielstange blockiert -->
        <blocking default="0" min="0" max="1" />
        <!-- Angabe, ob sich die Spielstange bewegt, der Wert gibt die Richtung und die Geschwindigkeit an -->
        <moving default="0" min="-10" max="10" />
        <!-- Angabe, ob die Spielstange einen Schuss ausführt -->
        <shooting default="0" min="0" max="1" />
        <!-- Angabe, ob die Spielstange "wobbelt", also sich hin und her bewegt -->
        <wobbling default="0" min="-1" max="1" />
      </axis3human>
      
      <!-- Stati bezügluch der vierten Spielstange des Menschen -->
      <axis4human>
        <!-- Angabe, ob die Spielstange bereit ist -->
        <ready default="0" min="0" max="1" />
        <!-- Angabe, ob die Spielstange blockiert -->
        <blocking default="0" min="0" max="1" />
        <!-- Angabe, ob sich die Spielstange bewegt, der Wert gibt die Richtung und die Geschwindigkeit an -->
        <moving default="0" min="-10" max="10" />
        <!-- Angabe, ob die Spielstange einen Schuss ausführt -->
        <shooting default="0" min="0" max="1" />
        <!-- Angabe, ob die Spielstange "wobbelt", also sich hin und her bewegt -->
        <wobbling default="0" min="-1" max="1" />
      </axis4human>
      
      <!-- Stati bezügluch der Ballposition -->
      <ballpos>
        <!-- Angabe, ob sich der Ball unter Kontrolle des Computers befindet -->
        <computerpossession default="0" min="0" max="1" />
        <!-- Angabe, ob sich der Ball unter Kontrolle des Menschen befindet -->
        <humanpossession default="0" min="0" max="1" />
        <!-- Angabe, ob sich der Ball bewegt, der Wert gibt die Richtung und die Geschwindigkeit an -->
        <speed default="0" min="-10" max="10" />
      </ballpos>
      
      <!-- Stati bezügluch der Ballposition gegenüber der ersten Spielstange des Computers -->
      <ballpostoaxis1computer>
        <!-- Angabe, ob und wie gut der Ball gehalten/geblockt werden kann -->
        <holdable default="0" min="0" max="10" />
        <!-- Angabe, ob und wie gut der Ball durchgelassen werden kann -->
        <passable default="0" min="0" max="10" />
        <!-- Angabe, ob und wie gut der Ball geschossen werden kann -->
        <shootable default="0" min="0" max="10" />
        <!-- Angabe, ob und wie gut der Ball gehandhabt/kontrolliert werden kann -->
        <handable default="0" min="0" max="10" />
      </ballpostoaxis1computer>
      
      <!-- Stati bezügluch der Ballposition gegenüber der zweiten Spielstange des Computers -->
      <ballpostoaxis2computer>
        <!-- Angabe, ob und wie gut der Ball gehalten/geblockt werden kann -->
        <holdable default="0" min="0" max="10" />
        <!-- Angabe, ob und wie gut der Ball durchgelassen werden kann -->
        <passable default="0" min="0" max="10" />
        <!-- Angabe, ob und wie gut der Ball geschossen werden kann -->
        <shootable default="0" min="0" max="10" />
        <!-- Angabe, ob und wie gut der Ball gehandhabt/kontrolliert werden kann -->
        <handable default="0" min="0" max="10" />
      </ballpostoaxis2computer>
      
      <!-- Stati bezügluch der Ballposition gegenüber der dritten Spielstange des Computers -->
      <ballpostoaxis3computer>
        <!-- Angabe, ob und wie gut der Ball gehalten/geblockt werden kann -->
        <holdable default="0" min="0" max="10" />
        <!-- Angabe, ob und wie gut der Ball durchgelassen werden kann -->
        <passable default="0" min="0" max="10" />
        <!-- Angabe, ob und wie gut der Ball geschossen werden kann -->
        <shootable default="0" min="0" max="10" />
        <!-- Angabe, ob und wie gut der Ball gehandhabt/kontrolliert werden kann -->
        <handable default="0" min="0" max="10" />
      </ballpostoaxis3computer>
      
      <!-- Stati bezügluch der Ballposition gegenüber der vierten Spielstange des Computers -->
      <ballpostoaxis4computer>
        <!-- Angabe, ob und wie gut der Ball gehalten/geblockt werden kann -->
        <holdable default="0" min="0" max="10" />
        <!-- Angabe, ob und wie gut der Ball durchgelassen werden kann -->
        <passable default="0" min="0" max="10" />
        <!-- Angabe, ob und wie gut der Ball geschossen werden kann -->
        <shootable default="0" min="0" max="10" />
        <!-- Angabe, ob und wie gut der Ball gehandhabt/kontrolliert werden kann -->
        <handable default="0" min="0" max="10" />
      </ballpostoaxis4computer>
      
      <!-- Stati bezügluch der Ballposition gegenüber der ersten Spielstange des Menschen -->
      <ballpostoaxis1human>
        <!-- Angabe, ob und wie gut der Ball gehalten/geblockt werden kann -->
        <holdable default="0" min="0" max="10" />
        <!-- Angabe, ob und wie gut der Ball durchgelassen werden kann -->
        <passable default="0" min="0" max="10" />
        <!-- Angabe, ob und wie gut der Ball geschossen werden kann -->
        <shootable default="0" min="0" max="10" />
        <!-- Angabe, ob und wie gut der Ball gehandhabt/kontrolliert werden kann -->
        <handable default="0" min="0" max="10" />
      </ballpostoaxis1human>
      
      <!-- Stati bezügluch der Ballposition gegenüber der zweiten Spielstange des Menschen -->
      <ballpostoaxis2human>
        <!-- Angabe, ob und wie gut der Ball gehalten/geblockt werden kann -->
        <holdable default="0" min="0" max="10" />
        <!-- Angabe, ob und wie gut der Ball durchgelassen werden kann -->
        <passable default="0" min="0" max="10" />
        <!-- Angabe, ob und wie gut der Ball geschossen werden kann -->
        <shootable default="0" min="0" max="10" />
        <!-- Angabe, ob und wie gut der Ball gehandhabt/kontrolliert werden kann -->
        <handable default="0" min="0" max="10" />
      </ballpostoaxis2human>
      
      <!-- Stati bezügluch der Ballposition gegenüber der dritten Spielstange des Menschen -->
      <ballpostoaxis3human>
        <!-- Angabe, ob und wie gut der Ball gehalten/geblockt werden kann -->
        <holdable default="0" min="0" max="10" />
        <!-- Angabe, ob und wie gut der Ball durchgelassen werden kann -->
        <passable default="0" min="0" max="10" />
        <!-- Angabe, ob und wie gut der Ball geschossen werden kann -->
        <shootable default="0" min="0" max="10" />
        <!-- Angabe, ob und wie gut der Ball gehandhabt/kontrolliert werden kann -->
        <handable default="0" min="0" max="10" />
      </ballpostoaxis3human>
      
      <!-- Stati bezügluch der Ballposition gegenüber der vierten Spielstange des Menschen -->
      <ballpostoaxis4human>
        <!-- Angabe, ob und wie gut der Ball gehalten/geblockt werden kann -->
        <holdable default="0" min="0" max="10" />
        <!-- Angabe, ob und wie gut der Ball durchgelassen werden kann -->
        <passable default="0" min="0" max="10" />
        <!-- Angabe, ob und wie gut der Ball geschossen werden kann -->
        <shootable default="0" min="0" max="10" />
        <!-- Angabe, ob und wie gut der Ball gehandhabt/kontrolliert werden kann -->
        <handable default="0" min="0" max="10" />
      </ballpostoaxis4human>
    </values>
    
    <!-- Folgende Links waren ursprünglich gedacht um abhängige Stati miteinander zu verknüpfen,
         die Funktionalität wurde allerdings noch nicht umgesetzt -->
    <links>
      <game></game>
      <global>
        <updates group="game" state="running" />
      </global>
      <config>
        <updates group="global" state="ready" />
      </config>
      <knowledgebase>
        <updates group="global" state="ready" />
      </knowledgebase>
      <ball>
        <updates group="global" state="ready" />
      </ball>
      <kicker>
        <updates group="global" state="ready" />
      </kicker>
      <axis1computer>
        <updates group="global" state="ready" />
      </axis1computer>
      <axis2computer>
        <updates group="global" state="ready" />
      </axis2computer>
      <axis3computer>
        <updates group="global" state="ready" />
      </axis3computer>
      <axis4computer>
        <updates group="global" state="ready" />
      </axis4computer>
      <axis1human></axis1human>
      <axis2human></axis2human>
      <axis3human></axis3human>
      <axis4human></axis4human>
      <ballpos></ballpos>
      <ballpostoaxis1computer></ballpostoaxis1computer>
      <ballpostoaxis2computer></ballpostoaxis2computer>
      <ballpostoaxis3computer></ballpostoaxis3computer>
      <ballpostoaxis4computer></ballpostoaxis4computer>
      <ballpostoaxis1human></ballpostoaxis1human>
      <ballpostoaxis2human></ballpostoaxis2human>
      <ballpostoaxis3human></ballpostoaxis3human>
      <ballpostoaxis4human></ballpostoaxis4human>
    </links>
  </states>

  <!-- Schusswinkel - Offset -->
  <shootoffset>
    <!-- Folgende Werte geben an, mit welcher Abweichung, gegenüber der Ballposition, der Ball geschossen werden muss,
         um in einem bestimmten Winkel zu schießen -->
    <byRotation>
      <!-- Um in einem Winkel von 0° zu schießen, muss der Ball frontal getroffen werden -->
      <shoot angle="0" offset="0" />
      <!-- Um in einem Winkel von 10° zu schießen, muss der Ball mit einem Versatz von 18mm getroffen werden -->
      <shoot angle="10" offset="18" />
      <!-- Um in einem Winkel von 20° zu schießen, muss der Ball mit einem Versatz von 20mm getroffen werden -->
      <shoot angle="20" offset="20" />
      <!-- Um in einem Winkel von 30° zu schießen, muss der Ball mit einem Versatz von 22mm getroffen werden -->
      <shoot angle="30" offset="22" />
      <!-- Um in einem Winkel von 45° zu schießen, muss der Ball mit einem Versatz von 25mm getroffen werden -->
      <shoot angle="45" offset="25" />
    </byRotation>
    
    <!-- Folgende Werte geben an, mit welchem Winkel der Spielfiguren, der Ball seitlich geschoben werden muss,
         um einen bestimmten Winkel zu erreichen -->
    <byTranslation>
      <!-- Um den Ball mit 50° zu verschieben, müssen die Spielerfüße in einem Winkel von 20° stehen -->
      <shoot angle="50" offset="20" />
      <!-- Um den Ball mit 60° zu verschieben, müssen die Spielerfüße in einem Winkel von 17° stehen -->
      <shoot angle="60" offset="17" />
      <!-- Um den Ball mit 70° zu verschieben, müssen die Spielerfüße in einem Winkel von 15° stehen -->
      <shoot angle="70" offset="15" />
      <!-- Um den Ball mit 80° zu verschieben, müssen die Spielerfüße in einem Winkel von 13° stehen -->
      <shoot angle="80" offset="13" />
      <!-- Um den Ball mit 90° zu verschieben, müssen die Spielerfüße in einem Winkel von 0° stehen -->
      <shoot angle="90" offset="0" />
    </byTranslation>
  </shootoffset>

  <!-- Startpositionen -->
  <!--startpos>
    <axis>
      <one>
        <pos pos="124" angle="0" />
        <velo trans="800" rot="800" />
        <shoot exec="false" />
      </one>
      <two>
        <pos pos="191" angle="0" />
        <velo trans="800" rot="800" />
        <shoot exec="false" />
      </two>
      <three>
        <pos pos="65" angle="0" />
        <velo trans="800" rot="800" />
        <shoot exec="false" />
      </three>
      <four>
        <pos pos="124" angle="0" />
        <velo trans="800" rot="800" />
        <shoot exec="false" />
      </four>
    </axis>
    <ball x="0" y="0" />
    <score human="0" computer="0" />
  </startpos-->

  <!-- Sonstiges -->
  <other>
  </other>
</profile>