Casse brique - évolution

Creations

Codnpix

2 weeks ago

This is a little breakout game, based on a customisation of the one from this tutorial https://gamebuino.com/fr/creations/breakout .

Évolutions :

- Multiple levels (6 so far...)

- Bounce angle control on paddle

- Various types of bricks (1, 2, 3 shots destroyed, moving bricks...)


Soon :

- user menu (choose level, see locked and unlocked levels, see best scores...)

- bonus (score bonus, custom padlle, multiball..?)


Thanks for testing and giving me feedback on what could be improved :) !


Petit essai de jeu de casse-brique en évolution de celui proposé par le tutoriel https://gamebuino.com/fr/creations/breakout .

Évolutions :

- Plusieurs niveaux (6 pour l'instant)

- Contrôle de l'angle de rebond sur la palette

- briques variées, briques en mouvement...

à venir bientôt (j'espère =) !)

- menu utilisateur (choisir le niveau, voir les niveaux bloqués et débloqués et les meilleurs scores)

-bonus (points supplémentaires, palette customisée, multiballe... ?)


Merci à tous ceux qui pourront le tester et me donner leurs retours sur ce que devrait être amélioré !

View full creation

geed

NEW 1 week ago

ça fonctionne très bien :)
c'est simple mais niveau gameplay, à part peut-être des bonus et/ou une accélération de la balle, je vois pas quoi ajouter de plus !

Un "vrai" menu, une page de scores, et hop, ça fera un excellent casse-brique à laisser sur la carte :)


Codnpix

1 week ago

Merci :) !

Disons que je me sers de développer ce petit jeu pour apprendre et prendre en main l'environnement Gamebuino, c'est parti du tutoriel et j'essaye d'y ajouter les idées qui viennent, ça fait des petits challenges de programmation, c'est formateur... Par exemple je suis en train d'ajouter des niveaux ou les briques bougent, et là je bloque totalement pour arriver à les faire bouger ensemble autour d'un cercle, mon niveau en math me fait un peu défaut ^^. Mais quand je verrai le bout de mes petites idées de customisation j'essaierai de soigner un peu plus la présentation !

jicehel

NEW 1 week ago

Pas eu le temps de vraiment tester mais je vais y remédier  ;)

Codnpix

NEW 1 week ago

geed geed

Merci :) !

Disons que je me sers de développer ce petit jeu pour apprendre et prendre en main l'environnement Gamebuino, c'est parti du tutoriel et j'essaye d'y ajouter les idées qui viennent, ça fait des petits challenges de programmation, c'est formateur... Par exemple je suis en train d'ajouter des niveaux ou les briques bougent, et là je bloque totalement pour arriver à les faire bouger ensemble autour d'un cercle, mon niveau en math me fait un peu défaut ^^. Mais quand je verrai le bout de mes petites idées de customisation j'essaierai de soigner un peu plus la présentation !

geed

1 week ago

Regarde mon jeu DTC, pour la partie menu et score, tu auras un truc "clef en main" à adapter à ton usage. J'ai moi même piqué/adapté le code à Rodot sur UFO-Race pour cette partie là, des fois, ça ne sert à rien de réinventer l'eau chaude :D

Pour tes histoires de mouvements en cercle, pourquoi ne pas faire un petit tableau qui contiendrait les "modificateurs" de position en X/Y de ta brique. A chaque itération tu "avances" d'un cran dans le tableau et modifie la positions de ta briques avec le modificateur sur les coordonnées.
Tu peux même imaginer plusieurs "pattern" du coup, avec plusieurs tableaux (en rond, en rectangle, etc. etc.). Pis comme ça, pas de calcul compliqué avec des maths (sin/cos etc.) qui ralentiront ton programme.

geed

NEW 1 week ago

Codnpix Codnpix

Regarde mon jeu DTC, pour la partie menu et score, tu auras un truc "clef en main" à adapter à ton usage. J'ai moi même piqué/adapté le code à Rodot sur UFO-Race pour cette partie là, des fois, ça ne sert à rien de réinventer l'eau chaude :D

Pour tes histoires de mouvements en cercle, pourquoi ne pas faire un petit tableau qui contiendrait les "modificateurs" de position en X/Y de ta brique. A chaque itération tu "avances" d'un cran dans le tableau et modifie la positions de ta briques avec le modificateur sur les coordonnées.
Tu peux même imaginer plusieurs "pattern" du coup, avec plusieurs tableaux (en rond, en rectangle, etc. etc.). Pis comme ça, pas de calcul compliqué avec des maths (sin/cos etc.) qui ralentiront ton programme.

Codnpix

1 week ago

Ok j'irai voir ! 

Pour les patterns stockés dans un tableau j'ai un peu essayé, je ne m'en suis pas vraiment sorti mais il faut peut être que je creuse encore un peu.

Codnpix

NEW 1 week ago

geed geed

Ok j'irai voir ! 

Pour les patterns stockés dans un tableau j'ai un peu essayé, je ne m'en suis pas vraiment sorti mais il faut peut être que je creuse encore un peu.

Codnpix

NEW 4 days ago

Bonjour à tous, 

je suis en train d'essayer de mettre en place le menu pour pouvoir sélectionner manuellement un niveau dans mon casse brique, et ça m'a fait mettre le doigt sur un problème que je n'arriver pas à solutionner : 

Les images des briques leurs sont assignées en fonction d'un tableau d'entiers de ce style :

 {
    {0,1,1,1,1,1,1,0},
    {0,2,0,2,1,0,2,0},
    {0,1,0,1,2,0,1,0},
    {0,2,2,3,3,2,2,0},
    {0,1,0,1,2,0,1,0},
    {0,2,0,2,1,0,2,0},
    {0,1,1,1,1,1,1,0},
    {0,0,0,0,0,0,0,0}
  }

Chaque nombre correspond à un type de brique, donc quand j'initialise le niveau je parcours le tableau qui correspond au niveau pour assigner la bonne image à chaque brique. Les zéro ne corresponde à rien donc ça donnc un emplacement vide. Sauf que...

Ça se passe bien tant que je charge mon niveau sur une matrice vierge (par exemple quand j'allume la console ou que j'ai détruit toute les briques et que je passe au niveau suivant). Mais si je charge un niveau via le menu et que le précédent niveau chargé affichait encore des briques, les zéro de la matrices n'ont en fait aucun effet ! Certes ils ne chargent pas une nouvelle image mais ils ne remplacent pas non plus l'ancienne par du vide. Du coup je me retrouve avec les briques du niveau sélectionné et les briques du dernier niveau affiché là ou il devrait y avoir du vide....

Donc en gros j'aimerais trouver un moyen de réinitialiser vraiment ces emplacements sur du vide mais je ne sais pas comment m'y prendre.

Voici la fonction qui charge le niveau selon ce tableau : 

void loadLevel(int myLevel) {

  for (int rangee = 0; rangee < NB_RANGEES; rangee++) {
      for (int colonne = 0; colonne < NB_COLONNES; colonne++) {
        types_set[rangee][colonne] = levels[myLevel][rangee][colonne];
      }
    }
}

et voici un extrait de comment la fonction "initGame" attribue les images à chaque brique selon son type (du coup je me contente d'ignorer les zéros mais visiblement c'est un peu léger :D !) :

void initGame() {
//...

  //initialiser les briques
  for (int rangee = 0; rangee < NB_RANGEES; rangee ++) {
    for (int colonne = 0; colonne < NB_COLONNES; colonne++) {
      briques[rangee][colonne].type = types_set[rangee][colonne];
      briques[rangee][colonne].x = colonne * (BRICK_W + 1) + 1;
      briques[rangee][colonne].y = rangee * (BRICK_H + 1) + 1;
      if (briques[rangee][colonne].type == 1) {
        briques[rangee][colonne].state = 1;
        briques[rangee][colonne].img = brick1;
      } else if (briques[rangee][colonne].type == 2) {
        briques[rangee][colonne].state = 2;
        briques[rangee][colonne].img = brick2;
      } else if (briques[rangee][colonne].type == 3) {
        briques[rangee][colonne].state = -2;
        briques[rangee][colonne].img = brick3;
//...

Et voici la structure d'un brique :

struct Brique {
  int x;
  int y;
  int _w;//largeur
  int _h;//hauteur
  int type;
  int state;
  Image img;
  int speedX;
  int speedY;
  unsigned long deathTime;
};


Est-il possible de "nullifier" l'objet image d'une brique ? J'ai essayé de me débrouiller avec des pointeurs pour que l'objet image de la struct Brique soit en fait un pointeur vers l'adresse d'une image dans un tableau ou bien vers une valeur NULL si le type==0. Mais je ne m'en suis pas sorti (même pas réussi à juste remplacer l'image réelle de la brique par un pointeur vers une image..).


Voilà en gros où j'en suis, merci d'avance si quelqu'un a un conseil à me donner !


EDIT : J'ai trouvé un solution un peu en "trichant", je fait en sorte que les briques dont le type est zéro soient détruites d'entrée de jeu et à partir de là plus de problème. Mais je suis pas sûr que ce soit très propre comme solution, donc je reste ouvert aux suggestions !



clement

NEW 3 days ago

Salut,

pour optimiser un peux tout ca et enlever ce probleme de brique fantôme tu peux changer la structure de stockage des briques 

si au lieux de les stocker dans un tableau a 2 dimensions  tu les stock dans un tableau a une dimension tu ne stoque que les brique a afficher

int nombreDeBriqueCourent = 0;
for (int rangee = 0; rangee < NB_RANGEES; rangee ++) {
    for (int colonne = 0; colonne < NB_COLONNES; colonne++) {
      if (types_set[rangee][colonne] > 0) {
         briques[nombreDeBriqueCourent].type = types_set[rangee][colonne];
         // evidement tout le reste de l initialisation
         nombreDeBriqueCourent++;
     }
  }
}

Dans ton tableau tu aura uniquement des briques a afficher (entre l index 0 et  nombreDeBriqueCourent - 1)

Dans les boucles d'affichage et mise a jour tu tournera evidement uniquement sur le nombreDeBriqueCourent.


++




You must be logged in in order to post a message on the forum

Log in