[FR] Faire bouger tout seul un objet

Understanding the language, error messages, etc.

[FR] Faire bouger tout seul un objet

Postby LuDoPhotography » Tue Dec 23, 2014 7:52 pm

Bonsoir a tous !

ce que je cherche a faire sa serai de faire une boucle avec des ennemis qui s'efface unefois qu'on leur tire dessus mais je ne sais pas du tout comment on peut faire pour faire tout bouger tout seul de plus, avec des tirs aléatoire pour les ennemis,

comment il faut faire ? je suppose que la commande void loop sera utile vue que c'est un circuit continue si c'est bien sa
LuDoPhotography
 
Posts: 51
Joined: Tue Nov 11, 2014 8:33 am

Re: [FR] Faire bouger tout seul un objet

Postby clement » Wed Dec 24, 2014 8:04 am

Bonjour Ludo,

Effectivement dans cette boucle tu vas pouvoir y mettre le code de ton IA.

Le plus simple pour commencer est de faire bougé ton enemi de gauche a droite puis de droite a gauche.

Pour ce faire il faut déclarer deux variable x et y pour ton ennemi (copie cole avec quelque modif ce qui est fait pour l'avion)

ensuite du fait augmenter ton xEnnemie jusqu'a ce que tu arrive au bord de l'ecran (environ 84 - largeur enemi)

si tu arrive deja a faire ça sera un grand pas dans l'avancer de l'inteligence artificiel.

pour que le code soit propre cree une fonction

Code: Select all
void skyNet()
{
  if([pas au bout de l'ecran])
{
 xennemi = xennemi +1;
}
}


qui sera appeler dans :
Code: Select all
void loop()
{
   //le reste des appel
   skyNet();
}


evidement ce code n'est pas fonctionnelle dans l'état mais tu dois commencer a voir de quoi je te parle.

pour le retour il te faudra un boolean

Code: Select all
 boolean IsAller = true;


tu testera ce boolean pour savoir si tu doit incrementer ou decrementer ta variable xennemi. et tu change sa valeur a chaque foix que tu atteint un coter de l'ecran.

Joyeux noel !
clement
 
Posts: 161
Joined: Sat Oct 25, 2014 8:06 am

Re: [FR] Faire bouger tout seul un objet

Postby LuDoPhotography » Wed Dec 24, 2014 12:17 pm

Merci super je testerai sa demain ! je te tiendrai au courant merci et bon noel ;)
LuDoPhotography
 
Posts: 51
Joined: Tue Nov 11, 2014 8:33 am

Re: [FR] Faire bouger tout seul un objet

Postby LuDoPhotography » Fri Dec 26, 2014 8:02 pm

LuDoPhotography wrote:Merci super je testerai sa demain ! je te tiendrai au courant merci et bon noel ;)




marche pas voici le code intégral :

Code: Select all
#include <SPI.h>
#include <Gamebuino.h>
Gamebuino gb;

//----------------------------------AVION-----------------------

//declaration d'une image
static unsigned char PROGMEM vaisseau[] =
{
  8, 5,
  B00011000,
  B00011000,
  B01111110,
  B00011000,
  B00111100,
};

//-----------------------------------AVION----ENEMIS----------------

//declaration d'une image
const unsigned char PROGMEM plane[] =
{
  8, 5,
  B00111100,
  B00011000,
  B01111110,
  B00011000,
  B00011000,
};

//------------------------------------Missile-----------------------

//declaration d'une image
static unsigned char PROGMEM missile[] =
{
  8, 5,
  B00011000,
  B00011000,
  B00011000,
  B00000000,
  B00000000,
};

//--------------------------------------LOGO------------------------
static byte PROGMEM logo[] =
{
  64,36, //width and height
B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00001110, B00000000, B00000011, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00011011, B01100000, B00011011, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00011011, B01100000, B00011011, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00011000, B01100000, B00000011, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00001100, B11110111, B11011011, B01100111, B00111110, B00000000, B00000000, B00000000,
  B00001110, B01100111, B11011011, B11001101, B10111110, B00000000, B00000000, B00000000,

  B00000110, B01100110, B11011011, B10001101, B10110110, B00000000, B00000000, B00001100,
  B00000011, B01100110, B00011011, B10001111, B10110000, B00000000, B00000000, B00001000,
  B00011011, B01100110, B00011011, B10001100, B00110000, B00000000, B00000000, B00010000,
  B00011011, B01100110, B00011011, B11001101, B10110000, B00000000, B00000000, B01110000,
  B00001110, B00110110, B00011011, B01100111, B00110000, B00000000, B00000000, B01100000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00111000, B11000000,
  B00000000, B00000000, B00000000, B00000000, B00000100, B00000000, B11111111, B10000000,
  B00000000, B00000000, B00000000, B00000000, B00000110, B00111111, B11111111, B00000000,

  B00000000, B00000000, B00000000, B00000000, B00000011, B11111111, B11111110, B00000000,
  B00111110, B00000000, B00000000, B00000000, B00000011, B11111111, B11111100, B00000000,
  B00111111, B00000000, B11000000, B00000000, B00000001, B11111111, B11100000, B00000000,
  B00110011, B00000000, B11000000, B00000000, B00000001, B11111111, B10000000, B00000000,
  B00110011, B00000000, B11000000, B00000000, B00000001, B10000111, B00000000, B00000000,
  B00110011, B00000000, B00000000, B00000000, B00000011, B00000111, B00000000, B00000000,
  B00111111, B01100110, B11011011, B10011110, B00000010, B00001110, B00000000, B00000000,
  B00111111, B01100110, B11011111, B10111111, B00000000, B00011100, B00000000, B00000000,

  B00110011, B01100110, B11011111, B10110011, B00000000, B01110000, B00000000, B00000000,
  B00110011, B01100110, B11011001, B10110011, B00000001, B11100000, B00000000, B00000000,
  B00110011, B01100110, B11011001, B10110011, B00000111, B10000000, B00000000, B00000000,
  B00110011, B01100110, B11011001, B10110011, B00000111, B00000000, B00000000, B00000000,
  B00110011, B01100110, B11011001, B10110011, B00000100, B00000000, B00000000, B00000000,
  B00111111, B01111110, B11011001, B10111111, B00000000, B00000000, B00000000, B00000000,
  B00111110, B01111110, B11011001, B10011110, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B01100000, B00001100, B00001111, B10000000,

  B00000000, B00000000, B00000000, B00000000, B01111110, B11001100, B11111100, B11111000,
  B00000000, B00000000, B00000000, B00000000, B01101111, B10001100, B11111100, B11101100,
  B00000000, B00000000, B00000000, B00000000, B01111011, B00001111, B11111111, B10111000,
  B00000000, B00000000, B00000000, B00000000, B00000011, B00000000, B00000000, B00000000,
};

//--------------------POSITION-----------------------------------------------

//position en X et en Y du vaisseau
int vaisseau_x , vaisseau_y;

int missile_x, missile_y;

int plane_x, plane_y;


void setup()
{
  //Initailise la librairie gamebuino
  gb.begin();
  //affiche l'ecran de titre
  drawTitleScreen();
  gb.popup(F("A:shoot"),100);
}

void loop(){
  if(gb.update()){
    if(gb.buttons.pressed(BTN_C))
    {
      //permet un retour a l'ecran de titre
      drawTitleScreen();
    }
    //mets a jour le vaisseau
    updateVaisseau();
    //mise a jour du missile
    updateMissile();
    //dessine le vaisseau a ça nouvelle position
    drawVaisseau();
    //dessine le missile
    drawMissile();
    //dessine l'enemi
    drawplane();
       //le reste des appel
   skyNet();
   
   
  }
}

void initGame()
{
  //initialise la position de départ du vaisseau et du missile
  vaisseau_x = 35;
  vaisseau_y = 35;
  missile_y = 35;
  missile_x = 35;
  plane_y = 15;
  plane_x = 15;

}


void updateMissile()
{
  //le missile fait 5 de haut donc 0 - 5 = -5 ce qui fait qu'a -10 il sera de sur hors ecran
  if(missile_y>-10)
  {
    //on remonte le missile
    missile_y--;// equivalent a missile_y = missile_y -1;
  }
  else
  {
    //on ne gere plus le missile il est hors ecran
    missile_y = -10;
    missile_x = -10;
  }

}

void updateVaisseau()
{
  //si on presse un bouton on bouge le vaisseau
  if(gb.buttons.repeat(BTN_LEFT, 1))
  {
    vaisseau_x =  vaisseau_x - 1;
  }
  if(gb.buttons.repeat(BTN_RIGHT, 1))
  {
    vaisseau_x=  vaisseau_x + 1;
  }
  if(gb.buttons.repeat(BTN_UP, 1))
  {
    vaisseau_y=  vaisseau_y - 1;
  }
  if(gb.buttons.repeat(BTN_DOWN, 1) )
  {
    vaisseau_y = vaisseau_y + 1;
  }
  if(gb.buttons.pressed(BTN_A) )
  {
    //missile pret a etre tiré
    if(missile_y==-10)
    {
      missile_y = vaisseau_y;
      missile_x = vaisseau_x;
    }
  }
}


void drawVaisseau()
{
  gb.display.drawBitmap(vaisseau_x,vaisseau_y,vaisseau);
}
void drawMissile()
{
  gb.display.drawBitmap(missile_x,missile_y,missile);
}
void drawplane()
{
  gb.display.drawBitmap(plane_x,plane_y,plane);
}

//--------------------------------------------------------
void skyNet()
{
  if (plane_x = plane_x = 38);
{
plane_x = plane_x = +1;
}
}


boolean IsAller = true;

 
//
void drawTitleScreen(){
  gb.titleScreen(F(""),logo);
  gb.pickRandomSeed(); //pick a different random seed each time for games to be different
  initGame();
}
LuDoPhotography
 
Posts: 51
Joined: Tue Nov 11, 2014 8:33 am

Re: [FR] Faire bouger tout seul un objet

Postby clement » Sat Dec 27, 2014 4:56 pm

Quelque correction rapide,


je vais pas tout faire a ta place ;)

Tu avais beaucoup de "=" en trop;

il te manque encore quelque base en programation.
tu devrais faire un tuto C/C++ sur le site du zero :

http://openclassrooms.com/courses/programmez-avec-le-langage-c

Code: Select all
#include <SPI.h>
#include <Gamebuino.h>
Gamebuino gb;

//----------------------------------AVION-----------------------

//declaration d'une image
static unsigned char PROGMEM vaisseau[] =
{
  8, 5,
  B00011000,
  B00011000,
  B01111110,
  B00011000,
  B00111100,
};

//-----------------------------------AVION----ENEMIS----------------

//declaration d'une image
const unsigned char PROGMEM plane[] =
{
  8, 5,
  B00111100,
  B00011000,
  B01111110,
  B00011000,
  B00011000,
};

//------------------------------------Missile-----------------------

//declaration d'une image
static unsigned char PROGMEM missile[] =
{
  8, 5,
  B00011000,
  B00011000,
  B00011000,
  B00000000,
  B00000000,
};

//--------------------------------------LOGO------------------------
static byte PROGMEM logo[] =
{
  64,36, //width and height
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00001110, B00000000, B00000011, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00011011, B01100000, B00011011, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00011011, B01100000, B00011011, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00011000, B01100000, B00000011, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00001100, B11110111, B11011011, B01100111, B00111110, B00000000, B00000000, B00000000,
  B00001110, B01100111, B11011011, B11001101, B10111110, B00000000, B00000000, B00000000,

  B00000110, B01100110, B11011011, B10001101, B10110110, B00000000, B00000000, B00001100,
  B00000011, B01100110, B00011011, B10001111, B10110000, B00000000, B00000000, B00001000,
  B00011011, B01100110, B00011011, B10001100, B00110000, B00000000, B00000000, B00010000,
  B00011011, B01100110, B00011011, B11001101, B10110000, B00000000, B00000000, B01110000,
  B00001110, B00110110, B00011011, B01100111, B00110000, B00000000, B00000000, B01100000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00111000, B11000000,
  B00000000, B00000000, B00000000, B00000000, B00000100, B00000000, B11111111, B10000000,
  B00000000, B00000000, B00000000, B00000000, B00000110, B00111111, B11111111, B00000000,

  B00000000, B00000000, B00000000, B00000000, B00000011, B11111111, B11111110, B00000000,
  B00111110, B00000000, B00000000, B00000000, B00000011, B11111111, B11111100, B00000000,
  B00111111, B00000000, B11000000, B00000000, B00000001, B11111111, B11100000, B00000000,
  B00110011, B00000000, B11000000, B00000000, B00000001, B11111111, B10000000, B00000000,
  B00110011, B00000000, B11000000, B00000000, B00000001, B10000111, B00000000, B00000000,
  B00110011, B00000000, B00000000, B00000000, B00000011, B00000111, B00000000, B00000000,
  B00111111, B01100110, B11011011, B10011110, B00000010, B00001110, B00000000, B00000000,
  B00111111, B01100110, B11011111, B10111111, B00000000, B00011100, B00000000, B00000000,

  B00110011, B01100110, B11011111, B10110011, B00000000, B01110000, B00000000, B00000000,
  B00110011, B01100110, B11011001, B10110011, B00000001, B11100000, B00000000, B00000000,
  B00110011, B01100110, B11011001, B10110011, B00000111, B10000000, B00000000, B00000000,
  B00110011, B01100110, B11011001, B10110011, B00000111, B00000000, B00000000, B00000000,
  B00110011, B01100110, B11011001, B10110011, B00000100, B00000000, B00000000, B00000000,
  B00111111, B01111110, B11011001, B10111111, B00000000, B00000000, B00000000, B00000000,
  B00111110, B01111110, B11011001, B10011110, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B01100000, B00001100, B00001111, B10000000,

  B00000000, B00000000, B00000000, B00000000, B01111110, B11001100, B11111100, B11111000,
  B00000000, B00000000, B00000000, B00000000, B01101111, B10001100, B11111100, B11101100,
  B00000000, B00000000, B00000000, B00000000, B01111011, B00001111, B11111111, B10111000,
  B00000000, B00000000, B00000000, B00000000, B00000011, B00000000, B00000000, B00000000,
};

//--------------------POSITION-----------------------------------------------

//position en X et en Y du vaisseau
int vaisseau_x , vaisseau_y;

int missile_x, missile_y;

int plane_x, plane_y;


void setup()
{
  //Initailise la librairie gamebuino
  gb.begin();
  //affiche l'ecran de titre
  drawTitleScreen();
  gb.popup(F("A:shoot"),100);
}

void loop(){
  if(gb.update()){
    if(gb.buttons.pressed(BTN_C))
    {
      //permet un retour a l'ecran de titre
      drawTitleScreen();
    }
    //mets a jour le vaisseau
    updateVaisseau();
    //mise a jour du missile
    updateMissile();
    //le reste des appel
    skyNet();
    //dessine le vaisseau a ça nouvelle position
    drawVaisseau();
    //dessine le missile
    drawMissile();
    //dessine l'enemi
    drawplane();


  }
}

void initGame()
{
  //initialise la position de départ du vaisseau et du missile
  vaisseau_x = 35;
  vaisseau_y = 35;
  missile_y = 35;
  missile_x = 35;
  plane_y = 15;
  plane_x = 15;

}


void updateMissile()
{
  //le missile fait 5 de haut donc 0 - 5 = -5 ce qui fait qu'a -10 il sera de sur hors ecran
  if(missile_y>-10)
  {
    //on remonte le missile
    missile_y--;// equivalent a missile_y = missile_y -1;
  }
  else
  {
    //on ne gere plus le missile il est hors ecran
    missile_y = -10;
    missile_x = -10;
  }

}

void updateVaisseau()
{
  //si on presse un bouton on bouge le vaisseau
  if(gb.buttons.repeat(BTN_LEFT, 1))
  {
    vaisseau_x =  vaisseau_x - 1;
  }
  if(gb.buttons.repeat(BTN_RIGHT, 1))
  {
    vaisseau_x=  vaisseau_x + 1;
  }
  if(gb.buttons.repeat(BTN_UP, 1))
  {
    vaisseau_y=  vaisseau_y - 1;
  }
  if(gb.buttons.repeat(BTN_DOWN, 1) )
  {
    vaisseau_y = vaisseau_y + 1;
  }
  if(gb.buttons.pressed(BTN_A) )
  {
    //missile pret a etre tiré
    if(missile_y==-10)
    {
      missile_y = vaisseau_y;
      missile_x = vaisseau_x;
    }
  }
}


void drawVaisseau()
{
  gb.display.drawBitmap(vaisseau_x,vaisseau_y,vaisseau);
}
void drawMissile()
{
  gb.display.drawBitmap(missile_x,missile_y,missile);
}
void drawplane()
{
  gb.display.drawBitmap(plane_x,plane_y,plane);
}

boolean IsAller = true;

//--------------------------------------------------------
void skyNet()
{
  if (IsAller)
  {
      //je vais vers la droite
    plane_x = plane_x +1;
  }
  else
  {
    //je vais vers la gauche
    plane_x = plane_x -1;
  }
 
  //si on depasse la taille de l'ecran on fait demis tour
  if(plane_x>84)
  {
    //is aller est un boolean qui peut prendre deux valeur true ou false
    IsAller = false;
  }
  //si on ou vas en dessous de zero on fait demis tour
  if(plane_x<=0)
  {
    IsAller = true;
  }
 
  if(random(0,20) == 0)
  {
    //ici insert le code du missile qui descent
    gb.popup(F("IA : Shoot!"),10);
  }
}




//
void drawTitleScreen(){
  gb.titleScreen(F(""),logo);
  gb.pickRandomSeed(); //pick a different random seed each time for games to be different
  initGame();
}

clement
 
Posts: 161
Joined: Sat Oct 25, 2014 8:06 am


Return to Programming Questions

Who is online

Users browsing this forum: No registered users and 13 guests

cron