Hallo allerseits,
Hab da ein kleines Problem bezüglich Java ^^
Also: Ich versuche z.Z. Minesweeper zu programmieren, da ich Java aber erst seit mehren Wochen in der Schule lerne habe ich keinerlei Erfahrung wie man Fenster erstellt usw.
Daher hab ich versucht das ganze mit Arrays und Bildschirmausgaben zu lösen, das klappt soweit.
Ich kann x/y-Koordinaten eingeben, das entsprechende Feld wir aufgedeckt, ist eine Miene ausgewählt worden beendet sich das Spiel mit Ausgabe "GAMEOVER".
Habe aber 1 Problem:
Ich schaffe es einfach nicht, dass bereits aufgedeckte Felder aufgedeckt bleiben...
Hab schon viel im Internet gesucht aber finde einfach nichts.
Für Hilfe wäre ich sehr dankbar.
Hier das was is bis jetzt habe, bitte bedenkt dass ich wirklich noch nicht viel Java-Erfahrung habe also kommt mir bitte nicht mit etwas kompliziertem >.<
Danke im Vorraus,
Nicolas
Hab da ein kleines Problem bezüglich Java ^^
Also: Ich versuche z.Z. Minesweeper zu programmieren, da ich Java aber erst seit mehren Wochen in der Schule lerne habe ich keinerlei Erfahrung wie man Fenster erstellt usw.
Daher hab ich versucht das ganze mit Arrays und Bildschirmausgaben zu lösen, das klappt soweit.
Ich kann x/y-Koordinaten eingeben, das entsprechende Feld wir aufgedeckt, ist eine Miene ausgewählt worden beendet sich das Spiel mit Ausgabe "GAMEOVER".
Habe aber 1 Problem:
Ich schaffe es einfach nicht, dass bereits aufgedeckte Felder aufgedeckt bleiben...
Hab schon viel im Internet gesucht aber finde einfach nichts.
Für Hilfe wäre ich sehr dankbar.
Hier das was is bis jetzt habe, bitte bedenkt dass ich wirklich noch nicht viel Java-Erfahrung habe also kommt mir bitte nicht mit etwas kompliziertem >.<
Java:
import java.util.*;
public class Minesweeper {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int minen=0,xmax,ymax,xwert,ywert,wert,sgrad,position=0;
xmax=10;
ymax=10;
do {
System.out.println("Schwierigkeitsgrad wählen:");
System.out.print("Leicht= 1 Mittel= 2 Schwer = 3");
sgrad=sc.nextInt();
if (sgrad==1){
minen=20;
}
else if(sgrad==2){
minen=10;
}
else if(sgrad==3){
minen=5;
}
else if(sgrad>3 || sgrad<0){
System.out.println("Fehler. Eingabe wiederholen.");
}
}while(minen==0);
minen= (xmax*ymax)/minen;
int[] minenFeld;
minenFeld= new int[minen];
//Feld mit Werten versehen: 4 für Mine, 2,1 für die jeweilige Zahl, 0 für leer
int[] werteFeld;
werteFeld= new int[ymax*xmax];
//Minen setzen
for(int i=0;i<minenFeld.length;i++){
double random=(Math.random()*10)*ymax;
int randomnumber= (int)random;
minenFeld[i]=randomnumber;
//Minenposition im Wertefeld
werteFeld[randomnumber]=4;
int oben =((int)random+xmax);
int unten =((int)random-xmax);
//Nummern verteilen: 2
if(randomnumber>1){
if(werteFeld[randomnumber-1]<4){
werteFeld[randomnumber-1]=2;
}}
if(randomnumber>(xmax+1)){
if(werteFeld[unten]<4){
werteFeld[unten]=2;
}}
if(randomnumber<(xmax*ymax)){
if(werteFeld[randomnumber+1]<4){
werteFeld[randomnumber+1]=2;}
if(werteFeld[oben]<4){
werteFeld[oben]=2;
}}
//Nummern verteilen: 1
if(randomnumber>2){
if(werteFeld[randomnumber-2]<2){
werteFeld[randomnumber-2]=1;
}}
if(randomnumber>(xmax+2)){
if(werteFeld[unten+1]<2){
werteFeld[unten+1]=1;
werteFeld[unten-1]=1;
}}
if(randomnumber<(xmax*ymax)){
if(werteFeld[randomnumber+2]<2){
werteFeld[randomnumber+2]=1;}
if(werteFeld[oben+1]<2){
werteFeld[oben+1]=1;
werteFeld[oben-1]=1;
}}
}
int laenge = werteFeld.length;
System.out.println("Spielfeld wird erstellt.");
// Aufruf Spielfeld 1
int c=10;
int x=0;
int y=1;
do{
System.out.print("■ ");
if((x+1==xmax*y)){System.out.println(" "+c);
y++;
c--;
}
x++;
}while(x<werteFeld.length);
System.out.println("1 2 3 4 5 6 7 8 9 10");
//Aufruf Auswahl
do{
System.out.println("Bitte Feld auswählen.");
System.out.println("X-Wert:");
xwert=sc.nextInt();
System.out.println("Y-Wert: ");
ywert=sc.nextInt();
wert=werteFeld[(position(xwert,ywert,ymax,xmax))];
revealstandard(wert);
position=(position(xwert,ywert,ymax,xmax));
//Aufruf Oberfläche
int letzteposition=-1;
letzteposition=(oberfläche(xmax,werteFeld,wert,position,letzteposition)+1);
}while(wert<4);
}
static int position (int xwert, int ywert, int ymax, int xmax){
int position=(xmax*(ymax-(ywert))+xwert)-1;
return position;
}
static void revealstandard (int wert){
if(wert==0){}
if(wert==1||wert==2){
System.out.println();
}
if(wert==4){
System.out.println("GAMEOVER!");
System.out.println("Spiel neustarten oder beenden.");
}
}
static void revealnumber (int wert){
}
//Benutzeroberfläche
static int oberfläche(int xmax,int[] werteFeld,int wert,int position, int letzteposition){
int c=10;
int x=0;
int y=1;
do{
if(position==x&&werteFeld[position]==wert){
if(wert==4){System.out.print("† ");}
else {
System.out.print(werteFeld[position]+" ");
}
}
else if (letzteposition==x){
System.out.print(werteFeld[letzteposition]);
}
else{
System.out.print("■ ");
}
if((x+1==xmax*y)){System.out.println(" |"+c);
y++;
c--;
}
x++;
}while(x<werteFeld.length);
System.out.println("____________________");
System.out.println("1 2 3 4 5 6 7 8 9 10");
return letzteposition;
}
}
Danke im Vorraus,
Nicolas