"Break force,"Un ptit shmup sous gamemaker....

Pour tout ce qui est fan arts, homebrew, shooters codés à la main, rip de sprites, doujins et toute autre productions artistiques ou logicielles faites maison.
Répondre
Avatar de l’utilisateur
Alec
King Fossile
Messages : 15768
Inscription : 12 juil. 2004, 18:04
Localisation : nstc-j

V1.1 de Breakforce dispo !
lien (clic me)
Spoiler :
Désolé mais le lien n'est plus valide

Et quelques screenshots :


ImageImage
ImageImage



Scénario :
Le système solaire est pris pour cible par un ennemi inconnu, une gigantesque flotte a attaqué les installations sur la lune et a investi le site de forage 14d !
Tous les systèmes de défenses terriens ont été piratés et la plupart des vaisseaux de combats ont été retournés contre nous !
Le plus inquiétant est que le site orbital de défense est à la merci de l'ennemi, des engins nucléaires extrêmement puissants de nouvelle génération y sont stockés !

La france et le japon ont réussi à percer provisoirement les lignes ennemies dans l'espace, ce qui vous permettra peut être de vous faufiler !
Nous mettons à votre disposition le "arcHD Blackrain " chasseur expérimental polyvalent qui utilise les dernières technologies d'armements multiples !

Votre mission :
-détruire les avant postes ennemis et les cibles prioritaires
-investir le dépot de missiles et empêcher un éventuel lancement
-démasquer et détruire le leader ennemi !
-survivre et faire les bon choix !

Fin de message !



Comment jouer :

Si on se base sur la répartition des touches d'un pad usb classique
(avec un logitech précision c'est nikel)

-bouton 1 (backshot) tir extrêmement puissant sur les diagonales
-bouton 2 (wave) tir large mais moins puissant, peut cependant traverser les murs.
-bouton 3 (front shot) tir frontal puissant et précis
-bouton 4 (ballup/balldown) deux tirs envoyés en haut et en bas de l'écran

-------touches latérales (r1 et r2 si vous préférez^^)
-bouton 6 (homing missiles) des nuées de missiles à tête chercheuses, tir très puissant et pratique mais qui est handicapé dans les endroits "sinueux"
-bouton 8 (homing laser) tir faible mais très utile car il traverse les décors comme wave !


Les capsules vertes (début du level 1) permettent de faire grimper le score de façon significative avec tous les tirs sauf le homing laser, chaque tir qui traversera ces éléments rapportera des points !
Ces capsules sont placées dans les décors et au fil des niveaux, à vous d'utiliser le bon tir au bon moment !

Il y a des vies cachées dans les niveaux alors faites pas crier Jackie (la pilote) trop souvent........surtout que la hitbox est localisée sur la vitre du vaisseau (...la vitre le truc vert quoi !) mais une hitbox à cet endroit ça impose la prudence........


Pour tester les différentes armes ET configurer son pad j'ai fait un menu dans lequel on pourra diriger le vaisseau, tranquille sans ennemis avec un descriptif basique de chaque arme et surtout de la configuration idéale pour les touches !
Ce menu sera accessible en pressant la barre espace depuis l'écran titre !

Pour visionner l'introduction rester à l'écran de titre quelques secondes !
Il y a deux fins sur ce jeu, il faudra se battre jusqu'au bout, j'en dis pas plus !





Ah et aussi, c'est paradoxal mais Breakforce est un jeu 16 bits qui peut faire ramer votre pc, j'ai pas externalisé les ressources tout est dans l'exécutable (y sait pas comment faire le gars) alors désolé d'avance pour ces petits désagréments !

Il n'y aura pas d'update avant très longtemps et il y a de forte chances que je n'y touche plus donc ça reste comme ça, c'est jouable finissable et on peu faire de jolis scores !
Dernière modification par Alec le 13 sept. 2014, 11:31, modifié 15 fois.
ImageImageImage
Avatar de l’utilisateur
Alec
King Fossile
Messages : 15768
Inscription : 12 juil. 2004, 18:04
Localisation : nstc-j

hop, petite démo vite fait : http://www.megaupload.com/?d=ZKQVU3YV
(5 ou 6 megs)

C'est ultra basique, mais c'est vraiment amusant à faire !
ImageImageImage
Avatar de l’utilisateur
niluge
Radiant Silverpost
Messages : 1247
Inscription : 29 juin 2006, 15:29
Localisation : Above and beyond

Eh eh, on voit tout de suite vers ou tu veux aller au moins ^^
Bon c'est bien sympa tout ça, mais maintenant on attend l'ajout des tir et des ennemies dans ton thunderforce 7.
Si tu t'amuse, j'espère qu'on aura vite droit a une suite et que tu poussera l'expérience jusqu'au bout. ça serait sympa d'avoir une petite communauté de "développeur" ici je trouve.
Avatar de l’utilisateur
Alec
King Fossile
Messages : 15768
Inscription : 12 juil. 2004, 18:04
Localisation : nstc-j

C'est clair !

Bah, c'est un début, en fait même si GM c'est un programme qui assiste énormément, je trouve ça intéressant de savoir "comment on fait un jeu "!

Et oui, pour ce programme, ça serai bien de pouvoir partager les expériences genre :
-comment on gère des colisions...
-comment on peut faire une smart bomb...
-comment faire un scrolling différentiel
-comment faire un menu


Pour le moment j'explore et je fais mumuse, on verra ....
ImageImageImage
Gyano
No-bullet mode
Messages : 34
Inscription : 30 août 2009, 19:24

Alec a écrit :C'est clair !

Bah, c'est un début, en fait même si GM c'est un programme qui assiste énormément, je trouve ça intéressant de savoir "comment on fait un jeu "!

Et oui, pour ce programme, ça serai bien de pouvoir partager les expériences genre :
-comment on gère des colisions...
-comment on peut faire une smart bomb...
-comment faire un scrolling différentiel
-comment faire un menu


Pour le moment j'explore et je fais mumuse, on verra ....
Si tu te contente du drag and drop de base, en effet c'est ultra accessible mais tu verras en avançant qu'il te faudra assez vite taper un minimum de code, par chance le GML n'est pas trop compliqué.

Pour les aides et tuto y'a le site du CBNA -> http://www.gamemaker.fr/
La communauté de ce forum est très jeune et parfois limite mais il y a quelques apprentis programmeurs très doués que je ne saurais assez remercier pour tous les coups de pouces qu'ils m'ont donnés.

Il y a un autre site du genre et fr : http://zone-freegames.forumactif.com/forum.htm
Il y a aussi et bien entendu Shmupdev, pas forcément spécialisé dans gamemaker mais pour les discussions générales de dev de shmup y'a pas mieux...à visiter et lire absolument.
Avatar de l’utilisateur
Alec
King Fossile
Messages : 15768
Inscription : 12 juil. 2004, 18:04
Localisation : nstc-j

Bon, je me lance, en suivant bien les instructions j'ai réussi à pondre un petit shmup à scrolling horizontal....

Bon, certains auront reconnu le sprite joueur et les bastonneux (sur MD) les batiments en bleu foncé......
Image

Pour le moment, j'ai :
-un vaisseau joueur qui entre en collision avec ennemis et décor
-un tir joueur qui détruit les ennemis et se heurte aux décors
-des ennemis destructibles (avec bruitage et explosion) très passifs pour le moment
-des décors qui arrêtent le joueur et les tirs joueur
-plusieurs plans de scrolling (8 je crois )

bon, les petites soucoupes volantes sont de moi, elles sont pourries mais elles servent bien pour mes tests !

Merci à Gunny et aux autres pour leurs encouragements !
Je sais pas si je pourrais pondre quelque chose de potable voir d'amusant mais on verra bien !
ImageImageImage
Avatar de l’utilisateur
yace
Ben... yace, quoi
Messages : 29257
Inscription : 30 juin 2003, 18:20
Localisation : Ailleurs...
Contact :

Bon courage, et fais gaffe, dès que ce sera prêt, je vais le tester avec ma plume acerbe. ;)
Playlist TBYVGS

On nous promet les cieux, nom de Dieu, pour toute récompense
Tandis que ces messieurs, nom de Dieu, s'arrondissent la panse, sang Dieu!
Nous crevons d'abstinence, nom de Dieu, nous crevons d'abstinence!
Avatar de l’utilisateur
Alec
King Fossile
Messages : 15768
Inscription : 12 juil. 2004, 18:04
Localisation : nstc-j

:D :D :D
Ah ben ça !
ImageImageImage
Sonic
Mou-Stick
Messages : 11
Inscription : 07 mars 2010, 17:39

Bonne continuation , moi aussi je vais essayer d'en faire un !
Avatar de l’utilisateur
Alec
King Fossile
Messages : 15768
Inscription : 12 juil. 2004, 18:04
Localisation : nstc-j

Pfffff et c'est dûr !

En ce moment je me creuse la tête pour faire tirer les ennemis, genre la même cadence que dans rtype, ça peut paraitre con pour les gouroux du shmup amateur mais c'est pas évident :) !
ImageImageImage
Avatar de l’utilisateur
psychogore
1 crédit c'est déjà trop
Messages : 2357
Inscription : 23 mai 2003, 09:04

mmmm...
Je pense qu'en utilisant l'evenement alarm il y a moyen, genre :

dans l'evenement "view boundary", tu fais alarm0=25 (pour un delay de 25 frames, mais tu adapteras).

dans l'evenement alarm0, tu mets :
-l'action representant le Dé (c'est optionel, juste pour avoir une variance dans ta cadence de tir, genre 1 fois sur 2 ou 3 il ne tire pas)
-une creation de boulette en direction du joueur (ça, ça pourrait necessiter quelques calculs, je n'ai pas trouvé de fonction qui renvoie la direction d'un sprite à l'autre, enfin, tu vois l'idée). Eventuellement, limiter le nombre de boulettes par un test sur le nombre d'instances si tu n'as pas envie que ça tourne au danmaku
-alarm0=25 (pour s'assurer qu'il recommencera au bout de 25 frames).


Bien sur, ne pas oublier de detruire les boulettes dès qu'elles sortent de l'ecran (sinon ça pourrait ramer).

J'espere que ça t'aidera.
De mon coté je fais aussi qque chose sous gamemaker, quand j'aurai un niveau finalisé, je viendrai le soumettre pour avoir votre avis sur mon systeme de scoring.
Gunny
Empereur Bydo
Messages : 3404
Inscription : 15 mai 2006, 15:26
Localisation : Rayon chaussettes du Kiabi du coin
Contact :

Plus on mix le code et le drag and drop, plus ca devient bordelique :D
Pour une fréquence de tir, il faut se baser sur les steps.
Sachant que le nombre de step est par défaut à 30/secondes ca permet de faire des trucs assez simples et précis :)

Alors moi je me fais mes compteurs persos.
J'initialise la variable "compteur" à un nombre choisi. ( en général, je rassemble toutes les variables à définir dans un petit script que j'exécute dans l'event "create" )

Ensuite dans mon script step :

Code : Tout sélectionner

if ( compteur == 0 )
    {
         id_tir = instance_create( x , y , tir_ennemi ); // création de l'objet tir et récupération de l'id retourné par la fonction instance_create()
         with (id_tir) // la construction with permet "d'injecter" des valeurs à des variables dans un autre objet. On ne peut pas créer de variable avec with d'après mes tests
             {
               direction = 270 ; // pour un tir vers la gauche
               speed=12;
             }
         compteur=valeur_choisie;
    }
else
    {
     compteur-=1; // on décrémente le compteur (on retire 1)
    }
Si t'as un truc électronique cassé, ça se passe par là https://www.atelier-electrodd.fr/

-Je comprend rien à ce que tu dis...
-Pas grave... C'est pas en vivant plus longtemps qu'on deviens moins con.
Avatar de l’utilisateur
Alec
King Fossile
Messages : 15768
Inscription : 12 juil. 2004, 18:04
Localisation : nstc-j

Merci, je vais essayer tout ça !


Ah et petite préview, un WIP du demi boss 1 :


Image
ImageImageImage
Gyano
No-bullet mode
Messages : 34
Inscription : 30 août 2009, 19:24

Alec a écrit :Pfffff et c'est dûr !

En ce moment je me creuse la tête pour faire tirer les ennemis, genre la même cadence que dans rtype, ça peut paraitre con pour les gouroux du shmup amateur mais c'est pas évident :) !

Le truc c'est qu'il y a 100 façons de faire, les alarmes sont une bonne solution pour commencer, en plus il est facile de varier la cadence selon d'autres paramètres comme la difficulté ou le rank, il suffira pour une action donnée de changer l'alarme pour un nombre plus retit.
(Tu dois 'absolument' maitriser les alarmes elles vont te servir sans arrêt, consulte l'aide intégrée de gamemaker, bien souvent tu trouveras la réponse à ta question.)

Personnellement j'affectionne les timelines pour faire certains pattern, voir des attaques successives et complètement différentes (2 salves de boulettes puis un temps mort puis 3 salves de lasers par exemple).


Veille à rester ordonné avant qu'il ne soit trop tard et que ton code ne devienne limite compréhensible pour toi même ;)
Faut pas hésiter à utiliser les icones de texte (les triangles jaunes ou on peut mettre des notes) pour s'y retrouver plus facilement.


(j'essaye de remettre la main sur des sources....je te promets rien mais je cherche)
Avatar de l’utilisateur
Alec
King Fossile
Messages : 15768
Inscription : 12 juil. 2004, 18:04
Localisation : nstc-j

Alors j'ai comme objets :

-"Oenemyfly" (qui est parent avec) "oenemy1"
-"Oenemybullet"
-"Oxplode"


Je dois faire quoi avec ? :D :D :D

Punaise pas moyen de les faire tirer vers le joueur, :? :?
ImageImageImage
Gyano
No-bullet mode
Messages : 34
Inscription : 30 août 2009, 19:24

Alec a écrit :Alors j'ai comme objets :

-"Oenemyfly" (qui est parent avec) "oenemy1"
-"Oenemybullet"
-"Oxplode"


Je dois faire quoi avec ? :D :D :D

Punaise pas moyen de les faire tirer vers le joueur, :? :?
Alors ^^'
Les alarmes c'est ok?
(l'objet qui va tirer, donc ici 'Oenemyfly' doit contenir l'alarme, la variable et la condition + la creation de l'objet Oenemybullet)

1° dans create event: tu défenis ta variable 'can_shot' avec une valeur de 0
2° Tu crées une alarme0 dans alarme event, dedans tu mets à nouveau ta variable can_shot mais avec une valeur de 1
3° dans step event tu places ton code de tir, par exemple:


if can_shot=1{ // ici on vérifie que la variable can shot est bien sur 1
with instance_nearest (x,y,Oenemyfly)
{
instance_create(x,y,Oenemybullet) direction=180+random (5); // on crée le tir avec une direction de 180 et une valeur random de 5
alarm[0]=20;
can_shot=0;}}

A la fin du code on remet la variable à zero, donc ton vaisseau ne peux plus tirer,u noteras l'utilisation d'une direction + une valeur random de 5, ce qui pourrait t'être utile dans le futur.


___________________________________________________
___________________________________________________


Bon pour que ton tir ennemi vise ton vaisseau tu peux utiliser l'icone 'move to direction of a point' dans le -move- panel, à placer dans ton objet Oenemybullet biensur.

ou bien en script ça donnera :
move_toward_point(obj_player.x,obj_player.y,1);

Si tu le place dans create event il visera ton vaisseau player au moment ou il se crée, si en plus tu place ce code aussi /ou dans step event, le tir va suivre ton vaisseau player.


//EDIT:

Retrouvé mes sources 2D :D
Tu veux un moteur vertical clef en main? hahahahaha :))

Je dois avoir un autre cd quelque part avec un moteur horizontal...Pas encore retrouvé...

(URL par mp ;) )
Gunny
Empereur Bydo
Messages : 3404
Inscription : 15 mai 2006, 15:26
Localisation : Rayon chaussettes du Kiabi du coin
Contact :

Pour pointer vers le joueur, j'utilise cette méthode :

dir_joueur = point_direction(x,y,objet_joueur.x,objet_joueur.y);

point_direction() s'utilise comme ca : point_direction(x_source , y_source , x_visé , y_visé ) et ca retourne un angle en degré.

Code : Tout sélectionner

         with (id_tir) // la construction with permet "d'injecter" des valeurs à des variables dans un autre objet. On ne peut pas créer de variable avec with d'après mes tests
             {
               dir_joueur = point_direction(x,y,objet_joueur.x,objet_joueur.y); // on récupère l'angle en degré à partir de l'origine du tir ( coordonnée x et y ) à la position x et y de l'objet du joueur basé sur son origine.
               direction = dir_joueur ;
               image_angle = dir_joueur ; // on effectue une rotation au sprite du tir pour qu'il prenne lui aussi l'angle à l'affichage
               speed=12;
             }
Ne pas oublier dans l'event create du tir de créer la variable dir_joueur et de l'initialiser à 0 ( ou toute autre valeur, car de toute facon, elle va se faire changer ).
Si t'as un truc électronique cassé, ça se passe par là https://www.atelier-electrodd.fr/

-Je comprend rien à ce que tu dis...
-Pas grave... C'est pas en vivant plus longtemps qu'on deviens moins con.
Avatar de l’utilisateur
Alec
King Fossile
Messages : 15768
Inscription : 12 juil. 2004, 18:04
Localisation : nstc-j

Avec ta méthode Gyano (qui est finalement très simple à comprendre), j'ai quand même ce message d'erreur :

Code : Tout sélectionner

ERROR in
action number 2
of  Step Event
for object oenemyfly:

Error in code at line 7:
   if canshot=1{ 
      ^
at position 5: Unknown variable canshot

et mon code est le suivant avec bien sûr les alarmes et tout le bazard :

Code : Tout sélectionner

x += xVel;
if (hp < 1)
{
    instance_create(other.x, other.y, oxplode);
    instance_destroy();
}
if canshot=1{ 
with instance_nearest (x,y,oenemyfly)
{
instance_create(x,y,oenemyshot) direction=180+random (5); 
alarm[0]=20;
canshot=0;}}
Dernière modification par Alec le 12 mars 2010, 16:38, modifié 1 fois.
ImageImageImage
jM.
As du Slalom
Messages : 158
Inscription : 17 févr. 2010, 10:21
Localisation : Lyon

Souvent mon debuggeur me dit ça : "Initialise tes variables branleur, t'es pas en VB" (sic)

Mais je sais pas si ça s'applique à gamemaker ^^
"Si à 50 ans on a pas encore fini DoDonPachi, c'est qu'on a raté sa vie" Jacques Séguéla
Avatar de l’utilisateur
Alec
King Fossile
Messages : 15768
Inscription : 12 juil. 2004, 18:04
Localisation : nstc-j

:D
Alors là moi non plus je sais pas si ça s'applique à gamemaker !
ImageImageImage
Gunny
Empereur Bydo
Messages : 3404
Inscription : 15 mai 2006, 15:26
Localisation : Rayon chaussettes du Kiabi du coin
Contact :

if canshot=1{
with instance_nearest (x,y,oenemyfly)
{
instance_create(x,y,oenemyshot) direction=180+random (5);
alarm[0]=20;
canshot=0;}}
il n'y a pas de parenthèses autour de canshot=1

if ( canshot=1 ){
with instance_nearest (x,y,oenemyfly)
{
instance_create(x,y,oenemyshot) direction=180+random (5);
alarm[0]=20;
canshot=0;}}
Si t'as un truc électronique cassé, ça se passe par là https://www.atelier-electrodd.fr/

-Je comprend rien à ce que tu dis...
-Pas grave... C'est pas en vivant plus longtemps qu'on deviens moins con.
jM.
As du Slalom
Messages : 158
Inscription : 17 févr. 2010, 10:21
Localisation : Lyon

Il gueule pour la variable pas pour la synthaxe nan ?
"Si à 50 ans on a pas encore fini DoDonPachi, c'est qu'on a raté sa vie" Jacques Séguéla
Gunny
Empereur Bydo
Messages : 3404
Inscription : 15 mai 2006, 15:26
Localisation : Rayon chaussettes du Kiabi du coin
Contact :

certes, mais c'est important quand meme :)

Ce qu'il dit, c'est qu'il ne connait pas la variable canshot dans l'objet oenemyfly.

Donc on lance le jeu en mode debug, on fait tools -> show local variable et on rentre l'ID de l'objet :)

Si ca se met directement au lancement, c'est que la variable n'est pas initialisée du tout ^^
Si t'as un truc électronique cassé, ça se passe par là https://www.atelier-electrodd.fr/

-Je comprend rien à ce que tu dis...
-Pas grave... C'est pas en vivant plus longtemps qu'on deviens moins con.
Avatar de l’utilisateur
Alec
King Fossile
Messages : 15768
Inscription : 12 juil. 2004, 18:04
Localisation : nstc-j

:x :x :x ça tire pas !!!!!!!!!
ImageImageImage
jM.
As du Slalom
Messages : 158
Inscription : 17 févr. 2010, 10:21
Localisation : Lyon

Remarque un shmup où les enemis tirent pas, j'ai peut-etre une chance de le finir !

T'as déjà un client :D
"Si à 50 ans on a pas encore fini DoDonPachi, c'est qu'on a raté sa vie" Jacques Séguéla
Avatar de l’utilisateur
Y^nO
Dieu de la Borne
Messages : 1786
Inscription : 04 août 2005, 00:13
Localisation : Paumé dans l'espace...
Contact :

Il ne connait pas la variable, il y a deux solutions soit tu ne l'as pas initiée
(dans le create event: canshot=0) , soit un autre objet ou sprite porte le même nom.

Le plus souvent c'est la première solution, ceci il vaut mieux toujours utiliser les préfixes obj_...(pour les objets) spr_...(pour les sprites) Bck_ ... (pour les backgrounds) ect...
Image
Avatar de l’utilisateur
Alec
King Fossile
Messages : 15768
Inscription : 12 juil. 2004, 18:04
Localisation : nstc-j

Image




bon, j'envoie le tout http://www.megaupload.com/?d=ILRCU5MS, si l'humeur vous en dit :

Par contre, ce shmup est vraiment ultra facile :
-il n'y a que deux vagues d'ennemis (qui ne tirent pas)
-aucun obstacles
-un tir qui ravage tout
-et enfin un boss qui fait office de plante verte pour le moment !


Toujours en galère avec ces tirs !
ImageImageImage
Gunny
Empereur Bydo
Messages : 3404
Inscription : 15 mai 2006, 15:26
Localisation : Rayon chaussettes du Kiabi du coin
Contact :

il faudrait que l'on puisse voir le code source complet :)
Là, peut-être que je pourrais t'aiguiller sur ce qui ne va pas ;)
Ca te permettra de comprendre un peu mieux par toi-même les mécanismes de game maker ^^

( je ne suis pas adepte de la solution clé-en main, on se retrouve avec un code qu'on ne comprend pas vu qu'on l'a pas écris, et qu'on arrive pas à résoudre nos propres erreurs )
Si t'as un truc électronique cassé, ça se passe par là https://www.atelier-electrodd.fr/

-Je comprend rien à ce que tu dis...
-Pas grave... C'est pas en vivant plus longtemps qu'on deviens moins con.
Avatar de l’utilisateur
Alec
King Fossile
Messages : 15768
Inscription : 12 juil. 2004, 18:04
Localisation : nstc-j

Gunny a écrit : ( je ne suis pas adepte de la solution clé-en main, on se retrouve avec un code qu'on ne comprend pas vu qu'on l'a pas écris, et qu'on arrive pas à résoudre nos propres erreurs )
Justement je veux comprendre d'où ça vient pour en effet apprendre et progresser


tiens, si tu peux me dire où ça foire : http://www.megaupload.com/?d=YNSR4MI4
ImageImageImage
Gunny
Empereur Bydo
Messages : 3404
Inscription : 15 mai 2006, 15:26
Localisation : Rayon chaussettes du Kiabi du coin
Contact :

rhaaaaaaaa c'est ca de jouer avec les parents et les héritages :D

Je t'expliquerais ca sur msn tout ;) l'heure, enlève le parent de la boulette des vaisseaux ennemis.

Bon par contre, j'ai du modifier pas mal ton fichier pour comprendre ce qui n'allait pas (parce que bon, le code meme si pas clair était à peu près correct )... et j'ai plus la version d'origine xD

Tant pis :)

De mon point de vue, il vau mieux que tu recommence pour partir sur des bases plus saines et oublier, dans un premier temps, le système de parent/enfant, car c'était la source de ton problème :)

c'est pas parce qu'un objet est issu d'un autre que c'est forcément un enfant de cet objet ^^ le tir n'a pas à avoir le meme comportement que ton vaisseau.

C'est une fonction utile quand tu as beaucoup d'objet similaires, mais avec quelques petites nuances dans le comportement. Et il faut bien prendre soin de vérifier que les variables utiles sont initialisées.
Si t'as un truc électronique cassé, ça se passe par là https://www.atelier-electrodd.fr/

-Je comprend rien à ce que tu dis...
-Pas grave... C'est pas en vivant plus longtemps qu'on deviens moins con.
Répondre