# Snake game does not stop when snake touches itself

**URL:** https://discourse.processing.org/t/snake-game-does-not-stop-when-snake-touches-itself/712
**Category:** Beginners
**Created:** [June 4, 2018, 7:11pm UTC](https://discourse.processing.org/t/snake-game-does-not-stop-when-snake-touches-itself/712 "2018-06-04T19:11:52Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![rayanne](https://avatars.discourse-cdn.com/v4/letter/r/d9b06d/32.png) [@rayanne](https://discourse.processing.org/u/rayanne)
#### Post date: [June 4, 2018, 7:11pm UTC](https://discourse.processing.org/t/snake-game-does-not-stop-when-snake-touches-itself/712/1 "2018-06-04T19:11:52Z")

</div>

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

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

```

---

<div class="post-metadata">

### Author: ![\_ther](https://avatars.discourse-cdn.com/v4/letter/_/898d66/32.png) [@\_ther](https://discourse.processing.org/u/_ther)
#### Post date: [June 5, 2018, 2:32am UTC](https://discourse.processing.org/t/snake-game-does-not-stop-when-snake-touches-itself/712/2 "2018-06-05T02:32:06Z")

</div>

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.

```auto
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!
