Understanding the language, error messages, etc.
by 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
by 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
by 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
by 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
by 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 5 guests