Wie speichert man den Index eines Arrays

Amedea 2014

Grünschnabel
Hallo,
ich möchte gerne ein kleines Spiel programmieren. Dabei habe ich zehn Bilder, neben dem vier Buttons sind, an auf denen die Lösungen, was man auf dem Bild sieht, anklicken kann.
Dazu habe ich den Bildpfad (z.B reh.jpg) und die Lösungen als Wort (z.B Reh) gespeichert. Jetzt sollen auf den 4 Buttons vier zufällige Lösungen erscheinen, wobei eine Lösung mit dem Bild übereinstimmen soll. Bis jetzt sieht dies so aus:
Java:
String  loesungen [ ] = new String[10];
  loesungen[0]="Adler";
  loesungen[1]="Auerhahn";
  loesungen[2]="Dachs";
  loesungen[3]="Eule";
  loesungen[4]="Fuchs";
  loesungen[5]="Igel";
  loesungen[6]="Luchs";
  loesungen[7]="Marder";
  loesungen[8]="Reh";
  loesungen[9]="Wildschwein";
 
  String bilder [] = new String[10];
  bilder[0]="Adler.jpg";
  bilder[1]="Auerhahn.jpg";
  bilder[2]="Dachs.jpg";
  bilder[3]="Eule.jpg";
  bilder[4]="Fuchs.jpg";
  bilder[5]="Igel.jpg";
  bilder[6]="Luchs.jpg";
  bilder[7]="Marder.jpg";
  bilder[8]="Reh.jpg";
  bilder[9]="Wildschwein.jpg";
 
  if(ae.getSource() == butNeuesBild)
  {
  int zufallszahl;
  int zufallsplatz[]= new int[anzahlButtons];
 
  for (int i=0;i<anzahlButtons;i++)  //entstehung der zufälligen Lösungen auf den Buttons 
  {
  do
  {
  zufallszahl=(int)(Math.random()*anzahlButtonsBilder);
  } while(enthalten(zufallsplatz,zufallszahl)); //verbindung zur Klasse enthalten
 
  zufallsplatz[i]=zufallszahl; //sperchern der neuen Lösung als Zufallslösung 
  } // end of for 
 
  but1.setLabel(loesungen[zufallsplatz[0]]);
  but2.setLabel(loesungen[zufallsplatz[1]]);
  but3.setLabel(loesungen[zufallsplatz[2]]);
  but4.setLabel(loesungen[zufallsplatz[3]]);
 
  tracker = new MediaTracker(this);
  image = Toolkit.getDefaultToolkit().getImage(bilder[zufallsplatz[(int)(Math.random()*anzahlButtonsBilder)]]);
  tracker.addImage(image, 0); //Image an den MediaTracker zur Überwachung übergeben
  try
  {
  tracker.waitForAll(); //auf alle zu ladenden Dateien warten
  }
  catch (InterruptedException ie)
  {
  ie.printStackTrace(); //Fehlerausgabe auf der Java-Konsole
  } 
  imPan.setImage(image);  //nun noch das Bild ausgeben im Panel:
 
Die Klasse enthalten sieht so aus:
 
static boolean enthalten (int zahlen[], int zahl) //Methode stellt fest, ob Zahl in Zahl enthalten ist
  {
  for (int i=0;i<zahlen.length;i++ )  //length liefert anzahlButtons der Zahlen
  {
  if (zahlen[i]==zahl) return true;
  } // end of for 
  return false;
  }
Als nächstes möchte ich, dass wenn man den richtigen Button anklickt (z.B den 1 Button) dann soll dieser grün werden. Dafür bräuchte ich eine If ( ) else Abfrage. Dabei gilt ja if( Die Lösung auf dem Button stimmt mit dem Bild überein) dann soll der Button grün werden. Dafür müssen ja die Indizes übereinstimmen, da ja die Lösung [0] und das Bild[0] ja beide ein Adler sind. Wie aber vergleiche ich diese? Die Indizes muss ich vorher ja irgendwie in einer Variable speichern aber wie?
Ich bin froh über jede Hilfe
 
Zuletzt bearbeitet von einem Moderator:
Moin,

habe Deine Frage nicht wirklich verstanden ...
Wieso willst Du die Indizes speichern ???
Meinst Du sowas:
Java:
if( bilder[i].contains( loesungen[i] )
Gruß Klaus
 
Hey,
ja danke, das habe ich gemeint. Ich habe zu diesem Programm meinen Lehrer um Hilfe gefragt, er meinte ich soll die Indizes speichern. Das hab ich selber nicht so verstanden.
Kannst du mir vielleicht auch sagen, was ich machen muss, damit die Bilder der Reihe nach ablaufen? Meine Idee wäre:
anstatt
image = Toolkit.getDefaultToolkit().getImage(bilder[zufallsplatz[(int)(Math.random()*anzahlButtonsBilder)]]);
image = Toolkit.getDefaultToolkit().getImage(bilder[bildZähler];
bildZähler ++;
Der bildZähler wird dabei immer um eins erhöht, sodass beim nächsten Klick auf den Button das nächste Bild erscheint, das Array Bilder also der Reihe nach abläuft. Wenn ich dies mache, kann ich aber nicht sicher sein, dass die richtige Lösung bei den Lösungs Buttons erscheint. Htest du eine Idee dazu?

Gruß
Amedea

PS: Ich bin neu auf der Seite und würde dir für deine Hilfe gerne eine Bewertung oder ein Danke hinterlassen. Heißt das hier, dass ich einfach danke sage, oder muss ich dazu irgendetwas anklicken?
 

Neue Beiträge

Zurück