Package fmg.fmg8.statistik

Source Code of fmg.fmg8.statistik.RobSnapshot

/*
* Datei:            RobSnapshot.java
* Autor(en):        Lukas K�nig
* Java-Version:     1.4
* Erstellt (vor): 31.03.2008
*
* (c) Lukas K�nig, die Datei unterliegt der LGPL
* -> http://www.gnu.de/lgpl-ger.html
*/

package fmg.fmg8.statistik;

import java.io.Serializable;

import fmg.fmg8.endlAutomat.RobCode;
import fmg.fmg8.endlAutomat.conditions.Condition;
import fmg.fmg8.sonstiges.SonstMeth;
import fmg.fmg8.umgebung2D.Roboter;
import fmg.fmg8.umgebung2D.Vektor2D;


/**
* Klasse zur Beschreibung eines Roboterschnappschusses, der Informationen
* zur Rekonstruktion eines Roboters mit Automat und Position auf dem Feld
* enth�lt. Der Roboter wird jedoch nicht mit allen Konstanten und Attributen
* gespeichert, sondern nur mit denen, bei denen im Lauf einer Simulation
* mit �nderungen zu rechnen ist (bspw. wird die Ausdehnung eines Roboters
* oder die Einstellung seiner Sensoren nicht gespeichert).
*
* @author Lukas K�nig
*/
public class RobSnapshot extends RobCode implements Serializable {

    /**
     * Die VersionsID vom 31.03.08.
     */
    private static final long serialVersionUID = -8297770286453865871L;

    /**
     * Die Sensoren.
     */
    private int[] sensoren;
   
    /**
     * Die Position.
     */
    private Vektor2D position;
   
    /**
     * Der Blickwinkel.
     */
    private double winkel;
   
    /**
     * Die Breite des Roboters.
     */
    private double breite;
   
    /**
     * Die L�nge des Roboters.
     */
    private double laenge;
   
    /**
     * Der Zustand, in dem sich der Roboter aktuell befindet.
     */
    private int zustand;
   
    /**
     * Konstruktor, der einen Schnappschuss aufgrund von separat von einem
     * vorhandenen Roboterobjekt gegebenen Daten erzeugt.
     *
     * @param idNum          Die Identifikationsnummer.
     * @param bewertungen    Die Bewertungen.
     * @param vSequenzen     Die echten Sequenzen der Verhaltensautomaten.
     * @param vStdSequenzen  Die Standardsequenzen der Verhaltensautomaten.
     * @param conditions     Die Bedingungen.
     * @param tSequenzen     Die echten Sequenzen der Translatoren.
     * @param tStdSequenzen  Die Translatoren als Standardcode.
     * @param sens           Die Sensoren.
     * @param pos            Position des Roboters.
     * @param wink           Der Blickwinkel des Roboters.
     * @param zust           Der aktuelle Zustand des Roboters.
     * @param breit          Breite.
     * @param lang           L�nge.
     */
    private RobSnapshot(final int idNum,
                        final int[] bewertungen,
                        final String[] vSequenzen,
                        final String[] vStdSequenzen,
                        final Condition[] conditions,
                        final String[] tSequenzen,
                        final String[] tStdSequenzen,
                        final int[] sens,
                        final Vektor2D pos,
                        final double wink,
                        final int zust,
                        final double breit,
                        final double lang) {
       
        super(
                idNum,
                bewertungen,
                vStdSequenzen,
                conditions,
                tStdSequenzen,
                tSequenzen,
                vSequenzen);
       
        this.sensoren = new int[sens.length];
        for (int i = 0; i < sens.length; i++) {
            this.sensoren[i] = sens[i];
        }
       
        this.position = new Vektor2D(pos.x, pos.y);
        this.winkel = wink;
        this.zustand = zust;
        this.breite = breit;
        this.laenge = lang;
    }
   
    /**
     * Konstruktor, der die Informationen f�r den Schnappschuss aus einem
     * vorhandenen Roboterobjekt extrahiert.
     *
     * @param rob        Der Roboter, von dem ein Schnappschuss erzeugt
     *                   werden soll.
     * @param automaten  Ob die Automaten (und Bedingungen) auch gespeichert
     *                   werden sollen.
     */
    public RobSnapshot(final Roboter rob, final boolean automaten) {
        this(rob.getId(),
             rob.getFitness(),
             SonstMeth.erzeugeSeqs(
                     SonstMeth.stringAusListSeqs(rob.getVerhCodes()),
                     automaten),
             SonstMeth.erzeugeSeqs(rob.erzeugeStrSeqs(), automaten),
             SonstMeth.erzeugeConds(rob.getConds(), automaten),
             SonstMeth.erzeugeSeqs(
                     SonstMeth.stringAusListSeqs(rob.getTransCodes()),
                     automaten),
             rob.getTransStdCodes(),
             rob.getSensorWerte(),
             rob.getPosition(),
             rob.getWinkel(),
             RobSnapshot.findeAktZust(rob),
             rob.getAusd().x,
             rob.getAusd().y);
    }

    /**
     * Gibt die Zustandsnummer eines Roboters zur�ck, falls er sich in einem
     * g�ltigen Zustand befindet, -1 sonst.
     *
     * @param rob  Der Roboter.
     *
     * @return  Die Zustandsnummer oder -1.
     */
    private static int findeAktZust(final Roboter rob) {
        int zuSt = -1;
       
        if (rob.getAktZustand() != null) {
            zuSt = ((Integer) rob.getAktZustand().holeName()).intValue();
        }
       
        return zuSt;
    }
   
    /**
     * @return Returns the sensoren.
     */
    public int[] getSensoren() {
        return this.sensoren;
    }

    /**
     * @return Returns the position.
     */
    public Vektor2D getPosition() {
        return this.position;
    }

    /**
     * @return Returns the winkel.
     */
    public double getWinkel() {
        return this.winkel;
    }

    /**
     * @return Returns the zustand.
     */
    public int getZustand() {
        return this.zustand;
    }

    /**
     * @return  Breite.
     */
    public double getBreite() {
        return this.breite;
    }

    /**
     * @return  L�nge.
     */
    public double getLaenge() {
        return this.laenge;
    }
}
TOP

Related Classes of fmg.fmg8.statistik.RobSnapshot

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.