Snake game does not stop when snake touches itself

I can not get the game to stop when the snake touches itself
Help mee pleasse i have to finish it for tomorrow
Thnx

int [][] fond; //tableau bidimensionnel
int X;   // position sur l'axe des X de la tete du train
int Y;   // et sur l'axe des Y
int afficheFond;
int colonnes = 78;   // la taille de la grille notre jeu en lignes et colonnes
int lignes = 24;
int dX; //gere le deplacement de X
int dY; //gere le deplacement de Y


void setup() {

  X=10; //position de X
  Y=10; //position de Y
  dX=0; //deplacement initial du x
  dY=0; //deplacement initial du y

  size(1000, 800); //taille de la fenetre 

  fond = new int [100][80]; //gere la taille du tableauFond
  for (int i=0; i < 100; i++) { 
    for (int j=0; j < 80; j++) {
      fond[i][j]=0;
    }
  }
  //fond[X][Y]=1;
}

void afficheFond() {

  for (int i=0; i < 100; i++) {
    for (int j=0; j < 80; j++) {
      if (fond[i][j]==0) {
        fill(167, 167, 167); //determine la couleur du fond
      } else{ //alors
        fond[i][j]=1;
        fill(0, 0, 255); //la couleur est changé en bleu
      }

      rect(i*20, j*20, 20, 20); //crée les cases
    }
  }
}
    if(X==1){
     stop() ;
}

void draw() {
  frameRate(8); //gere la vitesse du serpent
  afficheFond(); 
  println(X); //permet d'afficher les coordoonées de X dans le tableau d'erreur
  println(Y); //permet d'afficher les coordonées de Y dans le tableau d'erreur
  fond[X][Y]=1; //au coordonnée XY les cases deviennent bleu

  X=X+dX; //permet de se faire deplacement auto du X
  Y=Y+dY; //permet de se faire deplacement auto du Y
}
  //if(X()==1){
    stop();
  }
  

void keyPressed() {

  if (key==CODED) {

    if (keyCode==RIGHT) {
      dX=1;  
      dY=0;
    }

    if (keyCode==LEFT) {
      dX=-1;
      dY=0;
    }

    if (keyCode==DOWN) {
      dX=0;
      dY=1;
    }
     if(keyCode==UP){
      dX=0;
      dY=-1;
    
    }
  }
}

The if statement I have added checks IF you clicked the right key AND the cell one space to the right is FILLED then stop the game, ELSE continue.

void draw() {
  frameRate(8); //gere la vitesse du serpent
  afficheFond();
  println(X); //permet d’afficher les coordoonées de X dans le tableau d’erreur
  println(Y); //permet d’afficher les coordonées de Y dans le tableau d’erreur
  fond[X][Y]=1; //au coordonnée XY les cases deviennent bleu
  
  if (fond[X+1][Y] == 1 && keyCode == RIGHT) { // HERE
    // stops game
  } else {
    // continues game
    X=X+dX; //permet de se faire deplacement auto du X
    Y=Y+dY; //permet de se faire deplacement auto du Y
  }
}

Now all you have to do is repeat that if statement for all directional cases!

1 Like