Java-Code?

Wie sieht die Methode Punktspiegelung und horizonalspieglung aus?

Implementieren Sie die Operation punktSpiegeln, die alle Punkte am Mittelpunkt des Bildes spiegelt.

Implementieren Sie in SWBild die Operation horizontalSpiegeln, die das Bild an der horizontalen Achse spiegelt.Für die Lösung zu dieser Operation ist kein zusätzliches Array-Objekt zugelassen, sie muss also „in place“ erfolgen

/**
 * SWBild ist eine Klasse, die Graustufenbilder repraesentiert und
 * manipuliert. Die Implementierung erfolgt durch ein einfaches
 * Bildformat: Die Bildpunkte werden in einem zweidimensionalen
 * Array von 'short'-Werten gehalten. Jeder Feldeintrag kann einen
 * Wert zwischen 0 und 255 annehmen. Andere Werte sind unzulaessig.
 * Der Wertebereich [0..255] repraesentiert den Graustufenbereich:
 * 0 fuer Schwarz, 255 fuer Weiss und dazwischenliegende Werte fuer
 * die Grauabstufungen.
 * 
 * Beispielmethode 'dunkler': Ein geladenes Bild kann um
 * ein gegebenes 'delta' abgedunkelt werden.
 * 
 */
class SWBild
{
    private int anzahlPiksel=0;


    // die Bilddaten dieses Bildes
    private short[][] _bilddaten;


    // die Breite dieses Bildes
    private int _breite;


    // die Hoehe dieses Bildes
    private int _hoehe;


    // Leinwand zur Anzeige
    private Leinwand _leinwand;


    /**
     * Initialisiert ein Bild mit einer Bilddatei. Der Benutzer kann interaktiv mit
     * Hilfe eines Dateidialogs die zu ladende Datei auswaehlen.
     */
    public SWBild()
    {
        _bilddaten = BildEinleser.liesBilddaten();
        if (_bilddaten != null)
        {
            aktualisiereBildgroesse(_bilddaten);
            erzeugeLeinwand();
        }
    }


    /**
     * Initialisiert ein Bild mit einer Bilddatei. Der Dateiname kann als absoluter
     * oder relativer Pfad uebergeben werden.
     * 
     * @param bilddateiName
     *            der Name der Bilddatei
     */
    public SWBild(String bilddateiName)
    {
        _bilddaten = BildEinleser.liesBilddaten(bilddateiName);
        aktualisiereBildgroesse(_bilddaten);
        erzeugeLeinwand();
    }

/**
     * Erzeuge bei diesem Bild einen Spot mit Radius r, Mittelpunkt x0,y0 und
     * Beleuchtungsintensitaet i. Ausserhalb von r nimmt die Ausleuchtung linear ab.
     * Wie im wirklichen Leben...
     * 
     * @param xo
     *            x-Koordinate des Mittelpunktes
     * @param yo
     *            y-Koordinate des Mittelpunktes
     * @param r
     *            Radius
     * @param i
     *            Beleuchtungsintesitaet
     */
    public void spot(int x0, int y0, int r, short i)
}


Mathematik, programmieren, Java, Informatik, Python, Softwareentwicklung, Wirtschaftsinformatik, technische informatik, angewandte Informatik
Könnt ihr mir bei dieser Java-Aufgabe helfen?
Einige Methoden werden in allen Implementierungen gleich sein. Erstellen Sie eine abstrakte Klasse BasisRennbahn, die diese Methoden enthält und leiten Sie dann von dieser Klasse ab. Welche Methoden können Sie ohne Probleme in die Basisklasse verschieben? Warum gibt es bei manchen Methoden Probleme?
public class Rennauto {
    private final String name;
    private final String typ;
    private final int max;
    private int strecke;    
 
     * @param name Name der Fahrerin oder des Fahrers
     * @param typ Fahrzeugmarke und Typ
     * @param max maximale Geschwindigkeit
  
    public Rennauto(String name, String typ, int max) {
        this.name = name;
        this.typ = typ;
        this.max = max;
    }
    
     * Fährt mit zufälliger Geschwindigkeit eine Strecke.
    
    public void fahre() {
        strecke += Math.random() * max;
    }    

     * Liefert die aktuelle Position des Rennautos.
    
    public int getStrecke() {
        return strecke;
    }


    @Override
    public String toString() {
        return name + " in " + typ + " (" + strecke + ")";
    }
  public interface Rennbahn {

     * Setzt die Laenge der Rennbahn. Typische Werte werden zwischen 100 und 1000 liegen.
   
  void setzeLaenge(int laenge);


     * Setzt ein Rennauto auf eine Spur, falls möglich
     * @param auto das Auto, das auf die Rennbahn gesetzt wird.  Dieses darf nicht null sein!
     * @return true, falls das Auto auf die Bahn gesetzt werden konnte. Falsch, wenn das Rennauto bereits auf der Fahrbahn ist oder keine Spur (je nach
     *Implementierung unterschiedlich viele) mehr frei ist.

    boolean setzeAufSpur(Rennauto auto);


     * Simuliert einen Zeitabschnitt, i.A. wird hier einfach nur
     * {@link Rennauto#fahre()} für alle am Rennen beteiligten Autos aufgerufen.
    
    void simuliereZeitabschnitt();


     * Liefert den Sieger. Falls mehrere Autos im Ziel sind, gewinnt das Auto, das am weitesten gefahren ist.
     * Wenn Autos exakt gleich weit gefahren sind, gewinnt eines von beiden (welches ist nicht genauer spezifiziert).
     * @return Sieger oder null, falls es keinen Sieger gibt.
  
    Rennauto liefereSieger();


         * Führt das Rennen mittels {@link #simuliereZeitabschnitt()} und
     * {@link #liefereSieger()} durch. Die Methode gibt nichts zurück, der Sieger kann über {@link #liefereSieger()} ermittelt werden.
     * @throws IllegalStateException, falls die Länge nicht gesetzt wurde oder keine
     * Autos auf der Rennbahn stehen.
   
 void rennenDurchfuehren();


     * Entfernt ein Rennauto von der Rennbahn und gibt die Spur wieder frei. 
     * @param auto das zu entfernende Rennauto
    
    void entferne(Rennauto auto);
    
  
     * Prüft, ob wenigstens ein Auto auf der Rennbahn steht.
     * @return false, falls wenigstens ein Auto auf der Rennbahn steht, sonst true
    
    boolean istLeer();
programmieren, Java, Informatik, Programmiersprache, Softwareentwicklung, Wirtschaftsinformatik, Wirtschaftsmathematik, Wirtschaftswissenschaft, technische informatik, angewandte Informatik
Java-Code? Array?

Wie wird das Array verwendet? Was befindet sich in dem Array? kann jemand mir den Code und die Methode dunkler erklären?

* SWBild ist eine Klasse, die Graustufenbilder repraesentiert und
 * manipuliert. Die Implementierung erfolgt durch ein einfaches
 * Bildformat: Die Bildpunkte werden in einem zweidimensionalen
 * Array von 'short'-Werten gehalten. Jeder Feldeintrag kann einen
 * Wert zwischen 0 und 255 annehmen. Andere Werte sind unzulaessig.
 * Der Wertebereich [0..255] repraesentiert den Graustufenbereich:
 * 0 fuer Schwarz, 255 fuer Weiss und dazwischenliegende Werte fuer
 * die Grauabstufungen.
 * 
 * Beispielmethode 'dunkler': Ein geladenes Bild kann um
 * ein gegebenes 'delta' abgedunkelt werden.
class SWBild
{


    // die Bilddaten dieses Bildes
    private short[][] _bilddaten;


    // die Breite dieses Bildes
    private int _breite;


    // die Hoehe dieses Bildes
    private int _hoehe;


    // Leinwand zur Anzeige
    private Leinwand _leinwand;


    /**
     * Initialisiert ein Bild mit einer Bilddatei. Der Benutzer kann interaktiv mit
     * Hilfe eines Dateidialogs die zu ladende Datei auswaehlen.
     */
    public SWBild()
    {
        _bilddaten = BildEinleser.liesBilddaten();
        if (_bilddaten != null)
        {
            aktualisiereBildgroesse(_bilddaten);
            erzeugeLeinwand();
        }
    }


    /**
     * Initialisiert ein Bild mit einer Bilddatei. Der Dateiname kann als absoluter
     * oder relativer Pfad uebergeben werden.
     * 
     * @param bilddateiName
     *            der Name der Bilddatei
     */
    public SWBild(String bilddateiName)
    {
        _bilddaten = BildEinleser.liesBilddaten(bilddateiName);
        aktualisiereBildgroesse(_bilddaten);
        erzeugeLeinwand();
    }


    /**
     * Dieses Bild um einen Wert abdunkeln. 
     * 
     * @param delta
     *            Wert der Abdunkelung. Es wird mit dem Betrag von delta gerechnet, 
     *            deshalb darf der Parameter sowohl positiv als auch negativ sein.  
     */
    public void dunkler(int delta)
    {
        if (delta < 0)
        {
            delta = -delta;
        }


        /**
         * Durch alle Bytes des Bildes gehen und jeden Wert dekrementieren
         */
        for (int y = 0; y < _hoehe; y++)
        {
            for (int x = 0; x < _breite; x++)
            {
                if ((_bilddaten[y][x] - delta) > 0) // Wert darf 0 nicht unterschreiten
                {
                    _bilddaten[y][x] = (short) (_bilddaten[y][x] - delta);
                }
                else
                {
                    _bilddaten[y][x] = 0;
                }
            }
        }
        // Neuzeichnen der Bildleinwand, basierend auf den Werten in _bilddaten:
        zeichneBild();
    }




Mathematik, programmieren, Java, Informatik, Softwareentwicklung, Wirtschaftsinformatik
java_Code?

Kann einer diese beide Methode erklären? wie läuft switch-case hier?

 /**
     * Gibt den Besitzer der angegebenen Position auf dem Spielfeld.
     *
     * @param zeile  vertikale Position (0-2)
     * @param spalte horizontale Position (0-2)
     * @return 0 (unbesetzt), 1 (Spieler 1), 2 (Spieler 2)
     */
    @Override
    public int gibBesitzer(int zeile, int spalte) {
        int besitzer = 0;
        char zeichen = feld.charAt(gibPosition(zeile, spalte));
        switch (zeichen){
            case '0':
                besitzer = 0;
                break;
            case '1':
                besitzer = 1;
                break;
            case '2':
                besitzer = 2;
                break;
        }
        return besitzer;
    }


    /**
     * Besetzt die angegebene Position auf dem Spielfeld fuer einen Spieler.
     *
     * @param zeile   vertikale Position (0-2)
     * @param spalte  horizontale Position (0-2)
     * @param spieler 0 (leer), 1 (Spieler 1), 2 (Spieler 2)
     */
    @Override
    public void besetzePosition(int zeile, int spalte, int spieler) {
        int position = gibPosition(zeile, spalte);
        feld = feld.substring(0, position) + spieler + feld.substring (position + 1);
    }
Mathematik, programmieren, Java, Informatik, Softwareentwicklung, Wirtschaftsinformatik, Wirtschaftsmathematik
Java-Code erklären?
Ich bitte um eine ausführliche Erklärung!
 * Ein Spielfeld besteht aus drei Zeilen mit je drei Spalten. Man kann an den
 * neun Positionen einen der beiden Spieler als Besitzer eintragen und auslesen.
 */
public class SpielfeldString implements Spielfeld 
{
    private String feld;


    /**
     * Initialisiert ein neues, leeres Spielfeld.
     */
    public SpielfeldString() {
        feld = "000000000";
        //012345678
    }


    /**
     * Die Methode berechnet die bestimmte Position.
     *
     * @param zeile   vertikale Position (0-2)
     * @param spalte  horizontale Position (0-2)
     * @return eine Int-Zahl von 0 bis 8
     */
    private int gibPosition(int zeile, int spalte){
        if (zeile < 0 || zeile > 2 || spalte < 0 || spalte > 2){
            throw new IllegalArgumentException("Spalte oder Zeile ist ausser dem Feld!");
        }
        return zeile * 3 + spalte;
    }


    /**
     * Gibt den Besitzer der angegebenen Position auf dem Spielfeld.
     *
     * @param zeile  vertikale Position (0-2)
     * @param spalte horizontale Position (0-2)
     * @return 0 (unbesetzt), 1 (Spieler 1), 2 (Spieler 2)
     */
    @Override
    public int gibBesitzer(int zeile, int spalte) {
        int besitzer = 0;
        char zeichen = feld.charAt(gibPosition(zeile, spalte));
        switch (zeichen){
            case '0':
                besitzer = 0;
                break;
            case '1':
                besitzer = 1;
                break;
            case '2':
                besitzer = 2;
                break;
        }
        return besitzer;
    }


    /**
     * Besetzt die angegebene Position auf dem Spielfeld fuer einen Spieler.
     *
     * @param zeile   vertikale Position (0-2)
     * @param spalte  horizontale Position (0-2)
     * @param spieler 0 (leer), 1 (Spieler 1), 2 (Spieler 2)
     */
    @Override
    public void besetzePosition(int zeile, int spalte, int spieler) {
        int position = gibPosition(zeile, spalte);
        feld = feld.substring(0, position) + spieler + feld.substring (position + 1);
    }


    /**
     * Gibt an, ob das Spielfeld an allen Positionen belegt ist.
     */
    @Override
    public boolean istVoll() {
        return feld.indexOf("0") == -1; // da wenn es kein 0 mehr in der Zeichenkette gibt,
        // wird -1 zurückgegeben.
    }
}
Mathematik, programmieren, Java, Informatik, Softwareentwicklung, Wirtschaftsinformatik
Weitere Inhalte können nur Nutzer sehen, die bei uns eingeloggt sind.