Minesweeper

KleineKiwi

Mitglied
ich hab mich mal an die 'einfache' Aufgabe gesetzt ein umgekehrtes minesweeper zu machen, heisst, größe des feldes und minen sind angegeben (was ich auch schon geschafft hab)..
ich weiss nur nicht wie ich die if funktion schreiben soll das die sieht: ah in i (dem array) ist ein sternchen (die mine) also muss ich nicht prüfen ob rund herum minen sind sondern kann einfach * ausdrucken.. ic habs ca so versucht:
Java:
if(input.charAt(i)=*) 
                System.out.print("*");
            else
                System.out.print("a");
            System.out.println();
            System.out.println();
        }
ich hab halt die theorie, nur die bausteine um das zu machen fehlt mir, so wie man ja vielleicht ne whileschleife?? laufen lassen könnte um im array zu testen wieviele minen in der umgebung sind und die anzah dann auszudrucken, aber ich weiss absolut nicht wie :/
restlicher code ist so (und richtig):
Java:
public class test2{

    public static void main(String[] args){
        
    String input = "4 4*........*......3 5**.........*...0 0";
    String input_einfach = "4 4*........*......";
    
    int zeilen,spalten,i = 0,off = 0;
    
        while(Integer.parseInt(input.charAt(i)+"")!= 0){
            
            zeilen  = Integer.parseInt(input.charAt(i)+"");
            i += 2;
            spalten = Integer.parseInt(input.charAt(i)+"");
            i++;
            off = i;
            for (; i < zeilen * spalten + off; i++){
                
                if((i-off)%spalten == 0)
                    System.out.println();
                System.out.print(input.charAt(i));
                
            }
          
        }
    }
}
 
Zuletzt bearbeitet:

VfL_Freak

Top Contributor
Moin,

ich hab mich mal an die 'einfache' Aufgabe gesetzt ein umgekehrtes minesweeper zu machen, heisst, größe des feldes und minen sind angegeben (was ich auch schon geschafft hab)..
ich weiss nur nicht wie ich die if funktion schreiben soll das die sieht: ah in i (dem array) ist ein sternchen (die mine) also muss ich nicht prüfen ob rund herum minen sind sondern kann einfach * ausdrucken.. ic habs ca so versucht:
Java:
if(input.charAt(i)=*) 
                System.out.print("*");
            else
                System.out.print("a");
            System.out.println();
            System.out.println();
        }
ich hab halt die theorie, nur die bausteine um das zu machen fehlt mir, so wie man ja vielleicht ne whileschleife?? laufen lassen könnte um im array zu testen wieviele minen in der umgebung sind und die anzah dann auszudrucken, aber ich weiss absolut nicht wie :/
restlicher code ist so (und richtig):
Java:
public class test2{

    public static void main(String[] args){
        
    String input = "4 4*........*......3 5**.........*...0 0";
    String input_einfach = "4 4*........*......";
    
    int zeilen,spalten,i = 0,off = 0;
    
        while(Integer.parseInt(input.charAt(i)+"")!= 0){
            
            zeilen  = Integer.parseInt(input.charAt(i)+"");
            i += 2;
            spalten = Integer.parseInt(input.charAt(i)+"");
            i++;
            off = i;
            for (; i < zeilen * spalten + off; i++){
                
                if((i-off)%spalten == 0)
                    System.out.println();
                System.out.print(input.charAt(i));
                
            }
          
        }
    }
}
Habe Deine Frage offen gestanden nicht wirklich verstanden ...
Oder suchst Du etwas dies hier:
Java:
if( input.charAt(i) == '*' )

Gruß Klaus
 

KleineKiwi

Mitglied
HHmm ja unter anderem.. ich ha es jetzt im moment so
Java:
if(((i-off)%spalten == 0) && (input.charAt(i) == '*') )
                    System.out.println();
                    System.out.print(input.charAt(i));
                
                else
                System.out.print("a");
aber des sagt mir das des else kein if hat... vorher kam halt natürlich(duh) jedesmal ein punkt mit raus statt dem a dass ich drn haben wollteich seh grad nur bei der if clause den feher noch nicht
 

VfL_Freak

Top Contributor
Moin,
Achte bitte mehr auf Deine Rechtschreibung - das ist ja kaum lesbar !!
HHmm ja unter anderem.. ich ha es jetzt im moment so
Java:
if(((i-off)%spalten == 0) && (input.charAt(i) == '*') )
                    System.out.println();
                    System.out.print(input.charAt(i));
                
                else
                System.out.print("a");
aber des sagt mir das des else kein if hat... vorher kam halt natürlich(duh) jedesmal ein punkt mit raus statt dem a dass ich drn haben wollteich seh grad nur bei der if clause den feher noch nicht
Ist ja auch richtig!! Dein 'else' hat kein 'if'!!
Schau Dir mal die Klammerung an .....

Gruß Klaus
 

KleineKiwi

Mitglied
Tschuldige, meine Tastatur ist leicht angeschlagen und tippt nicht immer alles was sie soll..
ich verstehe das Problem bei der Klammerung nicht, soweit ich das sehe ist alles richtig.. wenn ich mehr oder weniger klammern mache sagt mir der Kompiler auch, dass es falsch ist.. fehlen geschwungene Klammern? Es ist halt auch ne Weile her, dass ich zuletzt java programmiert hab :/
 

VfL_Freak

Top Contributor
Moin,

na ja, syntaktisch geht es zwar, ist aber nicht das, was Du symmantisch willst ;)

Java:
if( ((i-off)%spalten == 0) && (input.charAt(i) == '*') )
    System.out.println();
    
System.out.print(input.charAt(i));
else
System.out.print("a");
Ergo: da Du keine geschweiften Klammern gesetzt hast, gehört nur das 'println' zur if-Bedingung!!
Richtig ist es so:
Java:
if( ((i-off)%spalten == 0) && (input.charAt(i) == '*') )
{
    System.out.println();
    System.out.print( input.charAt(i) );
}
else
{
    System.out.print( "a") ;
}
Merke: Lieber einmal zuviel klammern als zuwenig!!
Wie schnell ist sonst mal eben eine zweite Anwesiung hinzugefügt und die Logik geht flöten .....

Gruß Klaus
 

KleineKiwi

Mitglied
Danke vielmals :) jetzt zum zweiten Teil des Problems... ich will jetzt eine function schreiben die jeweis i-5,i-4,i-3,i-1,i+1,i+3,i+4 und i+5 prüft, quasi die '*' die im array vorkommen zusammenzählt und die zahl dafür dann in i einsetzt.. ich weiss halt _theoretisch_ wie es geht aber mir fehlt halt irgendwie wie ich das zusammenbasteln kann :/ wenn das zu viel ist kann ichs verstehen, will ja auch keine fertig Aufgabe, nur so die Bausteine..
 

Ähnliche Java Themen


Oben