Vector/Point-Problem

congo

Neues Mitglied
Hallo!

Ich habe ein Applet-Spiel programmiert, welches in sich funktioniert. Dabei dreht man wie bei memorie dei karten auf dem "Spielfeld".
Ich mochte nun zum Abschluss noch im CMD eine Ausgabe bekommen die mitteilt wie viele Karten man umgedreht hat! Und welche Karte umgedreht wurden.
Das Spiel funktioniert, jedoch lautet die Ausgabe im CMD:
Los:
Anzahl Versuche: 0

--> Es werden also keine Daten vom Vektor preisgegeben! Warum? Die Punkte werden doch im Vektor gespeichert!???:L


Hiermit rufe ich die Methode auf:
Java:
    System.out.println(statistik.getStatistikInfo());

In dieser Klasse mochte ich erstens die Daten in Punkten verpackt in einen Vector speichern und diesen Vector dann in der Methode getStatistikInfo() wieder ausgeben!
Java:
import java.awt.Point;
import java.util.Vector;

public class StatistikModel implements ModelIF{

  public Vector vectStatist;
  int spalte, zeile;
  int sp, ze, size;

  public StatistikModel(){ 
    vectStatist = new Vector();
  }

 [B]public String getStatistikInfo(){
    String returnString = new String();
    returnString += "Los:\n";
    try{
      for( int j=1; j < vectStatist.size(); j++ ) {
      sp = ((Point)vectStatist.elementAt(j)).x;
      ze = ((Point)vectStatist.elementAt(j)).y;

      returnString += "zeile ";
      returnString += sp;
      returnString += "/ spalte ";
      returnString += ze;
      returnString += "\n";
      }
    }catch (NullPointerException npe) {
      System.out.println("Default");
    }
    size = vectStatist.size();

    returnString += "Anzahl Versuche: ";
    returnString += size;
    returnString += "\n";
    
    vectStatist.clear();
    return returnString;
  }[/B]

  public void action(int zeile, int spalte){
    vectStatist.add(new Point(zeile, spalte));
  }

  public void putObj(int Zeile, int Spalte, MosaikIF mObj){
    // in diesem Model kein Implementierungsbedarf
  }
}

Vielen Dank fur eure Hilfe!
Ich kann auch noch alle anderen Klassen zur verfügung stellen, was eventuell nötig ist!

Liebe Grüße Congo
 
Naja, offensichtlich wir nichts im vector gespeichert. Wo wird die action Methode aufgerufen?
 
Rufst du getStatistikInfo vorher schon irgendwo (ohne Ausgabe) auf? Am Ende der Methode löschst du ja den Inhalt deines Vectors. Der Vector ist jedenfalls leer, wie die Ausgabe "Anzahl der Versuche: 0" ja bestätigt. Wieso das so ist, das kann man hier nicht sehen...

Gruß Fant
 
Ich rufe die Methode von der Klasse Mosaik aus auf. Und zwar in der destroy-Methode und in der resetGame-Methode. Ich mochte das nach jedem Spiel der Vector(und der String) ausgegeben wird und dannach geloescht, damit er beim nachsten Spiel wieder leer ist.

Java:
import java.awt.Color;
import java.awt.Image;
import java.awt.MediaTracker;

public class Mosaik extends java.applet.Applet implements SteuerIF{

  private int raster;
  private String bildName;
  private Image image;
  private BildMosaik bm;

  private MediaTracker mediaTracker;

  private Color farbeRueckseite, farbeVorderseite;
  private int imageWidth;
  private VorschauCanvas vorschauBild;
  private boolean zuletztBild;
  private SteuerPanel steuerPanel;
  private FarbMosaik fm;
  private StatistikModel statistik;
    
  public void init(){
    statistik = new StatistikModel();

    String temp = getParameter("raster");
    try{
      raster = Integer.parseInt(temp); 
    }
    catch(NumberFormatException nfe){
      raster = 4;
      System.out.println("Raster auf Default = "+ raster +"gesetzt. Numberformatexception: "  + nfe.getMessage());
    }

  bildName = getParameter("Bildname");

  farbeRueckseite = new Color(230, 30, 50);
  farbeVorderseite = new Color(50, 210, 30);
  image = getImage(getCodeBase(), bildName);
  // MediaTracking im ImageHandler
    image = ImageHandler.trackImage(image, this);
  imageWidth = image.getWidth(this);

  // zunächst Vorschau-GUI zeigen
  vorschauBild = new VorschauCanvas(image);
  add(vorschauBild);
  steuerPanel = new SteuerPanel(this);
  add(steuerPanel);
  }

  public void startGame(int raster, boolean modus){
    if(vorschauBild != null){ // VorschauCanvas-Objekt
      remove(vorschauBild);
      vorschauBild = null;
    }
    else{
        if(zuletztBild){
          remove(bm);
        }
        else{
          remove(fm);
        }
      }
  
    remove(steuerPanel);
    // Aufbau der Spielfläche alternativ
    if(modus){ // true = Bildvariante
      bm = new BildMosaik(raster, farbeRueckseite, image);
      add(bm);
      zuletztBild=true;
    }
    else{
      fm = new FarbMosaik(raster, imageWidth, farbeRueckseite, farbeVorderseite);
      fm.getEventHandler().addModel(statistik);
      add(fm);
      zuletztBild=false;
    }
    add(steuerPanel);
    validate();
  }
    
  public void resetGame(){
    System.out.println(statistik.getStatistikInfo());
    validate();
  }

  public void destroy(){
    System.out.println(statistik.getStatistikInfo());
  }
}

Rufe ich die Mehtode falsch auf????:L
Oder kann ich den Vector erst spater leeren????:L

Vielen Dank fur alle Ideen

Ich habe als Anhang noch alles andere hinzugefuegt, damit ihr das euch auch mal anschauen konntet. Ich habe bis jetzt mit "j2sdk1.4.2_01" gearbeitet.
 

Anhänge

Neue Themen


Zurück
Oben