Warum wird die For Schleife nicht betreten

Nico1999

Aktives Mitglied
Java:
private boolean isLegalDamenSchlagMoveUntenLinks(Input a) {
        System.out.println("baum");
        for(int i=1;i<a.getGoalX()-a.getNowX()+1;i++) {
            System.out.println(i+"hi");
            if(istFigurAufDemFeldRichtungUntenLinks(a,i)) {
                if(figurAufDemStartFeldIsWhite(a)&&istFigurEinsVorDemZielFeldBlackUntenLinks(a)&&istAnDerZielStelleKeineFigur(a)) {
                    return true;
                }else if(figurAufDemStartFeldIsBlack(a)&&istAnDerZielStelleKeineFigur(a)&&istFigurEinsVorDemZielFeldWhiteUntenLinks(a)) {
                    return true;
                }else {
                    return false;
                }
            }
        }return false;
    }// a.getNowX=0 a.getGoalx=7
wenn ich diesen code laufen lassen möchte mit den input da geht er nicht einmal in die for schleife, er printet baum aber i und hi wird nicht mehr ausgegeben.
warum wird die for schleife nicht betreten obwohl a.getGoalX-a.getNowX()+1==8
 
mach einfach den output..
Java:
private boolean isLegalDamenSchlagMoveUntenLinks(Input a) {
        System.out.println("baum");
    System.out.println(1<a.getGoalX()-a.getNowX()+1)
        for(int i=1;i<a.getGoalX()-a.getNowX()+1;i++) {
            System.out.println(i+"hi");
            if(istFigurAufDemFeldRichtungUntenLinks(a,i)) {
                if(figurAufDemStartFeldIsWhite(a)&&istFigurEinsVorDemZielFeldBlackUntenLinks(a)&&istAnDerZielStelleKeineFigur(a)) {
                    return true;
                }else if(figurAufDemStartFeldIsBlack(a)&&istAnDerZielStelleKeineFigur(a)&&istFigurEinsVorDemZielFeldWhiteUntenLinks(a)) {
                    return true;
                }else {
                    return false;
                }
            }
        }return false;
    }// a.getNowX=0 a.getGoalx=7
ich bezweifle mal dass da wirklich die 8 raus kommt
 
zusätzlich würde ich mal kleinigkeiten erwähnen
igurAufDemStartFeldIsWhite(a)
figurAufDemStartFeldIsBlack(a)
rein von der überlegung her wenn die igur am start nicht weis ist ist sie schwarz...
warum dann nicht einfach
figurAufDemStartFeldIsBlack(a) == black
!figurAufDemStartFeldIsBlack(a) == weis
einfach negieren dann hast du eigentlich dasselbe, was ich aus dem methoden namen geshclossen habe

istAnDerZielStelleKeineFigur(a)
das prüfst du beim ersten if und beim zweiten, im regelfall wird da das selbe raus kommen aber deswegen brauchst du es nicht 2 mal prüfen
zb sowas würde es auch tun
Java:
              if(istAnDerZielStelleKeineFigur(a)) {
boolean istWeiss = figurAufDemstartfeldiswhite(a);
                  if(istWeiss &&istFigurEinsVorDemZielFeldBlackUntenLinks(a)&&) {
                      return true;
                  }else if(!istWeiss&&istFigurEinsVorDemZielFeldWhiteUntenLinks(a)) {
                      return true;
                  }else {
                      return false;
                  }
              } else {
                  return false;
              }


dann kommen noch fragen auf wie zb : warum heißt der Input "a" ? gehen wir schon wieder das alphabet durch 😉 ?
und was ist i ? die reihe ? die spalte ? eine banane als skala? ist relativ nicht eindeutig was ein i ist im schach

und ich nörgel jetzt schon an sowas rum weil wenn du spiele entwickelst wirst du schnell verloren sein wenn man nicht aufpasst
vorallem am anfang wo man noch viel über boolean löst .. auf twitch hat einer in unity ein spiel programmiert und hatte eine klasse mit 200 booleans die static waren und public und NICHT readonly ( also final in java )

wenn du an den punkt kommst ist es vorbei... kannst den franzosen hinlegen und die weiße fahne raus holen 😀
 
zusätzlich würde ich mal kleinigkeiten erwähnen


rein von der überlegung her wenn die igur am start nicht weis ist ist sie schwarz...
warum dann nicht einfach


einfach negieren dann hast du eigentlich dasselbe, was ich aus dem methoden namen geshclossen habe
ich dachte das was ich als MethodeGeschrieben habe ist genauer als nur ist Black oder White Weis ja dann nicht mehr um welche Figur es sich Handelt ,
das mit istanderZielStelleKeineFigur habe ich jetzt auch rausgezogen das is mir gar net aufgefallen
dann kommen noch fragen auf wie zb : warum heißt der Input "a" ? gehen wir schon wieder das alphabet durch 😉 ?
und was ist i ? die reihe ? die spalte ? eine banane als skala? ist relativ nicht eindeutig was ein i ist im schach

und ich nörgel jetzt schon an sowas rum weil wenn du spiele entwickelst wirst du schnell verloren sein wenn man nicht aufpasst
vorallem am anfang wo man noch viel über boolean löst .. auf twitch hat einer in unity ein spiel programmiert und hatte eine klasse mit 200 booleans die static waren und public und NICHT readonly ( also final in java )

wenn du an den punkt kommst ist es vorbei... kannst den franzosen hinlegen und die weiße fahne raus holen 😀
naja a ist halt kurz und ich benutze es eh nur um an die get methoden von input ranzukommen
und i dachte ich macht ma so in den for Schleifen und ich fand (istFigurAufDemFeldRichtungUntenLinks(a,i)) ist eindeutig genug
i geht nach UntenLinks das Brett durch ob eine Figur ist oder nicht
 
also dein input als "a" zu bezeichnen ist so eindeutig wie wenn du schreibst
public void do(Input asdfaghrte)
da kennt sich auch jeder so gut aus

dann nenns halt input

und "i" ist derklassiker ... ja ABER der code muss lesbar sein und i bringt da nix

ein klassiker ist wenn du x und y hast, und die variablen x und y nennst.. .da kennt sich jeder aus

nennst du einen calculator und eine GUI ein x und y dann kennt sich keine sau mehr aus
wenn man in spiel entwicklung rein läuft, hat man immer am anfangg die boolean monster, weil man es noch nicht besser weis
diese müssen aber logisch gut aufgebaut sein um nicht verloren zu gehen

du hast jetzt zwar kein boolean monster aber das nur als "warnung" wo du rein laufen kannst
 

Zurück
Oben