Hi I'm new to Processing and struggling

Hi i’m new to processing and coding in general , i have a project that is due in 6 hours and i have problems everywhere in my code , i keep looking of them and cant find anything and i’m very desperate.can you guys help me please? here is my code , i keep getting "unnexpected token void "on
my repaint fucntion and my test hit function

//////////////////////////////////////////////////////////////
//
// Les déclarations de variables
//
//////////////////////////////////////////////////////////////
PImage gun;
float x,y; //coordonnées du canon
float misx,misy; // coordonnées du missile 
float vitm;//vitesse du missile
boolean mist; //test pour savoir si le missile a été tiré
PImage inv;//image de l'invader
float invx,invy;//positions de l'invader
int per; //periodicité du déplacement 
int compt;//compteur chaque 30 frames
int Vi;//vitesse de l'invader
int score,mscore; //score et meilleur score



//////////////////////////////////////////////////////////////
//
// La fonction d'initialisation
//
//////////////////////////////////////////////////////////////
void setup() {
  gun= loadImage("gun.png");//initialisation de l'image du canon
  inv= loadImage("goku.png");//initialisation de l'image de linvader
  int mscore=0;
  // fixe la taille de la fenêtre
  size(600, 800);
  // fixe la vitesse d'animation
  frameRate(50);

  // appelle la fonction d'initialisation du jeu
  newGame();
  drawGun();
  drawInvader();
}

//////////////////////////////////////////////////////////////
//
// La boucle de rendu
//
//////////////////////////////////////////////////////////////
void draw() {
  control();
  repaint();
  if (mist==true){
  goBullet();
  }
  compt=(compt+1)%per;
  if (compt==0){
    goInvader();
    }
}

//////////////////////////////////////////////////////////////
//
// L'initialisation du jeu
//
//////////////////////////////////////////////////////////////
void newGame() {
  float x=width/2;
  float y=760.0;
  float invx=0;
  float invy=0;
  int per=30;
  int  comp=0; 
  int Vi=20;
  int score=0;
}

//////////////////////////////////////////////////////////////
//
// Le tir d'un missile
//
//////////////////////////////////////////////////////////////
void fire() {
misx=x;
misy=y;
mist=true;
}

//////////////////////////////////////////////////////////////
//
// L'animation du missile
//
//////////////////////////////////////////////////////////////
void goBullet() {
  misy=misy-vitm;
  if (misy<1){
    mist=false;
  }
}

//////////////////////////////////////////////////////////////
//
// L'animation de l'invader
//
//////////////////////////////////////////////////////////////
void goInvader() {
  if (invx>= width - 50 && Vi>0){
  invx=invx+Vi;//ajout de la vitesse a la position
  }
  else if(invx==width-50) {//descendre d'un rang et inverser la vitesse
     invy=invy+50;
    Vi=-Vi;
    if(per>10){
      per=per-2;
    }
  }
  if (invx<=width-50 && Vi<0){
    invx=inx+Vi;
  }
  else if (invx==width+50){
    Vi=-Vi;
    if(per>10){
      per=per-2;
    }
    }
    
//////////////////////////////////////////////////////////////
//
// La mise à jour de la fenêtre d'animation
// Cette fonction utilise notamment les fonctions :
// - drawGun pour afficher le canon
// - drawInvader pour afficher l'invader
// - drawBullet pour afficher le missile
//
//////////////////////////////////////////////////////////////
  void repaint() {
  tint(232,48,16);
   drawInvader(); 
   if (mist==true){
   drawBullet() ;
  }
   
   
}

//////////////////////////////////////////////////////////////
//
// L'affichage du canon
//
//////////////////////////////////////////////////////////////
void drawGun() {  
  tint(232,48,16);
  image(gun,300,780,54,39);
  
}

//////////////////////////////////////////////////////////////
//
// L'affichage de l'invader
//
//////////////////////////////////////////////////////////////
void drawInvader() {
  noTint();
  image(inv,0,0,54,39);
}

//////////////////////////////////////////////////////////////
//
// L'affichage du missile
//
//////////////////////////////////////////////////////////////
void drawBullet() {
  line(misx,misy,misx+3,misy+5);
}

//////////////////////////////////////////////////////////////
//
// Teste si le missile percute l'invader
//
//////////////////////////////////////////////////////////////
void testHit() {
  if (misx>=invx && misx<=invx+54 && misy>= invy && missy<=invy-39){
    score=score+1;
    mist=false;
    if (score>=mscore){
      mscore=score;}
}
}


//////////////////////////////////////////////////////////////
//
// L'affichage du score
//
//////////////////////////////////////////////////////////////
void drawScore() {
}

//////////////////////////////////////////////////////////////
//
// L'affichage du message "GAME OVER"
//
//////////////////////////////////////////////////////////////
void gameOver() {
}

//////////////////////////////////////////////////////////////
//
// Pilote le canon et contrôle le lancement de missiles
//
//////////////////////////////////////////////////////////////
void control() {
  while (x>gun.width/2){
   if (keyCode == LEFT){
   x=x-5;
    }
  }
  while (x<600-gun.width/2){
    if (keyCode == RIGHT) {
    x=x+5;
   }
  }
  if (mist==false){
  if(keyCode== TAB){
    fire();
   }
  }
}

Please format your Code with the </> Button.

Hi thanks for your response and i edited the code.
What does unnexpected token void means in general? i have several of those and i’m very lost
i have erors at repaint and testHit , been looking for syntaxt erors and cant find any

ok i found the mistakes and the code is running fine

1 Like

It means that you used void in the wrong place. You can see that pretty clearly if you take another look at your Code now that it‘s formatted.

Your functions are part of the PApplet class (which is implied, so you don‘t see the actual class and only some things… it‘s complicated so lets stop with this), therefore they should never be indented, but they are in your Code.

That is because you missed some curly brackets at the end of the preceding function.

//////////////////////////////////////////////////////////////
//
// Les déclarations de variables
//
//////////////////////////////////////////////////////////////
PImage gun;
float x,y; //coordonnées du canon
float misx,misy; // coordonnées du missile
float vitm;//vitesse du missile
boolean mist= false; //test pour savoir si le missile a été tiré
PImage inv;//image de l'invader
float invx,invy;//positions de l'invader
int per; //periodicité du déplacement
int compt;//compteur chaque 30 frames
int Vi;//vitesse de l'invader
int score,mscore; //score et meilleur score
PFont joysticks;//police d'affichage
boolean gamov= false;//variable de fin de partie




//////////////////////////////////////////////////////////////
//
// La fonction d'initialisation
//
//////////////////////////////////////////////////////////////
void setup() {
  joysticks=createFont("joystix.ttf",16);
  textFont(joysticks);
  text(score,50,30);
  text( mscore,400,30);
  imageMode(CENTER);
  gun= loadImage("gun.png");//initialisation de l'image du canon
  imageMode(CENTER);
  inv= loadImage("goku.png");//initialisation de l'image de linvader
  int mscore=0;
  // fixe la taille de la fenêtre
  size(600, 800);
  // fixe la vitesse d'animation
  frameRate(50);

  // appelle la fonction d'initialisation du jeu
  newGame();
  drawGun();
  drawInvader();

}

//////////////////////////////////////////////////////////////
//
// La boucle de rendu
//
//////////////////////////////////////////////////////////////
void draw() {
  control();
  repaint();
  if (mist){
  goBullet();
  }
  compt=(compt+1)%per;
  if (compt==0){
    goInvader();
    }
  if (gamov== false){
    gameOver();
  }
}

//////////////////////////////////////////////////////////////
//
// L'initialisation du jeu
//
//////////////////////////////////////////////////////////////
void newGame() {
  x=width/2;
   y=750;
  invx=0;
   invy=0;
  per=30;
  comp=0;
   Vi=20;
  score=0;
  gamov=false;
}

//////////////////////////////////////////////////////////////
//
// Le tir d'un missile
//
//////////////////////////////////////////////////////////////
void fire() {
misx=x;
misy=y;
mist=true;
}

//////////////////////////////////////////////////////////////
//
// L'animation du missile
//
//////////////////////////////////////////////////////////////
void goBullet() {
  misy=misy-vitm;
  if (misy<0){

    mist=false;
  }
}

//////////////////////////////////////////////////////////////
//
// L'animation de l'invader
//
//////////////////////////////////////////////////////////////
void goInvader() {
  if (invx>= width - 50 && Vi>0){
  invx=invx+Vi;//ajout de la vitesse a la position
  }
  else if(invx==width-50) {//descendre d'un rang et inverser la vitesse
     invy=invy+50;
    Vi=-Vi;
    if(per>10){
      per=per-2;
    }
  }
  if (invx<=width-50 && Vi<0){
    invx=invx+Vi;
  }
  else if (invx==width+50){
    Vi=-Vi;
    if(per>10){
      per=per-2;
    }
    }
  if(invy==y){
    gamov=true;
  }
}
   
//////////////////////////////////////////////////////////////
//
// La mise à jour de la fenêtre d'animation
// Cette fonction utilise notamment les fonctions :
// - drawGun pour afficher le canon
// - drawInvader pour afficher l'invader
// - drawBullet pour afficher le missile
//
//////////////////////////////////////////////////////////////
  void repaint (){
     drawInvader();
    tint(232,48,16);
   if (mist){

   drawBullet();
  }  
}


//////////////////////////////////////////////////////////////
//
// L'affichage du canon
//
//////////////////////////////////////////////////////////////
void drawGun() {  
  tint(232,48,16);
  image(gun,x,y,54,39);
 
}

//////////////////////////////////////////////////////////////
//
// L'affichage de l'invader
//
//////////////////////////////////////////////////////////////
void drawInvader() {
  noTint();
  image(inv,invx,invy,54,39);
}

//////////////////////////////////////////////////////////////
//
// L'affichage du missile
//
//////////////////////////////////////////////////////////////
void drawBullet() {
  line(misx,misy,misx+3,misy+5);
}

//////////////////////////////////////////////////////////////
//
// Teste si le missile percute l'invader
//
//////////////////////////////////////////////////////////////
void testHit() {
if (mist)


  if (misx>=invx && misx<=invx+54 && misy>= invy && misy<=invy-39){
    score=score+1;
    mist=false;
    if (score>=mscore){
      mscore=score;
    }
}
}


//////////////////////////////////////////////////////////////
//
// L'affichage du score
//
//////////////////////////////////////////////////////////////
void drawScore() {
}

//////////////////////////////////////////////////////////////
//
// L'affichage du message "GAME OVER"
//
//////////////////////////////////////////////////////////////
void gameOver() {
  if (gamov==true){
    println("GAME OVER!!",300,400);
    print("Press the space bar to start the game again!",300,450);
}
}
//////////////////////////////////////////////////////////////
//
// Pilote le canon et contrôle le lancement de missiles
//
//////////////////////////////////////////////////////////////
void control() {
  while (x>gun.width/2){
   if (keyCode == LEFT){
   x=x-5;
    }
  }
  while (x<600-gun.width/2){
    if (keyCode == RIGHT) {
    x=x+5;
   }
  }
  if (mist==false){
  if(keyCode== TAB){
    fire();
   }
  if (gamov==true){
    if (keyCode==TAB){
      gamov=false;
      newGame();
    }
  }
 
  }
}



ok i'm done with coding i'm upposed to have a space invaders game , i followed all steps but nothing is moving witch is weird ,when others from my class succeded and i dont understand my mistake

ok i’m done with coding i’m upposed to have a space invaders game , i followed all steps but nothing is moving witch is weird ,when others from my class succeded and i dont understand my mistake

You don‘t draw your gun/invader except once in setup… so they move, but you just don‘t see it. You have to draw them each frame.

1 Like

So put drawGun(); and drawInvader(); inside of the void draw block

1 Like

You should put println() statements in your code to help with debugging.

You are stuck in a while() loop as well.

https://processing.org/reference/while.html
https://processing.org/reference/if.html

A minimal example:

void setup() 
  {
  size(200, 200);
  x = width/2;
  }


void draw() 
  {
  background(0);
  control();
  circle(x, height/2, 20);
  }

void control() 
  {
  println(x);
  if (x>0+10)
    {
    if (keyCode == LEFT)
      {
      x=x-5;
      println(x);
      }
    }
  
  if (x<width-10)
    {
    if (keyCode == RIGHT) 
      {
      x=x+5;
      println(x);
      }
    }
  }

:slight_smile:

1 Like