Actualités
Articles

Deprecated: Function eregi() is deprecated in /home/clients/d3fc885f29675a204a95fb9f4bb0fc6d/web/Admin/show_news.php on line 16

Deprecated: Function eregi() is deprecated in /home/clients/d3fc885f29675a204a95fb9f4bb0fc6d/web/Admin/show_news.php on line 39

Deprecated: Function eregi() is deprecated in /home/clients/d3fc885f29675a204a95fb9f4bb0fc6d/web/Admin/inc/shows.inc.php on line 22

Deprecated: Function eregi() is deprecated in /home/clients/d3fc885f29675a204a95fb9f4bb0fc6d/web/Admin/inc/shows.inc.php on line 22

Deprecated: Function eregi() is deprecated in /home/clients/d3fc885f29675a204a95fb9f4bb0fc6d/web/Admin/inc/shows.inc.php on line 22

Deprecated: Function eregi() is deprecated in /home/clients/d3fc885f29675a204a95fb9f4bb0fc6d/web/Admin/inc/shows.inc.php on line 22

Deprecated: Function eregi() is deprecated in /home/clients/d3fc885f29675a204a95fb9f4bb0fc6d/web/Admin/inc/shows.inc.php on line 22

Deprecated: Function eregi() is deprecated in /home/clients/d3fc885f29675a204a95fb9f4bb0fc6d/web/Admin/inc/shows.inc.php on line 22

Deprecated: Function eregi() is deprecated in /home/clients/d3fc885f29675a204a95fb9f4bb0fc6d/web/Admin/inc/shows.inc.php on line 22

Deprecated: Function eregi() is deprecated in /home/clients/d3fc885f29675a204a95fb9f4bb0fc6d/web/Admin/inc/shows.inc.php on line 22

Deprecated: Function eregi() is deprecated in /home/clients/d3fc885f29675a204a95fb9f4bb0fc6d/web/Admin/inc/shows.inc.php on line 22

Deprecated: Function eregi() is deprecated in /home/clients/d3fc885f29675a204a95fb9f4bb0fc6d/web/Admin/inc/shows.inc.php on line 22

Deprecated: Function eregi() is deprecated in /home/clients/d3fc885f29675a204a95fb9f4bb0fc6d/web/Admin/inc/shows.inc.php on line 22
Les opérateurs binaires
Les opérateurs binaires

Somaire
1- Introduction aux opérateurs binaires
2- Bases et conversion (facultatif)
3- Calculs avec les opérateurs binaires
4- Regles binaires
5- Opérateurs de décalage << et >>
6- Opérateur de complément ~
7- Le systeme héxadécimal
8- Utilité de ces opérateurs

Ce tutoriel auras pour but d'expliquer le fonctionnement des opérateurs binaires (bitwise), qui sont croyez moi très utiles bien qu'assez obscur au premier abort. La partie 8 est la partie la plus interressante car elle montre leurs utilité.


1- Introduction aux opérateurs binaires

Il existe en tout 6 opérateurs binaires :
-Le et (and) noté &
-Le ou inclusif (or) noté |
-Le ou exclusif (xor) noté ^
-Le décalage a droite >>
-Le décalage a gauche <<
-L'opérateur de complément ~

Les trois premiers opérateurs se présentent sous trois formes, avec une forme qui permettra de calculer avec des nombres, et une autre calculer des bits entre eux.
-Le et peut s'écrire : & , && , and
-Le ou inclusif peut s'écrire : | , || , or
-Le ou exclusif peut s'écrire : ^ , ^^ , xor

Un bit peut avoir seulement deux valeurs (étant de base 2), 0 ou 1.
En fait physiquement cela correspond a la polarisation en spin d'un électron (spin down ou spin up).
En programmation 1 et 0 correspondent a vrai et faux.

Les opérateurs binaires sont des opérateurs logiques :
Par exemple si on vous dit qu'une information est vraie et qu'une autre information l'est aussi, on pourras considérer que l'information totale est vraie. Or si une des deux informations est erronnée, l'information globale seras alors elle aussi erronnée.
C'est tout simplement comme ça que fonctionne l'opérateur and.

Si on remplace vrai par 1 et faux par 0, on a alors :
1 and 1 = 1
1 and 0 = 0, de même 0 and 1 = 0
0 and 0 = 0
Voila donc le fonctionnement du and.
J'avais dit précédement que and, && et & n'avaient pas tous la même utilitée.
En fait le && est la vrai syntaxe en programmation du and, donc ils s'utilisent de la même manière, mais ne servent eux qu'a comparer seulement deux bits entre eux.
Le & lui sert à comparer quand à lui deux nombres entre eux.

Pour comparer deux nombres entre eux il faut tout d'abord les ecrire en base 2, s'ils sont en base 10.
Nous fonctionnons (nous les humains) en base 10, certainement car nous possédons dix doigts, mais les machines elles fonctionnent en base 2 (voir Spintronique pour savoir pourquoi).


2- Bases et conversion (facultatif)

Cette partie est facultative puisque la conversion base 10 <=> base 2 peut se faire avec la calculatrice de Windows bien que rien ne vous empeche d'apprendre ce mécanisme si vous ne savez pas déja le faire.

Nous possédons donc 10 chiffres permettant d'ecrire tous nos nombres :
0, 1, 2, 3, 4, 5, 6, 7, 8, et 9.
Pour la base de 2 on a juste 0 et 1.

Exemple de nombres en base 10 puis en base 2 :
666 <=> 1010011010
23 <=> 10111
13 <=> 1101
2012 <=> 11111011100

a) Conversion base 2 vers base 10

Pour convertir un nombre de base 2 en un nombre de base 10 rien de plus simple, il suffit en partant de la droite multiplier chaque chiffre par 2 puissance sa position.
Exemple, avec ^ signifiant puissance et pas xor, et * signifiant multiplier :
10111 base 2 = 1*2^0 + 1*2^1 + 1*2^2 + 0*2^3 + 1*2^4 = 1 + 2 + 4 + 0 + 16 = 23

b) Conversion base 10 vers base 2

Pour passer de la base 2 à la base 10 c'est un peu plus compliqué.
Une méthode simple consiste a imaginer notre nombre de base 10 sous forme de billes par exemple, puis d'imaginer des boites pouvant contenir un certain nombre de billes. Nos boite seront classées de cette manière, dans un ordre decroissant du nombre de billes qu'elles peuvet contenir.
Si on a 123 à covertir en base 2, il suffit de ce dire que l'on possède 123 billes.
Ensuite il faut chercher une puissance de 2 suppérieure a notre nombre de billes.
Ici pour 123 on auras donc 2^7 = 128
Nos boites sont donc disposées de cette maniere (les [] signifient boite et le nombre a l'interieur est le nombre de bille que peut contenir la boite, de plus on commence à 2^(7-1) soit 2^6 ) :
[2^6] [2^5] [2^4 ] [2^3] [2^2] [2^1] [2^0] soit
[64] [32] [16] [8] [4] [2] [1]
Maintenant nous allons remplir nos boites de billes avec une regle simple, il faut remplir entierement une boite de bille (1) ou la laisser vide et passer a la suivante si on n'a pas assez de billes (0).
Ce qui nous donne :
[64] : 1, on peut la remplir entierement, il nous reste donc 123-64 billes, soit 59.
[32] : 1, il nous reste 59-32 = 27 billes.
[16] : 1, il nous reste 11 billes.
[8] : 1, il nous reste 3 billes.
[4] : 0, on ne peut pas remplir entierement notre boite, on passe à la suivante.
[2] : 1, il nous reste une bille.
[1] : 1, on a remplis toutes les boites.

123 s'écrit donc en base 2 : 1111011.

Astuce : pour trouvé la puissance de la dernière boite on peut faire un log de base 2 de notre nombre de base 10 et tronquer. Ici on aurait log2(123) = 6,94 et des poussieres, donc 6 si on tronque, or 2^6 = 64, ce qui est bien la contenance de notre premiere boite.
Si vous ne possedez pas le log2 il suffit de faire log(x)/log(2) est le résultat est le même.


3- Calculs avec les opérateurs binaires

Nous avons donc vu le and, et le &&, qui ne permettent que de faire des calculs entre deux bits.
Le & sert comme les autres opérateurs mathématiques a faire des calcules entre deux nombres.
Pour calculer nombre1 & nombre2 il faut convertir nombre1 et nombres1 en base 2. Ensuite on a plus qu'a comparer chaque bits des deux nombres entres eux.

Exemple :
549 & 320 = 10 0010 0101 & 01 0100 0000 (base 2)
Ensuite il suffit de calculer les bits des deux nombres entre eux selon les regles de and :

1 & 0 = 0
0 & 1 = 0
0 & 0 = 0
0 & 1 = 0
1 & 0 = 0
0 & 0 = 0
0 & 0 = 0
1 & 0 = 0
0 & 0 = 0
1 & 0 = 0

donc 549 & 320 = 0

Les opérateurs or et xor fonctionnent selon le même principe.
|| et or servent à calculer deux bits entre eux et | deux nombres.
^^ et xor de même deux bits et ^ deux nombres.

4- Regles binaires

Voici donc les regles pour les opérateurs &, | et ^
-and
1 & 1 = 1
1 & 0 = 0
0 & 0 = 0
-or
1 | 1 = 1
1 | 0 = 1
0 | 0 = 0
-xor
1 ^ 1 = 0
1 ^ 0 = 1
0 ^ 0 = 0

5- Opérateurs de décalage

Les opérateurs << et >> sont des opérateurs de décalage des bits
<< décale les bits à gauche, donc pour un nombre xxxx de base 2, alors xxxx<<3 = xxxx000
>> fonctionne de la même manière mais décale les bits a droite.
<< 1 reviens donc à multiplier par 2, et << 2 par 4, soit << x a multiplier par 2^x (avec ^ signifiant puissance).

Exemples :
125 << 2 = 1111101 << 2 = 111110100 = 500
92 >> 3 = 1011100 >> 3 = 1011 = 11


6- Opérateur de complément ~

L'opérateur ~ sert a inverser les bits d'un nombre. Il faut faire attention car selon le type de variables les valeurs ne sont pas les mêmes.
Pour un unsigned char (un entié tenant sur octet non signé), ~12 = 243 car
12 = 00001100 base 2 donc ~12 = 11110011 base 2 = 243
Sous Game Maker ~x seras égal à -x-1.


7- Le systeme héxadécimal

Le systeme héxadécimal est un systeme très interressant car il est très simple de faire passer un nombre de base 2 à base 16 (de héxa).
Le systeme héxadécimal étant un systeme de base 16 il utilise donc les premieres lettres de l'alphabet en complément des chiffres traditionnels :
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.

Pour convertir un nombre de base 2 codé sur un octet il sufit de le couper en deux paquets, puis calculer a quoi correspondent chaque paquet puis remplacer par les symboles correspondants.
Par exemple :
10011101 = 9D base 16 car
1001 = 9 base 10 donc 9 base 16 et
1101 = 13 base 10 soit D en héxa


8- Utilité de ces opérateurs

Ces opérateur sont d'une utilité incroyable lorsque l'on programme et surtout lorsque l'on commence à ce raprocher de la machine. Je vais montrer de nombreux exemples à travers lesquels vous verez toute la puissance des opérateur bitwise.

Exemple 1 : Les couleurs
Les couleurs sont la plupart du temps codés sur 24bits, avec un octet pour le rouge, un autre pour le vert et le dernier pour le bleu, soit 8bits pour chaque couleurs, c'est le format RGB (pour red green blue).
Une couleur est donc composée de rouge, de vert et de bleu avec chacune de ces couleurs primaires allant de 0 à 255.
En héxadécimal on a donc toutes les valeurs possibles du noir 000000 au blanc FFFFFF soit 16777216 couleurs possibles !
Sous GM le rouge est codé sur le premier octet a droite, le vert sur l'octet du milieu et le bleu l'octet a gauche.
Couleur : [Bleu][Vert][Rouge]

Donc pour créer une couleur avec du rouge, du vert et du bleu il faut remplir le premier octet a droite avec le rouge, le second avec le vert et le dernier avec le bleu.
Soit : couleur = (bleu<< 2 octets) + (vert << 1 octet) + (rouge << 0 octet)
ce qui donne : couleur = (bleu << 16) + (vert << 8 ) + rouge
Faire << 8 revient a multiplier par 256 mais les opérateurs binaire sont plus rapides donc il vaut mieux les utiliser, de plus c'est plus propre et plus compréhensible.

Maintenant si l'on veut récupérer la tonalité de bleu d'une couleur il va faloir tout simplement récupérer le premier octet de celle-ci.
Par exemple pour la couleur 94F388 la tonalité de bleu est 94.
Il suffit de décaler les bits a droite jusqu'a qu'il ne reste que l'octet qui nous interresse soit le premier en partant de la gauche. On a donc :
bleu = couleur >> 16

Pour récuperer le vert on va procéder de la même manière :
vert = couleur >> 8
Mais ensuite comment fait-on ? Il reste l'octet codant le vert mais aussi celui qui code le bleu : [bleu][vert], on a réussit a virer l'octet codant le rouge mais il faut aussi virer celui qui code le bleu.
C'est la qu'intervient l'opérateur &. En fait il va nous permettre de récupérer notre octet :
vert = (couleur >> 8 ) & FF
Explication (x est un bit) : comme 0 & x est toujours égal à 0, et que 1 & x est toujours égal à x, faire XXYY & FF signifie donc faire XXYY & 00FF or comme on l'a vu juste avant XX & 00 seras donc égal à 0 et FF (héxa) étant donc 11111111 (base 2), YY & FF seras donc égal à YY.

Donc pour récupérer le rouge :
Le rouge étant dans [XX][YY][ZZ] à la troisieme position, il suffit donc de faire [XX][YY][ZZ] & FF car on ne garderas que le premier octet de droite. On a donc :
rouge = couleur & FF


Exemple 2 : Modifier un octet bit a bit
Si [XX] est un octet, soit [abcdefgh] en base 2 avec abcdefgh des bits, comment récupérer un des bits ou même le modifier ?
En fait c'est très simple, et les seuls opérateurs dont on auras besoin vous l'avez compris c'est & , << et >>.

Récupérer c :
Pour récupérer c, il va falloir détruire tous les autres bits, on va donc utiliser & pour ça :
[abcdefgh] & [00100000] = [00c00000]
Maintenant pour isoler c il faut le décaller pour qu'il soit en premiere position a droite :
[00c00000]>>5 = c

Récupérer un bit en général :
pour récupérer un bit en général dans un nombre on utilise d'abord & puis on décale. La seule infos dont on à besoin c'est la position du bit dans le nombre (ici ^ signifie puissance).
Bit = ( nombre & 2^position ) >> position


Exemple 3 : xor et la cryptographie

^ est très interressant car il nous permet de crypter des bits avec d'autres bits.
Ce qu'il y a de très pratique avec ^, c'est cette propriétée :
a ^ b = c
c ^ b = a
De cette manière on peut faire :
Cryptage =>
[octet secret ] ^ [ octet clé ] = [ octet crypté ]
<= Décryptage
[ octet crypté ] ^ [ octet clé ] = [octet secret ]

A vous de faire un petit algo de cryptage pour vous entrainer .

Auteur du tutorial : onilink_
19/02/2010 par M@d_Doc
10 Commentaires

par Linky439 @ 19/02/2010 10:25 am
lol j'ai perdu le fil aux nombres en binaires x)
Trop compliqué pour moi qui vient quasiment de me lever x)
Mais bien sinon hap

par bibi675 @ 19/02/2010 10:45 am
Excellent tutoriel ! Bravo Onilink_ ! super

par Topaze22 @ 19/02/2010 06:35 pm
Wow, tuto de folie ! Je me demande comment vous faite pour vous motiver à sortir des cours magistraux comme ça !?
super

par SonicZeldaMario @ 19/02/2010 07:36 pm
gha non3 ouh ouh ouh ouh ouh ouh gha gha

par daminetreg @ 23/02/2010 09:42 am
Bon tutorial, c'est vrai que sans un tel tuto il est fort probable que beaucoup de débutant en programmation, notamment s'ils passent pas la case game maker, n'ait pas connaissances de l'utilité des opérateurs binaires.

Good job done! ^^ happy1

par Ordinateur @ 10/03/2010 03:14 am
ange 100110111001010000100110101

sinpa

par gabin49 @ 15/03/2010 11:48 pm
magnifique tuto, moi meme je ne savais pas ce qu'etait ces signes : ^, ^^,<<, >>
j'en ai appris dans ce tuto, meme si j'en aurai pas vraiment l'utilité, il est très bien détaillé

par Need @ 19/04/2010 08:22 pm
question

par red-error @ 29/05/2010 03:43 pm
J'avais lu, mais décroché, maintenant c'est un peu plus clair, bravo !

Presque compris. happy1

par Red-error @ 01/08/2010 01:41 pm
Encore relu, et cette fois-ci c'est la bonne. :D
Ca manque franchement de schémas pour visualiser en fait, ou de se munir d'une feuille ou de bloc-note pour s'accrocher.

Nom:
Mail: (optionel)
Êtes vous Humain? (Entrez oui si c'est le cas)

smile's:

fleche_dfleche_gbehgniihappy1questionrirerire2rougesupertristeangeclincoeurcoleredodofierghagniahhaphehehhontenonnon3ouhouisnif

| M'oublier

Actualités Générales

Deprecated: Function eregi() is deprecated in /home/clients/d3fc885f29675a204a95fb9f4bb0fc6d/web/Admin/show_news.php on line 16

Deprecated: Function eregi() is deprecated in /home/clients/d3fc885f29675a204a95fb9f4bb0fc6d/web/Admin/show_news.php on line 39

Deprecated: Function eregi() is deprecated in /home/clients/d3fc885f29675a204a95fb9f4bb0fc6d/web/Admin/inc/shows.inc.php on line 22

Deprecated: Function eregi() is deprecated in /home/clients/d3fc885f29675a204a95fb9f4bb0fc6d/web/Admin/inc/shows.inc.php on line 22

Deprecated: Function eregi() is deprecated in /home/clients/d3fc885f29675a204a95fb9f4bb0fc6d/web/Admin/inc/shows.inc.php on line 22

Deprecated: Function eregi() is deprecated in /home/clients/d3fc885f29675a204a95fb9f4bb0fc6d/web/Admin/inc/shows.inc.php on line 22

Deprecated: Function eregi() is deprecated in /home/clients/d3fc885f29675a204a95fb9f4bb0fc6d/web/Admin/inc/shows.inc.php on line 22

Deprecated: Function eregi() is deprecated in /home/clients/d3fc885f29675a204a95fb9f4bb0fc6d/web/Admin/inc/shows.inc.php on line 22

Deprecated: Function eregi() is deprecated in /home/clients/d3fc885f29675a204a95fb9f4bb0fc6d/web/Admin/inc/shows.inc.php on line 22

Deprecated: Function eregi() is deprecated in /home/clients/d3fc885f29675a204a95fb9f4bb0fc6d/web/Admin/inc/shows.inc.php on line 22

Deprecated: Function eregi() is deprecated in /home/clients/d3fc885f29675a204a95fb9f4bb0fc6d/web/Admin/inc/shows.inc.php on line 22

Deprecated: Function eregi() is deprecated in /home/clients/d3fc885f29675a204a95fb9f4bb0fc6d/web/Admin/inc/shows.inc.php on line 22

Deprecated: Function eregi() is deprecated in /home/clients/d3fc885f29675a204a95fb9f4bb0fc6d/web/Admin/inc/shows.inc.php on line 22
2016, l'année de sortie du nouveau CBNA
GP2X Wiz - La console portable du programmeur
Mark Overmars Glog: Mon Nouvel Ordinateur Vista
La programmation
Mark Overmars Glog: Mes jeux sur Atari
Key To Key
CBNA Pix'Art : Concours de Pixel Art!
A.I.M.E - Aide Informatique contre la Mucoviscidose des Enfants
LCEN
A quand le nouveau forum ?
Ablationage > Webcomic
20 Mars! Journée de la Francophonie!
Un demi-siècle de disque dur! L'anniversaire!
Grâce à un trombone il gagne une maison
Les Mac s'ouvrent à Windows!

Actualités GameMaker

Deprecated: Function eregi() is deprecated in /home/clients/d3fc885f29675a204a95fb9f4bb0fc6d/web/Admin/show_news.php on line 16

Deprecated: Function eregi() is deprecated in /home/clients/d3fc885f29675a204a95fb9f4bb0fc6d/web/Admin/show_news.php on line 39

Deprecated: Function eregi() is deprecated in /home/clients/d3fc885f29675a204a95fb9f4bb0fc6d/web/Admin/inc/shows.inc.php on line 22

Deprecated: Function eregi() is deprecated in /home/clients/d3fc885f29675a204a95fb9f4bb0fc6d/web/Admin/inc/shows.inc.php on line 22

Deprecated: Function eregi() is deprecated in /home/clients/d3fc885f29675a204a95fb9f4bb0fc6d/web/Admin/inc/shows.inc.php on line 22

Deprecated: Function eregi() is deprecated in /home/clients/d3fc885f29675a204a95fb9f4bb0fc6d/web/Admin/inc/shows.inc.php on line 22

Deprecated: Function eregi() is deprecated in /home/clients/d3fc885f29675a204a95fb9f4bb0fc6d/web/Admin/inc/shows.inc.php on line 22

Deprecated: Function eregi() is deprecated in /home/clients/d3fc885f29675a204a95fb9f4bb0fc6d/web/Admin/inc/shows.inc.php on line 22

Deprecated: Function eregi() is deprecated in /home/clients/d3fc885f29675a204a95fb9f4bb0fc6d/web/Admin/inc/shows.inc.php on line 22

Deprecated: Function eregi() is deprecated in /home/clients/d3fc885f29675a204a95fb9f4bb0fc6d/web/Admin/inc/shows.inc.php on line 22

Deprecated: Function eregi() is deprecated in /home/clients/d3fc885f29675a204a95fb9f4bb0fc6d/web/Admin/inc/shows.inc.php on line 22

Deprecated: Function eregi() is deprecated in /home/clients/d3fc885f29675a204a95fb9f4bb0fc6d/web/Admin/inc/shows.inc.php on line 22

Deprecated: Function eregi() is deprecated in /home/clients/d3fc885f29675a204a95fb9f4bb0fc6d/web/Admin/inc/shows.inc.php on line 22
GameMaker9PC compatible PSP ???
GameMaker8, dernière chance de l'upgrader gratuitement
Yoyogames engage un nouveau "chef technique"
Firefox 3.6 pas encore compatible avec Yoyogames
GM pour Mac... le travail a repri
Le moteur de physique de vos rêves
Compétition n°5 lancée sur Yoyogames
Résumé des dernières news du Blog de Yoyogames
Une compilation de 100 jeux réalisés en 2009
Yoyogames instant play pas encore compatible GM8
GameMaker 8 est sorti
Résumé des dernières news du Blog de Yoyogames
Traduction française d'ajout sur GM8 :
GM8 version "release candidate"
Beaucoup d'info sur GM7mac, GM8 et l'avenir
Version béta test de GameMaker 8.0 disponible
GameMaker 8.0, une bonne partie des nouveautés annoncées
Compétition N°7: Titres Spéciaux
5 Jeux de la Compétition N°7
Mise à jour de l'éditeur d'image de GameMakerV8 disponible
Date de Sortie de GameMaker 8
GameMakerV8 l'éditeur d'image disponible en téléchargement ici
Game Maker 4 Mac: Bêta recue
Traduction Française de la documentation d'Ultimate 3D
GameMaker version Mac version béta
La Compétition N°7 est lancée!
Mark Overmars Glog: Astuce: Support du PNG dans GM
Mark Overmars Glog:Game Design: Aligner Des X
Astuce pour Game Maker: Support de l'écriture Cyrillique
Enigma : 3ème release publique
Firefox 3 compatible avec le nouveau plug in Instant Play de Yoyogames
Mark Overmars Glog:une expérience sur l'animation
Prebeta de GMPhysiqueV5
Mark Overmars Glog:Etre Original
Premère sortie d'ENIGMA
Compétition N°6 : Les Prix et les lettres!!
Mark Overmars Glog: GDCSE'08 (Game Development in Computer Science Education)
Game Maker sur MAC
Mark Overmars Glog: Les Codes de triche
Mark Overmars Glog: Le losange du genre d'un jeu
Mark Overmars Glog: Un autre vieux jeu: Gobang
Mark Overmars Glog: Les Ressources pour Game Maker
Mark Overmars Glog: L'effet des récompenses (bonus) & Parlons un peu plus des récompenses
Mark Overmars Glog: Le Score
Le Blog de Mark Overmars
Interview des organisateurs de la Game Maker Exposition
GME: Game Maker Exposition
Interview de Bast et de Daminetreg
Game Maker 7.0 Disponible!
Les Prix de la Compétition N°5 sont arrivés!
Le GMC réouvert!
Le GMC cracké, GameMaker est triste...