Bricks Breaking

Un simple jeu de casse briques

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Hello,

En savoir plus sur le projet

Genèse

Découvrant Lua et Love2D, j'ai voulu apprendre et expérimenter ceux-ci en développant un petit jeu sans prétention. Mon choix s'est alors tourné vers le célèbre casse-briques.

Généralités et avancement

Je considère le jeu comme terminé. Vous pouvez télécharger la version actuelle (v1.1) ici.

Néanmoins, il y a toujours des idées pour améliorer le jeu :

  • De nouveaux sons (récupération d'un bonus, perte d'une vie, etc…)
  • De nouveaux bonus
  • Améliorer les collisions
  • Renseigner le bonus récupéré quand c'est un aléatoire.
  • etc…

Le code n'est pas forcément très propre. Mais bon, ce qui est bien c'est qu'il est assez modulable quand même. Par exemple, on peut aisément modifier le nombre de briques ou la taille de l'écran (dans les constantes), et le jeu sera affiché en fonction, sans problème. De même, on peut ajouter de nouveaux bonus assez facilement.

Donc, sauf retours importants (bugs, etc…), je ne compte pas modifier le projet dans l'immédiat.

Objectifs personnels

Mon objectif était de développer un petit jeu tout en découvrant les technologies Lua/Love2D. C'est fait. En plus, je me suis aussi amusé en expérimentant LMMS pour créer les musiques, BFXR pour faire les quelques sons, et un peu de Paint pour les graphismes.

Bonus

Les bonus n'étaient pas prévus à la base, mais c'était un peu fade sans.

  • Mort/Vie supplémentaire
  • Foudre jaune/bleue (modifient vitesse balle)
  • Étoile jaune/bleue (modifient vitesse raquette)
  • Missile (possibilité de plus de dégâts)
  • Indestructible (impossibilité de destruction pendant 7.5s)
  • Random (bonus aléatoire)
  • Seconde balle

Options

  • Mouvement gauche : Q or Flèche gaucge
  • Mouvement droit : D or Flèche droite
  • Démarrer : (ou recommencer) : R
  • Quitter : ESCAPE
  • Sons ON/OFF : X
  • Musiques ON/OFF : C
  • Page aide : H

Screenshots (v1.0)

L'accueil

La page d'aide

En jeu

Encore en jeu

Voilà, si vous avez des questions/remarques n'hésitez pas, bon test ! :)

Édité par Smokiev

Bon j'ai essayé le jeu.

Du coup, c'est sympa, le jeu à l'air bien fini et est jouable. Par-contre, du coup, j'ai pas compris à quoi servaient les étoiles m'enfin c'est pas grave (j'ai vu maintenant dans ton premier post). Du moment que les malus sont claires xD

Sinon, ben c'est marrant. Sauf qu'on a aucun contrôle sur la trajectoire de la balle !? Au premier coup, j'ai pas eu de bol, la balle est partie tout droit, j'ai pas eu à bouger le mur pendant quelques coups puis à le décaler un tout petit peu.
Bref, avec plus d'influence sur la balle on aurait du vrai challenge !

Juste un petit bug je crois, le malus Indestructible n'est pas partie après 7.5s. C'est à dire que j'avais plus l'effet mais le malus était affiché en bas à droite.

Bon boulot, merci du partage :D

ache.one                                                                                   🦊

+1 -0
Auteur du sujet

Pour commencer, j'ai mis une version exécutable en ligne. J'ai eu un peu de mal, dites moi si c'est bon :D

Bon j'ai essayé le jeu.

Du coup, c'est sympa, le jeu à l'air bien fini et est jouable. Par-contre, du coup, j'ai pas compris à quoi servaient les étoiles m'enfin c'est pas grave (j'ai vu maintenant dans ton premier post). Du moment que les malus sont claires xD

Sinon, ben c'est marrant. Sauf qu'on a aucun contrôle sur la trajectoire de la balle !? Au premier coup, j'ai pas eu de bol, la balle est partie tout droit, j'ai pas eu à bouger le mur pendant quelques coups puis à le décaler un tout petit peu.
Bref, avec plus d'influence sur la balle on aurait du vrai challenge !

Juste un petit bug je crois, le malus Indestructible n'est pas partie après 7.5s. C'est à dire que j'avais plus l'effet mais le malus était affiché en bas à droite.

Bon boulot, merci du partage :D

ache

Merci d'avoir essayé et de ton retour ! En effet, c'est vrai qu'il faudrait limite une page d'aide dans le jeu expliquant à quoi servent les bonus ça serait plus pratique !

Pour l'influence sur la balle, tu as sans doute raison, normalement les coins de la raquette permettent de changer la direction en x qui est au départ aléatoire (donc ça n'irait plus tout droit), mais c'est peut-être buggé/pas suffisant (j'avais pensé faire en fonction du mouvement de la raquette aussi). Bref, je vais voir pour arranger cela ! De même que pour le bug de l'indestructible :pirate:

Merci encore !

L'exécutable marche très bien, j'ai pu faire quelques parties de test sans problème (et sans victoire :'( ).

La trajectoire de la balle me semble assez naturelle, même si on peut sûrement faire mieux. On fait quand même souvent des aller-retours dans le jeu pour suivre la balle.

Les bonus/malus ne sont pas très clairs j'ai trouvé aussi, donc une petite page d'aide serait en effet la bienvenue.

Sinon, ça marche, et ça tombe bien, c'est tout ce que j'attends de ce jeu. :D

Auteur du sujet

L'exécutable marche très bien, j'ai pu faire quelques parties de test sans problème (et sans victoire :'( ).

La trajectoire de la balle me semble assez naturelle, même si on peut sûrement faire mieux. On fait quand même souvent des aller-retours dans le jeu pour suivre la balle.

Les bonus/malus ne sont pas très clairs j'ai trouvé aussi, donc une petite page d'aide serait en effet la bienvenue.

Sinon, ça marche, et ça tombe bien, c'est tout ce que j'attends de ce jeu. :D

Bat'

Ahah, il faut dire qu'il y a beaucoup de briques aussi :P Je vais voir ce que je peux faire pour améliorer les collisions et la trajectoire de la balle. Je me suis aidé en autres de ce sujet & je peux par exemple voir pour mettre en place des rebonds imparfaits proposé par SpaceFox

Ouais pour les images j'aurais peut-être pu faire plus explicite :-° , en tout cas la page d'aide serait faite.

Merci d'avoir essayé et de ton retour !

Auteur du sujet

Merci de ton retour :)

Par contre, le jeu est très lent je trouve. On s'ennuis assez vite.
D'ailleurs, je n'ai pas fini ma partie, car c'est beaucoup trop lent.

FougereBle

D'accord, je vais voir pour augmenter les vitesses et peut-être diminuer le nombre de briques pour dynamiser un peu plus !

Pour le moment, j'ai déjà rajouté la page d'aide et je suis en train de finir de revoir le code (j'ai rajouté de nouvelles classes game, round et menu, donc il fallait réorganiser tout ça).

La page d'aide

Auteur du sujet

Voilà, la version 1.0 est en ligne ici !

J'ai pris en compte toutes vos remarques :

  • Ajout d'une page d'aide que l'on peut accéder avec la touche 'H' (j'en ai profité pour ajouter les commandes sur la page d'accueil d'ailleurs)
  • Meilleure prise en compte des coins de la raquette (il y avait effectivement un problème pour les petites vitesses sur l'axe x)
  • Mesures pour rendre le jeu plus dynamique (augmentation des vitesses, des fréquences d'apparition de bonus, et diminution du nombre de briques). Si ce n'est pas suffisant je peux aisément modifier tout cela depuis les constantes si besoin.

Par contre, le bug de l'indestructible, j'ai pas réussi à reproduire, donc on verra bien s'il refait surface ^^

Sinon, j'ai retravaillé les sources en créant de nouveaux objets (du coup ça a fait un peu de travail pour tout réorganiser) et en élaguant quelques fonctions. Bon, la majeure partie du code est dans le même fichier (classes.lua), mais j'avais pas envie de voir pour séparer ça ce soir x).

Je vais mettre à jour les images du premier post.

Bonne soirée :)

Tiens, je viens d'avoir une idée.

Pourquoi ne pas faire des briques qu'il faut toucher plusieurs fois avant de les casser ?
Ca pourrais ajouter de la difficulté.

Aussi, ce serais pas mal d'avoir un bonus qui ajoute une seconde balle.

Bon, je m'inspire des casse-briques auxquels j'ai pu jouer, mais ça pourrais être un bon entrainement. :)

Auteur du sujet

Tiens, je viens d'avoir une idée.

Pourquoi ne pas faire des briques qu'il faut toucher plusieurs fois avant de les casser ?
Ca pourrais ajouter de la difficulté.

Aussi, ce serais pas mal d'avoir un bonus qui ajoute une seconde balle.

Bon, je m'inspire des casse-briques auxquels j'ai pu jouer, mais ça pourrais être un bon entrainement. :)

FougereBle

Je note tes suggestions. ;)

De mon côté, j'ai songé à un bonus laser qui détruirait la colonne frappée (donc il serait assez rare), ainsi qu'un bonus reverse qui retournerait l'écran.

À ce stade, rajouter des bonus ne devrait pas être très compliqué. Après je ne sais pas si et quand je le ferai ^^

Auteur du sujet

Y'a quelques jours j'ai implémenté les propositions de FougereBle (merci à lui) à savoir :

Pourquoi ne pas faire des briques qu'il faut toucher plusieurs fois avant de les casser ?

Aussi, ce serais pas mal d'avoir un bonus qui ajoute une seconde balle.

Ainsi certaines briques peuvent avoir une résistance plus élevée, il faut alors les toucher deux fois pour les casser. Les briques vides ont deux vies, tandis que les autres n'en ont qu'une. Je n'ai pas mis une valeur de vie trop élevée pour que le jeu reste assez rapide.

Quant à la seconde balle, elle se comporte comme la première, mais les bonus de modification de vitesse ne s'appliquent pas sur elle pour éviter que la difficulté soit trop élevée.

La page d'aide a bien sûr été mise à jour.

C'est d'la balle !

Voici donc une nouvelle version. :)

Édité par Smokiev

Hey ! :)

Je suis un grand fan de Löve2D, alors quand j'ai vu ton projet, j'ai sauté dessus ! Je trouve que pour un petit jeu, il est assez bien. Je me suis bien amusé malgré la lenteur. Ce qui serait bien, c'est d'avoir de beaux graphismes, ainsi qu'un fond. J'ai trouvé que le faite de ne pas pouvoir redimensionner la fenêtre du jeu était un peu dommage … :(

Je me suis permis de regarder le code source, et c'est assez propre. Je voudrais juste te conseiller quelque chose, qui est plus propre et plus optimisé : Sur ton code, tu as une fonction qui permet de générer des bonus aléatoirement, dans constants.lua ligne 136. Et à chaque fois que tu vérifies sa valeur dans des conditions, tu fais une petite erreur (ta technique marche mais comme je le disais en haut, ce n'est pas très propre). Tu fais ça :

– Il n'y a pas le langage LUA dans le bloc de code coloré intégré dans l'éditeur de texte ZdS :(

local nombre = math.random(…)

if nombre > 1 and nombre <= 1.5 then

elseif nombre > 1.5 and nombre <= 2 then

Et ainsi de suite. L'erreur dans ton code c'est que à chaque fois que tu vérifies ton nombre, tu vérifies si il est plus grand que le nombre utilisé précédent, ce qui est inutile. Voici comment tu pourrais procéder :

if nombre > 1 and nombre < 1.5 then

elseif nombre < 2 then

elseif nombre < 2.5

Voilà voilà :) Sinon encore bravo pour ton jeu !

Édité par Manyrio

Bonsoir :)

+2 -0
Auteur du sujet

Salut,

Je suis un grand fan de Löve2D, alors quand j'ai vu ton projet, j'ai sauté dessus ! Je trouve que pour un petit jeu, il est assez bien. Je me suis bien amusé malgré la lenteur. Ce qui serait bien, c'est d'avoir de beaux graphismes, ainsi qu'un fond. J'ai trouvé que le faite de ne pas pouvoir redimensionner la fenêtre du jeu était un peu dommage … :(

Oui, j'avais vu que tu aimais Löve2D et que développais un sandbox. J'apprécie aussi cette technologie ! C'est vrai que ce serait mieux avec de jolis graphismes, mais ce jeu n'ayant pour vocation première que de découvrir Lua/Löve2D, et n'étant pas bon en graphismes, ce n'est pas ma priorité. Par contre, c'est vrai que je pourrais voir comment gérer le redimensionnement, donc je le ferai.

Il n'y a pas le langage LUA dans le bloc de code coloré intégré dans l'éditeur de texte ZdS :(

Si tu peux en remplaçant le langage après les trois ` par lua. :)

Pour ta proposition de code ok c'est vrai que l'on gagne en terme de test. Il faut néanmoins que je rajoute une première condition testant les nombre entre 1 et 60 sinon les suivantes accepteront les nombres inférieurs à 60.

1
2
3
4
if nombre < 61 then
  return nil
elseif nombre < 66 then
  -- etc.

Merci pour tes retours ;)

Édité par Smokiev

Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte