# Minesweeper



## KleineKiwi (18. Jun 2015)

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:

```
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):

```
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));
                
            }
          
        }
    }
}
```


----------



## VfL_Freak (18. Jun 2015)

Moin,



KleineKiwi hat gesagt.:


> 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:
> 
> ```
> ...


Habe Deine Frage offen gestanden nicht wirklich verstanden ...
Oder suchst Du etwas dies hier:

```
if( input.charAt(i) == '*' )
```

Gruß Klaus


----------



## KleineKiwi (18. Jun 2015)

HHmm ja unter anderem.. ich ha es jetzt im moment so 
	
	
	
	





```
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 (18. Jun 2015)

Moin,
*Achte bitte mehr auf Deine Rechtschreibung - das ist ja kaum lesbar !!*


KleineKiwi hat gesagt.:


> HHmm ja unter anderem.. ich ha es jetzt im moment so
> 
> 
> 
> ...


Ist ja auch richtig!! Dein 'else' hat kein 'if'!!
Schau Dir mal die Klammerung an .....

Gruß Klaus


----------



## KleineKiwi (18. Jun 2015)

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 (18. Jun 2015)

Moin,

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


```
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:

```
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 (18. Jun 2015)

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..


----------



## VfL_Freak (18. Jun 2015)

Moin,


KleineKiwi hat gesagt.:


> Danke vielmals ich weiss halt _theoretisch_ wie es geht


Und das bedeutet was ??
Wenn Du es theoretisch weißt, ist doch der Schritt zum Code nicht mehr weit ...

Tipp: Schau' Dir mal Schleifen an, speziell for-Schleifen ...

Gruß Klaus


----------

