Salve a tutti.
Come progetto per la fine dell'anno, devo fare il gioco della dama in java.
Vi scrivo prechè già da un pò di giorni continuo ad avere problemi con il codice di questo progetto. Logicamente il codice non mi sembra errato eppure continuo ad avere continuamente problemi:
-c'è un random per scegliere quale dei 2 giocatore deve iniziare. se è il giocatore bianco ovviamente non potrà prendere le pedine di quello nero, ma nonostante la selezione che gli ho inserito, è come se questa non venisse eseguita.
-nella dama non ci si può spostare più di una casella in diagonale, e anche in questo punto ho dei problemi, l'if che gli ho messo è come se non funzionasse. Praticamente puoi spostare pedine come ti pare!
-all'interno dei Main gli ho inserito un "while" e come condizione ha una variabile booleana, la cui negatività è data da un ciclo che controlla ogni cella della matrice e vede se non esistono più pedine di uno dei giocatori. Se non ce ne fossero più la variabile divanta false e il while si blocca, conludendo il gioco.

E tanti anche altri

Vi dico che è il primo anno che faccio informatica quindi sono ancora alle basi. Non abbiamo ancora affrontato la GUI, per cui è tutto in testo. E ogni consiglio è ben accetto.
Vi posto il codice per vedere se per caso qualcuno di voi potesse aiutarmi.

class tavolaDiGioco
codice:
package dama;


public class tavolaDiGioco {
    
    public boolean boo1, boo2, mCel1, mCel2;
    public char [][]C;

    tavolaDiGioco(){
        C=new char[8][8];
    }
    
    public void riempi() {
        C[0][0]='x';
        C[0][1]='_';
        C[0][2]='x';
        C[0][3]='_';
        C[0][4]='x';
        C[0][5]='_';
        C[0][6]='x';
        C[0][7]='_';
        C[1][0]='_';
        C[1][1]='x';
        C[1][2]='_';
        C[1][3]='x';
        C[1][4]='_';
        C[1][5]='x';
        C[1][6]='_';
        C[1][7]='x';
        C[2][0]='x';
        C[2][1]='_';
        C[2][2]='x';
        C[2][3]='_';
        C[2][4]='x';
        C[2][5]='_';
        C[2][6]='x';
        C[2][7]='_';
        C[3][0]='_';
        C[3][1]='_';
        C[3][2]='_';
        C[3][3]='_';
        C[3][4]='_';
        C[3][5]='_';
        C[3][6]='_';
        C[3][7]='_';
        C[4][0]='_';
        C[4][1]='_';
        C[4][2]='_';
        C[4][3]='_';
        C[4][4]='_';
        C[4][5]='_';
        C[4][6]='_';
        C[4][7]='_';
        C[5][0]='_';
        C[5][1]='o';
        C[5][2]='_';
        C[5][3]='o';
        C[5][4]='_';
        C[5][5]='o';
        C[5][6]='_';
        C[5][7]='o';
        C[6][0]='o';
        C[6][1]='_';
        C[6][2]='o';
        C[6][3]='_';
        C[6][4]='o';
        C[6][5]='_';
        C[6][6]='o';
        C[6][7]='_';
        C[7][0]='_';
        C[7][1]='o';
        C[7][2]='_';
        C[7][3]='o';
        C[7][4]='_';
        C[7][5]='o';
        C[7][6]='_';
        C[7][7]='o';
    }

    public void Controlla1(int ix, int iy) {
        giocatore g=new giocatore();
        boo1=true;
        if (C[ix][iy]=='_') {
            System.out.println("Errore! La casella è vuota.");
            boo1=false;
        }
        else {
            if (g.giocatore1==1 && C[ix][iy]=='o') { //giocatore nero
                System.out.println("Errore! Turno giocatore nero non bianco.");
                boo1=false;
            }
            if (g.giocatore2==1 && C[ix][iy]=='x') { //giocatore bianco
                System.out.println("Errore! Turno giocatore nero non bianco.");
                boo1=false;
            }
        }
    }

    public void Controlla2(int ix, int iy, int sx, int sy) {
        giocatore g=new giocatore();
        //mCel1=false;
        //mCel2=false;
        boo2=true;
        
        if ((sx>7 || sx<0)||(sy>7 || sy<0)) System.out.println("Errore! Fuori dalla tavola di gioco.");
        else {
            if (g.giocatore1==1) { //giocatore nero
                if ((sx!=ix+1 && sy!=iy+1 || sy!=iy-1)) { //muove
                    System.out.println("Errore!");
                    boo2=false;
                }
                if ((sx==ix+2 && sy==iy+2)||(sx==ix+2 && sy==iy-2)) {
                    if (C[sx][sy]=='o') {
                        System.out.println("Impossibile mangiare.");
                    }
                    else {
                            System.out.println("Il nero mangia."); //mangia
                            //mCel1=true;
                            //if (mCel1==true) {
                                if (sx==ix+2 && sy==iy+2) C[ix+1][iy+1]='_';
                                if (sx==ix+2 && sy==iy-2) C[ix+1][iy-1]='_';
                            //}
                        }
                    }
                
            }
            
            if (g.giocatore2==1) { // gioc bianco
                  if ((sx==ix-2 && sy==iy+2)||(sx==ix-2 && sy==iy-2)) { //mangia
                      if (C[sx][sy]=='x') {
                          System.out.println("Impossibile mangiare.");
                      }
                      else  {
                          System.out.println("Il bianco mangia.");
                          //mCel2=true;
                          //if (mCel2==true) {
                              if (sx==ix-2 && sy==iy+2) C[ix-1][iy+1]='_';
                              if (sx==ix-2 && sy==iy-2) C[ix-1][iy-1]='_';
                          //}
                      }
                  }
                  if ((sx!=ix+1 && sy!=iy-1)||(sx!=ix-1 && sy!=iy-1)) System.out.println("Errore!"); //muove
            }
        }
    }

    public void modGraph(int sx, int sy, int ix, int iy) {
        C[sx][sy]=C[ix][iy];
        C[ix][iy]='_';
    }
    

}
class tuiDama
codice:
package dama;


public class tuiDama {

    tuiDama() {}

    public void visual(char C[][]) {
        int n,i,j;

        for(n=1;n<=8;n++) {
            if(n==1) {
                System.out.print("   ");
            }
            System.out.printf("%3d", n);
        }

        System.out.println("");
        System.out.println("");

         for(i=0;i<=7;i++) {
             System.out.print(i+1);
            for(j=0;j<=7;j++) {
                if(j==0) {
                    System.out.print("  ");
                }
                System.out.printf("%3c", C[i][j]);
            }
         System.out.printf("%5d", i+1);
         System.out.println("");
        }

            System.out.println("");

        for(n=1;n<=8;n++) {
            if(n==1) {
                System.out.print("   ");
            }
            System.out.printf("%3d", n);
        }
        System.out.println("");
    }
}
class giocatore
codice:
package dama;

import java.util.Scanner;

public class giocatore {
    
    public int ix, iy, sx, sy, x, o;
    public int giocatore1, giocatore2;
    public boolean f;
    
    giocatore(){
        giocatore1=0;
        giocatore2=0;
    }
    
    public void turno() {
        double k=(Math.random()*100);
        
        if (k<=49){
            giocatore1=1;
        }
        if (k>=50) {
            giocatore2=1;
        }
    }
    
    public void cambioTurno() {
        if (giocatore1==1) {
            giocatore1=0;
            giocatore2=1;
        }
        if (giocatore2==1) {
            giocatore1=1;
            giocatore2=0;
        }
    }

    public void importa() {
        Scanner kb=new Scanner(System.in);
        System.out.println("Quale pedina si vuole spostare?");
        System.out.print("Riga: ");
        ix=kb.nextInt()-1;
        System.out.print("Colonna: ");
        iy=kb.nextInt()-1;
    }

    public void sposta() {
        Scanner kb=new Scanner(System.in);
        System.out.println("In quale cella si vuole spostare la pedina?");
        System.out.print("Riga: ");
        sx=kb.nextInt()-1;
        System.out.print("Colonna: ");
        sy=kb.nextInt()-1;
    }
    
    public void fine() {
        int i=0, j=0;
        f=true;
        tavolaDiGioco w=new tavolaDiGioco();
        
        for (i=0;i<=7;i++) {
            for (j=0;j<=7;j++) {
                if (w.C[i][j]=='x') {
                    x=x+1;
                }
                if (w.C[i][j]=='o') {
                    o=o+1;
                }
            }
        }
        if (x==0 || o==0) {
            f=false;
        }
    }
}
Main
codice:
package dama;

public class Main {
    public static void main(String[] args) {
            tuiDama q=new tuiDama();
            tavolaDiGioco w=new tavolaDiGioco();
            giocatore e=new giocatore();

            w.riempi();
            q.visual(w.C);
            e.turno();
            
            while (e.F) {
                if (e.giocatore1==1) {
                    System.out.println("Tocca al giocatore nero (x)");
                }
                if (e.giocatore2==1) {
                    System.out.println("Tocca al giocatore bianco (o)");
                }
                e.importa();
                w.Controlla1(e.ix, e.iy);
                while (w.boo1==false) {
                    System.out.println("Reiserire");
                    e.importa();
                    w.Controlla1(e.ix, e.iy);
                }
                while (w.boo2==false) {
                    e.sposta();
                    w.Controlla2(e.ix, e.iy, e.sx, e.sy);
                }
                e.fine();
                w.modGraph(e.sx, e.sy, e.ix, e.iy);
                q.visual(w.C);
                //e.fine();
                e.cambioTurno();
            }
    }

}
Grazie a tutti in anticipo.