Aide comment faire saute un personnage dans mon jeux

Bonjour j'ai fait un jeux vidéo mais je sais pas comment faire retombe mon personnage après un laps de temps bien définie voici le code merci
pour l'instant si j'appuie sur le bouton saut il va en haut et si je n'appuie pas il reste en bas

#include <LiquidCrystal.h>
LiquidCrystal lcd(12,11,5,4,3,2);
byte coeur[8]={
  0b00000,
  0b01010,
  0b01110,
  0b11111,
  0b11111,
  0b01110,
  0b00100,
  0b00000
};
byte ennemi[8]={
  0b00000,
  0b01110,
  0b01110,
  0b00100,
  0b01110,
  0b11110,
  0b01010,
  0b01010
};
byte block[8]={
 0b11111,
 0b11111,
 0b11111,
 0b11111,
 0b11111,
 0b11111,
 0b11111,
 0b11111 
};
byte joueur[8]={
  0b00000,
  0b01110,
  0b01110,
  0b00100,
  0b01110,
  0b01110,
  0b01010,
  0b01010
};
int saut=0;
int y=0;
unsigned long tempssaut;
unsigned long temps;
int sautmode=0;
int boutonvie=0;
int etatboutonvie=0;
int vie=3;
int etatvie=0;
int etatpositionxennemi=0;
int positionxennemi=0;
int pointmode=0;
int etatpoint=0;
int point=0;
int mode=0;
int etatboutondemarrer=0;
int etatboutonsaut=0;
int etatboutonavant=0;
int etatboutonarriere=0;
int boutondemarrer=9;
int boutonsaut=8;
int boutonavant=7;
int boutonarriere=6;
int etatmode=0;
int positionx=0;
int positiony=0;
int etatpositionx=0;
int etatpositiony=0;
void setup() {
  pinMode(boutonsaut, INPUT);
  pinMode(boutonavant,INPUT);
  pinMode(boutondemarrer,INPUT);
  pinMode(boutonarriere,INPUT);
  lcd.begin(16,2);
  lcd.createChar(4,coeur);
  lcd.createChar(1,joueur);
 lcd.createChar(2,block);
 lcd.createChar(3,ennemi);
}

void loop() {
if(vie!=etatvie){
  etatvie=vie;
  lcd.clear();
}
if(positionxennemi!=etatpositionxennemi){
  etatpositionxennemi=positionxennemi;
  lcd.clear();
}
if(point!=etatpoint){
  etatpoint=point;
  lcd.clear();
}
if(mode!=etatmode){
  etatmode=mode;
  lcd.clear();
}
if(positionx !=etatpositionx){
  etatpositionx=positionx;
  lcd.clear();
}
if(positiony !=etatpositiony){
  etatpositiony=positiony;
  lcd.clear();
}
 switch (mode){
  case 0:


lcd.setCursor(1,0);
lcd.print("JEUXVIDEO 0.023");
if(digitalRead(boutondemarrer)!=etatboutondemarrer){
  etatboutondemarrer=digitalRead(boutondemarrer);
  if(digitalRead(boutondemarrer)==1){
    mode=1;
  }
}
  break;
  case 1:
switch (vie){
  case 0:
  mode=2;
  break;
  case 1:
  lcd.setCursor(13,0);
  lcd.write(4);
break;
case 2:
 lcd.setCursor(14,0);
 lcd.write(4);
 lcd.setCursor(13,0);
 lcd.write(4);
 break;
 case 3:
 lcd.setCursor(14,0);
 lcd.write(4);
 lcd.setCursor(13,0);
 lcd.write(4);
 lcd.setCursor(15,0);
 lcd.write(4);
 break;
}
switch (pointmode){
  
case 0:
lcd.setCursor(3,0);
lcd.write(2);
if(positionx==3&&positiony==0){
  point=2;
  pointmode=1;

}
break;
case 1:
lcd.setCursor(9,0);
lcd.write(2);
if(positionx==9&&positiony==0){
  point=4;
 pointmode=2;

}
break;
case 2:
lcd.setCursor(13,0);
lcd.write(2);
if(positionx==13&&positiony==0){
 
pointmode=3;
}

break;
case 3:
point=8;
break;
}
if(positionxennemi==0){
  positionxennemi=random(15,22);
}
if(millis()-temps>300){
  temps=millis();
  positionxennemi--;
}
if(positionxennemi==positionx&&1==positiony){
  boutonvie=1;
}
else{
  boutonvie=0;
}
lcd.setCursor(positionx,positiony);
lcd.write(1);
lcd.setCursor(0,0);
lcd.print(point);
if(digitalRead(boutonavant)!=etatboutonavant){
  etatboutonavant=digitalRead(boutonavant);
  if(digitalRead(boutonavant)==1){
    positionx++;
  }
}
 if(digitalRead(boutonarriere)!=etatboutonarriere){
  etatboutonarriere=digitalRead(boutonarriere);
  if(digitalRead(boutonarriere)==1){
    positionx--;
  }
}
  if(boutonvie!=etatboutonvie){
    etatboutonvie=boutonvie;
    if(boutonvie==1){
    vie--;
    }
  }
 if(digitalRead(boutonsaut)==1){
  positiony=0;
 }
 else{
  positiony=1;
 }
  lcd.setCursor(positionxennemi,1);
  lcd.write(3);
  break;
  case 2:
lcd.setCursor(2,1);
lcd.print("game over");
  break;
  
  
 }

}