Hey leute,
ich habe im Internet nen Quelltext für nen Minesweeper gefunden. Die Sache ist die, jetzt würde ich ihn gerne so anpassen, dass er ohne GUI ist, da ich in dem Bereich noch keine Ahnung habe.
Mein Ziel ist es das ganze in BlueJ über die Konsole zu "spielen". Das Aufdecken der Felder gelingt mir leider noch nicht, hat da jemand eine Idee? Aus der Methode "bewerteFelder" bin ich ehrlichgesagt auch noch nicht wirklich schlau geworden, wofür brauchts die?
Hier mal der Quelltext:
Hoffe ihr könnt mir da etwas weiterhelfen, danke schonmal. A ja, wer den Quelltext von "Feld" noch sehen möchte, einfach kurz Bescheid geben.
ich habe im Internet nen Quelltext für nen Minesweeper gefunden. Die Sache ist die, jetzt würde ich ihn gerne so anpassen, dass er ohne GUI ist, da ich in dem Bereich noch keine Ahnung habe.
Mein Ziel ist es das ganze in BlueJ über die Konsole zu "spielen". Das Aufdecken der Felder gelingt mir leider noch nicht, hat da jemand eine Idee? Aus der Methode "bewerteFelder" bin ich ehrlichgesagt auch noch nicht wirklich schlau geworden, wofür brauchts die?
Hier mal der Quelltext:
Java:
import java.util.ArrayList;
import java.util.Random;
public class MinenFeld
{
private ArrayList felder;
private int dimX;
private int dimY;
private int minenAnzahl;
public MinenFeld(int dimX, int dimY, int minenAnzahl)
{
this.dimX=dimX;
this.dimY=dimY;
this.minenAnzahl = minenAnzahl;
felder = new ArrayList();
erstelleFelder();
erzeugeMinen();
bewerteFelder();
}
private void erstelleFelder()
{
for(int y=0; y<dimY ; y++)
{
for(int x=0; x<dimX; x++)
{
Feld f = new Feld(x,y);
felder.add(f);
}
}
}
private void erzeugeMinen()
{
int anzahl=dimX*dimY;
Random rnd = new Random();
int[] zufall = new int[minenAnzahl];
boolean doppelt=true;
for(int i=0; i<minenAnzahl; i++)
{
while(doppelt == true)
{
zufall[i]=rnd.nextInt(anzahl);
doppelt=false;
for(int t=0; t<i; t++)
{
if(zufall[t]==zufall[i])
doppelt=true;
}
}
doppelt=true;
}
for(int i=0; i<minenAnzahl; i++)
{
((Feld)felder.get(zufall[i])).setMine(true);
}
}
public Feld getFeld(int index)
{
return (Feld)felder.get(index);
}
private void bewerteFelder()
{
for(int i=0; i<felder.size(); i++)
{
if(((Feld)felder.get(i)).isMine())
{
int x = ((Feld)felder.get(i)).getX();
int y = ((Feld)felder.get(i)).getY();
if(getIndexOfFeld(x-1,y-1) != -1)
((Feld)felder.get(getIndexOfFeld(x-1,y-1))).erhoeheZaehler();
if(getIndexOfFeld(x,y-1) != -1)
((Feld)felder.get(getIndexOfFeld(x,y-1))).erhoeheZaehler();
if(getIndexOfFeld(x+1,y-1) != -1)
((Feld)felder.get(getIndexOfFeld(x+1,y-1))).erhoeheZaehler();
if(getIndexOfFeld(x-1,y) != -1)
((Feld)felder.get(getIndexOfFeld(x-1,y))).erhoeheZaehler();
if(getIndexOfFeld(x+1,y) != -1)
((Feld)felder.get(getIndexOfFeld(x+1,y))).erhoeheZaehler();
if(getIndexOfFeld(x-1,y+1) != -1)
((Feld)felder.get(getIndexOfFeld(x-1,y+1))).erhoeheZaehler();
if(getIndexOfFeld(x,y+1) != -1)
((Feld)felder.get(getIndexOfFeld(x,y+1))).erhoeheZaehler();
if(getIndexOfFeld(x+1,y+1) != -1)
((Feld)felder.get(getIndexOfFeld(x+1,y+1))).erhoeheZaehler();
}
}
}
public boolean loeseSpiel()
{
int anzahl=minenAnzahl;
for(int i=0; i<felder.size(); i++)
{
if(((Feld)felder.get(i)).isVorgemerkt() && ((Feld)felder.get(i)).isMine())
anzahl--;
}
if(anzahl==0)
return true;
return false;
}
private int getIndexOfFeld(int x, int y)
{
int index=-1;
for(int i=0; i<felder.size(); i++)
{
if(((Feld)felder.get(i)).getX() == x &&
((Feld)felder.get(i)).getY() == y &&
!(((Feld)felder.get(i)).isMine()))
{
return i;
}
}
return index;
}
public int getIndexOfFeld2(int x, int y)
{
int index=-1;
for(int i=0; i<felder.size(); i++)
{
if(((Feld)felder.get(i)).getX() == x &&
((Feld)felder.get(i)).getY() == y)
{
return i;
}
}
return index;
}
/**
* @return Returns the minenAnzahl.
*/
public int getMinenAnzahl()
{
return minenAnzahl;
}
/**
* @return Returns the dimX.
*/
public int getDimX()
{
return dimX;
}
/**
* @return Returns the dimY.
*/
public int getDimY()
{
return dimY;
}
public int getVorgemerktAnzahl()
{
int anzahl=0;
for(int i=0; i<felder.size(); i++)
{
if(((Feld)felder.get(i)).isVorgemerkt())
anzahl++;
}
return anzahl;
}
public void zeige()
{
String s="";
for(int i=1; i<=(dimX*dimY); i++)
{
if(((Feld)felder.get(i-1)).isMine())
s="0";
else
s="0";
System.out.print(s+" ");
if(i%dimX==0)
System.out.println();
}
System.out.println();
for(int i=1; i<=(dimX*dimY); i++)
{
s=""+((Feld)felder.get(i-1)).getZaehler();
System.out.print(s+" ");
if(i%dimX==0)
System.out.println();
}
System.out.println();
}
}
Hoffe ihr könnt mir da etwas weiterhelfen, danke schonmal. A ja, wer den Quelltext von "Feld" noch sehen möchte, einfach kurz Bescheid geben.