Forums Développement Multimédia

Aller au contenu

- - - - -

Projet Tuto Opérateur Binaires pratique

TUTO

88 réponses à ce sujet

#46 Goabonga

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 2724 messages

Posté 19 May 2011 - 16:39 PM

Plus haut tu dis que c'est utile dans les jeux ... Envoie le code d'un jeu ? (js as as3 ... pour moi c'est la meme chose ).

#47 dada

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 8510 messages

Posté 19 May 2011 - 16:50 PM

De mon côté, à part pour travailler sur les couleurs, je m'en suis servi pour gérer des droits utilisateur. C'est pratique :
1 bit = 1 droit
1 uint = 32 informations de droit
Ensuite une classe avec des méthodes du genre addRights(rights:uint), removeRights(rights:uint), hasRights(rights):Boolean et une énumération des droits disponibles dans l'appli.
J'avais fait cette petite classe générique, qui est ensuite utilisée par la gestion de droits pour les opérations binaires :
package {
        public class BinaryOperation {
                static public function setBits (pTargetBits:uint, pMask : uint, pValue : Boolean) : uint
                        var returnBits:uint = pTargetBits;
                       
                        if (pValue) {
                                // Passage à 1
                                returnBits |= pMask;
                        } else {
                                // Passage à 0
                                returnBits &= ~pMask;
                        }
                       
                        return returnBits;
                }
                static public function containsBits(pContainer:uint, pContainedBits : uint) : Boolean {
                        return (pContainer & pContainedBits) == pContainedBits;
                }
        }
}


#48 Goabonga

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 2724 messages

Posté 19 May 2011 - 17:07 PM

Sur les machine unix c'est basé dessus aussi :
rwx r-x r--
111 101 100
7 5 4

(Je cherche depuis deux jour un exemple simple d'utilisation, mais c'est pas facile de trouver, pourtant j'utilise les bits toute les 5minutes mais pas dans Flash directement, mais j'aimerais vraiment voire dans un jeu flash qu'elle peut être l'usage ? )

#49 dldler

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 4163 messages

Posté 19 May 2011 - 17:15 PM

Je m'en suis servi pour des tuiles il y a pas longtemps (mais je suis loin d'avoir terminé l'éditeur qui va avec).

Sur le principe :
var CENTRE:uint=16;
var DROITE:uint=8;
var BAS:uint=4;
var GAUCHE:uint=2;
var HAUT:uint=1;

var tiles:Array[]; // Contient les tuiles aux indices zero à 31

// Et quand je veux la tuile qui a de l'herbe en haut et au centre, je fais :

var tuile:Tuile=tuiles[HAUT|CENTRE];
 


#50 frangois

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 224 messages

Posté 19 May 2011 - 17:19 PM

Un bitfield (http://en.wikipedia.org/wiki/Bit_field) ça sert par exemple dans un jeu où un objet contient plusieurs Booleans, prenons un jeu où il y a plusieurs bonus possibles.


player.hasAmmoBonus = true;
player.hasSpeedBonus = true;
player.hasTimeBonus = true;
 

On remplace par :


player.setBonus(Player.AMMO_BONUS | Player.SPEED_BONUS | Player.TIME_BONUS);
 

Avec les constantes XXXXX_BONUS respectivement égales à 2^0, 2^1, 2^2, ... (donc 1, 2, 4, ...) et 2 méthodes setBonus(bonuses: uint) et hasBonus(bonus:uint):Boolean similaires au post de Dada juste au-dessus.

EDIT: Didler +1

Modifié par frangois, 19 May 2011 - 17:20 PM.

Je suis dispo en free-lance. Et j'ai un blog.

#51 dada

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 8510 messages

Posté 19 May 2011 - 17:21 PM

Voir le messagefrangois, le 19 May 2011 - 17:19 PM, dit :

respectivement égales à 2^0, 2^1, 2^2, ... (donc 1, 2, 4, ...)
J'avais oublié d'indiquer cette information importante ci-dessus. ^^

#52 hubeert

  • Members
  • PipPipPipPipPipPipPipPip
  • 925 messages

Posté 19 May 2011 - 22:30 PM

je ne sais pas si cela te sera d'un grand secours.; :shock:
je te mets le fla et le swf..
le but du jeu et de mener le grand carre de sa place actuelle a la place en haut a gauche une fois en place un message sera dévoilé.. ( cest pour un site d'enigme) mais voila un uilisation possible du binaire pour savoir ou sont mes clip et les place libres..

Fichier(s) joint(s)



#53 hubeert

  • Members
  • PipPipPipPipPipPipPipPip
  • 925 messages

Posté 22 May 2011 - 18:49 PM

coucou;
Comme me la conseillé lilive je lai mis en ligne dans les essais..
Si cela vous parle.. :roll:

tuto opérateurs binaire en pratique

j'ai pour le mieux tenu compte de vos remarques; fait attention a la ponctuation.
La deuxième partie ou la suite traitera d'exemple plus précis.
le but étant de se familiariser avec les opérateurs .
Chacun a son niveau en fera ce qu'il désire.
De le rendre moins ésotérique.
Mais aussi de factualiser leur usage (les rendre utile pour soi). ( comme la fait dada et Didier) et d'autre.
Bonne lecture et merci de vos retours

#54 thot

    Ceinture Noire

  • Moderateur
  • PipPipPipPipPipPipPip
  • 331 messages

Posté 23 May 2011 - 20:52 PM

J'ai une question est-ce que tu penses que ton tuto vient en complément de celui que j'ai écrit sur le même sujet (http://ressources.me...ateurs_binaires)? Si oui on peut peut-être vraiment distinguer le côté pratique du côté théorique ( pour ma part je n'ai pas détaillé le pratique ) ? Dans ces cas-là tu pourrais peut-être créer une espèce de gros sujet ou nos articles théoriques se complèteraient et ainsi te concentrer uniquement sur la pratique ? C'est une suggestion :)

#55 Nataly

    Community Jane

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 5783 messages

Posté 23 May 2011 - 22:03 PM

Hey ! Mais il est vachement bien ce tuto dossier Thoutmosis ! \o/

Non seulement il est riche et plus que complet, mais en plus c'est agréable comme tout à lire (mon côté suranné a adoré l'inversion du sujet sur disposé-je et mon esprit sarcastique s'est délecté de la règle d'or de l'optimisation)

Je me demande d'ailleurs si ce ne serait pas une bonne idée d'ajouter ce dossier à la page débuter sur la plate-forme, pcq c'est traité depuis le début justement - et très clairement - n'importe qui peut s'y jeter.
J'en aurais bien pris l'initiative, mais j'hésite sur le chapitre :roll: pour la blague je l'aurais bien mis au chapitre "tout ce qu'on ne vous a jamais dit… [… parce qu'il était évident que vous le saviez… ]", mais j'ai peur que ça perde en visibilité :?

Et du coup, oui, il me semble que ce serait une bonne idée, du coup Hubeert, de te concentrer sur la partie exercice, mise en œuvre, démo du principe. C'est la seule chinoiserie qu'on aurait pu chinoiser au dossier de Thoutmosis : le manque d'application pratique...

Elle est pas belle la vie ? :)
Le savoir est le seul bien qui s'accroit quand on le partage
une tartine de tutos

#56 hubeert

  • Members
  • PipPipPipPipPipPipPipPip
  • 925 messages

Posté 24 May 2011 - 09:13 AM

coucou;
Nos articles se complètent; s'entrecroisent et se recoupent..Le mien est loin d’être fini..
Après les explications sur les opérateurs ( ce que tu as fait aussi) viendront les applications. De même je n'ai pas du tout insisté sur l'optimisation; Mais c'est prévu et c'est induit aussi.
Il me semble clair que stocker 32 informations possibles dans une seule variable de type Number c'est le must de l'optimisation..De plus les opérations binaires sont très rapides parce que on parle avec l'ordinateur ( j'exagère)

en ce qui concerne mon approche ; Plutôt que d'aspect pratique je parlerai plutôt d'aspect détourné. :D .
J'ai surtout voulu dans mon exposé faire voir qu'on pouvait faire "autre chose" avec les opérateurs sur le bit. Si a la fin de la lecture (pour les courageux) vous n’êtes pas convaincu cest loupé.. :eusa_doh:
L'utilisation des opérateurs sur les bit est aussi vaste que ce que l'utilisateur décidera d'en faire..
Parce que c'est un façon commode de stocker des information;, de les trier de les manipuler et cela de manière optimum.
Ce n'est pas a moi de décider ce que deviendra le tuto; si ceux qui décident pensent qu'il peut etre utile le mettront dans la catégorie la plus appropriée ou même nulle part :D Mais en effet il trouverait une place tout a cote du tien..Alors ça ferait un gros sujet.
Pour ma part je vais rédiger des exemples pour éclairer mieux mon propos; cela est difficile pour moi car je n'ai plus codé depuis 3 ans et je ne connais pas AS3 mais je devrais y arriver.
Et merci de vos retours..

#57 Nataly

    Community Jane

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 5783 messages

Posté 26 May 2011 - 13:23 PM

[mode monomaniaque]

Voir le messageNataly, le 23 May 2011 - 22:03 PM, dit :

Je me demande d'ailleurs si ce ne serait pas une bonne idée d'ajouter ce dossier à la page débuter sur la plate-forme, […]

Hey !!! Liliiiiive !
T'en penses quoi ? ;)

[\mode]
Le savoir est le seul bien qui s'accroit quand on le partage
une tartine de tutos

#58 lilive

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 2993 messages

Posté 26 May 2011 - 14:17 PM

Je passe vite fait.

Je crois que ta page hubeert ne peut atteindre le public que tu annonces viser:

Citation

Prérequis: Il n y a rien a savoir de précis ce tutoriel est accessible à tout le monde la manipulation des opérateurs sur les bits est simple. Plus délicat est de déterminer les modèles sur lesquels on peut les utiliser.
L'avant propos est beaucoup trop rapide pour que quelqu'un qui ne connait pas le binaire puisse te suivre.

Il faut arriver à se relire en oubliant ce que l'on sait.
Exemple parmi d'autres: Tu commences en expliquant comment on visualise les nombres dans les 2 bases, mais justement, tu n'as pas dit ce que c'était ces fameuses bases.

En fait hubeert, puisque le tuto de thoutmosis existe, je crois qu'il faut que tu t'en tiennes le plus strictement possible à la pratique si tu veux arriver à quelque chose. Et encore, excuse-moi mais je dois te le dire, j'ai des doutes. Il me semble que tes explications sont par moment vraiment difficiles à suivre, si je me mets dans la peau de quelqu'un qui ne connait rien au sujet, ne serait-ce qu'au niveau de l'expression écrite. Cela va vite, il y a trop d'informations mélangées dans des phrases qui manquent de ponctuation, c'est difficilement lisible. C'est mon avis, et pas La Vérité, mais tu demandes des retours donc je te le donne, même si je vois bien que cela ne dois pas te faire trop plaisir. Désolé.

En tout cas, si tu continues, appuie-toi sur les pages de thoutmosis, et renvoies-y tes lecteurs.

De plus en plus, je pense qu'il faut un certain degrés de maitrise du sujet pour pouvoir écrire un tuto. D'ailleurs les profs c'est comme ça, dans l'éducation nationale on demande un niveau théorique bien supérieur au niveau auquel on enseigne (un bac + 3 pour enseigner au lycée, si je ne m'abuse).

Quand au tutoriel de thoutmosis, on en avait discuté tous les 2 à un moment. La page sur le binaire me semblait globalement pas mal du tout, et effectivement très agréable à lire, avec des faiblesses par-ci par-là, notamment sur le sujet des nombres à virgule. Thoutmosis en avait convenu d'ailleurs. Pour lui expliquer ce que je voyais, j'en étais venu à faire un document qui reprenait sa page en essayant d'améliorer les endroits que je trouvais améliorables. C'était un support pour discuter ensemble, mais finalement puisque thoutmosis n'a pas retouché sa page depuis, je le livre ici, à toutes fins utiles:

De mémoire, j'y reprends certaines parties de son tuto en développant (je ne me souviens plus à quoi correspondent les parties colorées en bleu).


Quand à mettre un lien vers le dossier de thoutmosis dans la section débutant je ne sais pas trop. Le dossier est incomplet. Peut-être mettre les pages sur le binaire et les opérateurs dans le chapitre "tout ce qu'on ne vous à jamait dit"? Je dirais plutôt là parce-que le binaire c'est pas vraiment un sujet pour débutants il me semble.

Fichier(s) joint(s)



#59 Nataly

    Community Jane

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 5783 messages

Posté 26 May 2011 - 14:31 PM

pour moi ce qui est pour débutant est ce qui ne nécessite pas de connaissance en amont.
On peut expliquer le binaire depuis zéro (ou un, ça dépend :mrgreen:)

pas tout le dossier donc, tu as raison, (comme d'hab et ça se paiera ;)), mais vraiment ce qu'est le binaire et ce que sont les opérateurs, ça m'a semblé niveau novice.

j'ai bien noté que l'explication des bases était un poil discutable, mais bon… :roll:

(vu que c'est wiki, il me prendra peut-être un de ces week-end d'aller y mettre ma patte de vieille chose)


A la fois, ce n'était qu'une proposition… qu'en pensent les autres ?
Le savoir est le seul bien qui s'accroit quand on le partage
une tartine de tutos

#60 dada

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 8510 messages

Posté 26 May 2011 - 14:39 PM

En même temps, est-ce au wiki Mediabox d'expliquer ce qu'est le binaire ? En charchant un peu, on peut trouver de très bon tutos sur le binaire sur d'autres sites non ?

Par contre, expliquer comment on peut utiliser les opérateurs pour faire des trucs sympas dans Flash, oui c'est ce qu'on devrait trouver dans le wiki. :)

Donc pourquoi pas mettre un lien vers un tuto externe en intro du tuto sur les opérateurs binaires ? Plutôt que de vouloir réinventer la roue (d'un truc si généraliste)...

#61 Nataly

    Community Jane

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 5783 messages

Posté 26 May 2011 - 14:43 PM

pas besoin de réinventer, dans la mesure où c'est fait ;)
Le savoir est le seul bien qui s'accroit quand on le partage
une tartine de tutos

#62 dldler

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 4163 messages

Posté 26 May 2011 - 14:54 PM

Et bien moi, je suis très dubitatif.

Peut-être que la section "Débuter" n'est pas très adaptée. Plutôt dans une section "de A à Z".

- 1 : ce qu'on peut faire avec du binaire, on peux le faire avec des if (plus lentement, plus laborieusement, en piquant plus de ressources, oui… mais on peut le faire)
- 2 : ce ne sont pas des notions de programmation en soit mais des notions de logique, complexe…
- 3 : j'imagine un débutant de chez débutant qui arrive sur la page "débuter", normalement il est au bon endroit. En toute confiance il ouvre "opérations binaires" parce qu'il trouve le nom joli… ça devrait quand même lui faire un choc, non ?

Donc, je pense que soit on recherche des infos sur le binaire, dans une démarche qui provient d'un besoin : "Je veux apprendre le binaire", soit on recherche à solutionner une problématique : "je veux trier des boules de couleur"… et on découvre que le binaire peut être une solution (très) efficace.

Mais pas "Par ou je commence pour faire une anim Flash ?" >> "Par apprendre le binaire, mon gars"

Je sais, je caricature, mais dans le fond… ?

#63 dada

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 8510 messages

Posté 26 May 2011 - 14:59 PM

Salut Didier,

Voir le messageDldler, le 26 May 2011 - 14:54 PM, dit :

- 1 : ce qu'on peut faire avec du binaire, on peux le faire avec des if (plus lentement, plus laborieusement, en piquant plus de ressources, oui… mais on peut le faire)
Comment tu fais pour extraire le canal rouge de la couleur 412387 avec des if ? :P

Sinon je suis assez d'accord avec le reste de tes remarques.

#64 dldler

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 4163 messages

Posté 26 May 2011 - 15:07 PM

Voir le messagedada, le 26 May 2011 - 14:39 PM, dit :

En même temps, est-ce au wiki Mediabox d'expliquer ce qu'est le binaire ? En charchant un peu, on peut trouver de très bon tutos sur le binaire sur d'autres sites non ?

[…]

Donc pourquoi pas mettre un lien vers un tuto externe en intro du tuto sur les opérateurs binaires ? Plutôt que de vouloir réinventer la roue (d'un truc si généraliste)...

Les 2 mon capitaine :)

Une explication très généraliste, ça peut correspondre a certains caractères. Quand je dis que c'est une histoire de logique plus que de programmation (en AS3), c'est ce que j'exprime.

Mais, pour d'autres, qui ont besoin de concret pour comprendre, il y a la place pour un tuto de découverte, si celui-ci donne des exemples, simples, concrets, en 2 ou trois lignes de code, avec lesquels on peut jouer, mettre les mains dans le cambouis.

Genre d'exemples :

Une couleur arvb, je la veux en négatif.
J'inverse tous les bits… oui mais… ça veut dire qu'une couleur totalement opaque devient totalement transparente…
Donc : j'inverse uniquement les 24 derniers bits, ça inverse la couleur tout en gardant la transparence.

Je veux tirer des couleurs au hazard, mais incluses entre 2 couleurs.
Je récupère la couleur qui sépare les 2 couleurs par un "&&". Je fais un tirage aléatoire. J'ajoute la couleur (? je crois qu'on peut, mais faudrait que je planche.Peut être déjà trop complexe)

#65 dldler

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 4163 messages

Posté 26 May 2011 - 15:21 PM

Bonjour dada :)

Voir le messagedada, le 26 May 2011 - 14:59 PM, dit :

Salut Didier,

Comment tu fais pour extraire le canal rouge de la couleur 412387 avec des if ? :P

Même pas besoin de if.
Je connais assez bien les couleurs et je les maîtrisait avant d'apprendre le binaire.
// Une couleur au hasard
var couleur:uint=Math.random()*0xffffff;

var r:uint =couleur/256/256;
var v:uint=couleur/256%256;
var b:uint=couleur%256;

trace(couleur.toString(16),r.toString(16),v.toString(16),b.toString(16));
 
Et je trace en hexa que pour faciliter la vérification. On peut s'en passer.

#66 hubeert

  • Members
  • PipPipPipPipPipPipPipPip
  • 925 messages

Posté 26 May 2011 - 22:43 PM

coucou,
franchement non il a rien de complexe. Faut pas se prendre la tête pour rien.;quelques opérateurs et savoir comment ils opèrent (!); ce qu'on peut en faire ne dépends que de celui qui a envie de les utiliser .. C'est juste le but du (tuto) . (on peut bien sur toujours faire autrement ).Le but c'est d' essayer de faire comprendre que dans un nombre.. on peut mettre 32 variables qui sont soit vraies ou fausses.Et les analyser avec les opérateurs sur le bit de manière rapide et utilisables concrètement.Et que cette façon de faire est optimisée.
alors çà peut être un profil utilisateur.. une grille ..des couleurs.Pour de l'intelligence artificielle.. faire un hitTest.. Un panneau informatif défilant.. ( eh oui ce ne sont que des diodes qui s'allument et s’éteignent) . un jeu de poker .. un tetris.un jeu de cascades. tout est plus simple avec les opérateurs binaire. :D
beaucoup de choses.

comme Penner je pense que c'est dans l’échange
positif qu'on apprend ; l'open source quoi échanger, comprendre , ajouter , critiquer positivement. pour moi c'est le sens d'un Wiki.

#67 hubeert

  • Members
  • PipPipPipPipPipPipPipPip
  • 925 messages

Posté 27 May 2011 - 08:28 AM

coucou;
pour faire un tirage aléatoire entre deux couleurs c'est très simple (attention je ne sais coder qu'en AS2 :lol: )
sachant que les couleurs sont representées sous forme de nombre séparés pour le rouge le vert et le bleu chacun valant 255 ou 0xff en hexa ou 11111111 en binaire.
On a vu dans le tuto comment decaler les bit..
Je veux donc agir sur le rouge l faut donc que j'agisse sur les bit qui sont le plus a gauche et ces bit la se trouve a partir de la position 16; comme les bit qui régissent le vert se situe a 8 position en partant de la droite les bit qui regissent le bleu se situe a partir de 0
donc si je veux faire un tirage aléatoire entre le vert et le bleu j'agis au hasard sur les bit qui régissent les vert et j'ote la meme valeur aux bit qui régissent le bleu
si il y a pas de vert ca sera tout bleu et si le vert est au maxi ca sera tout vert.
mais c'est peut être pas ca que tu voulais faire !!
Désolé jai pas le temps de le mettre en AS3

 
ecart=random(255)
   new Color (carre).setRGB((0<<255 | ecart<<8 | 255-ecart));


#68 dldler

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 4163 messages

Posté 27 May 2011 - 08:38 AM

Là, ta méthode marche pour trouver une couleur entre 2 canaux (si j'ai bien suivi).

Mais une couleur entre 0x32a3bb et 0xd847f1, ça peut peut-être se faire avec une suite d'opérations directement sur les couleurs ? :) Je vais creuser.

#69 dada

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 8510 messages

Posté 27 May 2011 - 09:01 AM

Voir le messageDldler, le 27 May 2011 - 08:38 AM, dit :

Mais une couleur entre 0x32a3bb et 0xd847f1, ça peut peut-être se faire avec une suite d'opérations directement sur les couleurs ? :) Je vais creuser.
Dans ce cas c'est plus simple de travailler en teinte et luminance plutôt qu'en RVB.

#70 Nataly

    Community Jane

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 5783 messages

Posté 27 May 2011 - 09:35 AM

scusez l'immiscion dans un débat très coloré auquel je ne participerai pas ;)

Juste pour revenir sur l'utilité/intérêt de joindre le "tuto binaire" aux pages démarrer.
Ok : pas bonne l'idée.

Et surtout pas le dossier dans son entier. Zavez bien raison, je me rends à vos arguments. En fait c'est la page opérateurs qui m'avait tout particulièrement séduite, ne serait-ce que parce que Thoutmosis prend le temps de définir les mots qu'il va employer des lors qu'ils sortent des champs du vocabulaire quotidien. Franchement, ça mange pas de pain de définir ce qu'est un opérande dans ce contexte ;)

N'en reste pas moins que cette page - que j'ai d'ailleurs un peu retouchée de la formulation, (wo trois fois rien : chassé une paire de répétitions, modifié un inapproprié… Thoutmosis, tu iras voir les révisions si quelque chose te disconvient, rétablis ;)) - présente l'intérêt de repréciser deux trois choses et d'éviter amalgame et confusions dues aux abus de langages les plus courants…
Mais bon, à la fois plus je la lis, plus je me sens atteinte du syndrome greumeuleu.

Oublions donc… jusqu'à la prochaine fois ;)

Merci d'avoir donné et argumenté votre point de vue :)
Le savoir est le seul bien qui s'accroit quand on le partage
une tartine de tutos

#71 Nataly

    Community Jane

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 5783 messages

Posté 27 May 2011 - 09:44 AM

NON ! je flood pas !

… j'identifie les thèmes ;)


Voir le messageDldler, le 26 May 2011 - 15:21 PM, dit :

Je connais assez bien les couleurs et je les maîtrisais avant d'apprendre le binaire.

Juste pour souffler, suggérer, proposer… Non même pas… enfin, bon, je veux dire que si un jour tu te réveilles (ou tu t'endors) en te disant "ah ! j'écrirais bien quelque chose pour me détendre et me faire plaisir, mais je n'ai pas vraiment d'idée…"

… la couleur peut être un bon thème … :roll: :arrow:
Le savoir est le seul bien qui s'accroit quand on le partage
une tartine de tutos

#72 hubeert

  • Members
  • PipPipPipPipPipPipPipPip
  • 925 messages

Posté 27 May 2011 - 10:12 AM

coucou
oui ca peut se faire. il faut decomposer tes couleurs comme je lai explique plus haut.
0x32a3bb couleur de depart donne .(a faire avec une calculette)
32=50 en décimal soit 50<<16 (le rouge)
a3=163 en décimal soit 163<<8 (le vert)
bb=187 en décimal 187 (lebleu)
soit( 50<<16 | 163<<8 | 187 )
0xd847f1 couleur d'arrivée donne.
216<<16 | 76<<8 | 241
il faut donc augmenter
le rouge de 50<< 16 a 216 << 16 soit de
baisser le vert
de 163 << 8 a 76 <<8
augmenter le bleu de 187 a 241.
soit de 166 pour le rouge baisser de 87 pour le vert et augmenter le bleu de 54
avec un clip nommé "carre" sur la scene de la couleur de depart;
La transition est un choix de ma part j'augmente ou diminue tout en même temps jusque au résultat escompté mais on pourrait agir autrement et cela ne donnerait pas les même transition ;

ecartRouge=ecartVert=ecartBleu=1;
   carre.onEnterFrame=function(){
        if( ecartRouge++ == 166) ecartRouge=166
        if( ecartVert++ == 87) ecartVert=87
        if( ecartBleu++ == 54) ecartBleu=54
   new Color (carre).setRGB(50+ecartRouge<<16 | 163 -ecartVert <<8 | 187+ ecartBleu);
   }

Fichier(s) joint(s)



#73 hubeert

  • Members
  • PipPipPipPipPipPipPipPip
  • 925 messages

Posté 29 May 2011 - 23:10 PM

coucou
suite et fin de la première partie.

Premiere partie
La suite.
la base de données

base de donnée

#74 hubeert

  • Members
  • PipPipPipPipPipPipPipPip
  • 925 messages

Posté 09 June 2011 - 22:57 PM

coucou;
ca avance.. :roll:

dans l'introduction a propros des opérateurs sur le bit. j'explique ce qu'est une base en arithmétique ( je ne suis pas convaincu que cela aide quiconque :lol: ) j'ai ajouté deux visuels pour le fun

Dans les opérateurs sur le bit et les bases de donnée je donne des exemples précis.Ce ne sont que des exemples on peut trouver d'autres applications pertinentes aux opérateurs sur les bits. Ce tutoriel n'est pas fini car je dois encore montrer l'utilisation des opérateurs du bit sur un QCM complexe.


après je passerai au jeux les applications sont innombrables.

C'etait juste pour faire état de l'avancement du projet. Tous vos retours sont les bienvenus quels qu'ils soient; j'en tiens compte parce qu’une critique étayée influence toujours le sens du débat.


au début le binaire ;-)


le binaire dans un formulaire; une base de donnée

#75 hubeert

  • Members
  • PipPipPipPipPipPipPipPip
  • 925 messages

Posté 04 July 2011 - 12:06 PM

coucou:

suite a un surcroit de travail je n'ai pas pu trop venir ici.. :oops:

j'ai ajouté quelques visuels pour rendre "la chose" plus comprensible.. :roll:

Ainsi qu'un quiz a choix simple avec le le fla et un fichier .as qui va avec. Simplement pour démonter qu'avec les opérateurs sur le bit le traitement du quiz est ultra rapide et compact.

J'ai bossé aussi sur comment faire des sorte de hitTest dans les jeux.
Et aussi sur un pathfinder en binaire ca semble prometteur mais ce n'est qu'une ébauche !!

voila merci de mavoir lu.
Je vous demande pardon par avance; je ne sais presque pas coder en AS3 :oops:

Fichier(s) joint(s)



#76 Nataly

    Community Jane

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 5783 messages

Posté 09 July 2011 - 19:43 PM

ben euhh… moi j'ai joué au quizz :)

et suis pas d'accord avec les réponses que tu prévois :D

bien sûr qu'on peut utiliser flash sans savoir coder (clopo clop, clopo clop, clopo clop - galop pénibe de mon vieux cheval de bataille :mrgreen: )
ah bon flash n'est pas un logiciel ?
ben euh si mediabox est aussi un centre de formation…

du coup je me demande si c'est exprès ou une bugouillerie :roll:
Le savoir est le seul bien qui s'accroit quand on le partage
une tartine de tutos

#77 hubeert

  • Members
  • PipPipPipPipPipPipPipPip
  • 925 messages

Posté 10 July 2011 - 09:32 AM

Voir le messageNataly, le 09 July 2011 - 19:43 PM, dit :



du coup je me demande si c'est exprès ou une bugouillerie :roll:
non c'est un bug !! :oops:

j'ai posté une mauvaise version !!

Merci :Hola: Nataly

du coup je reprends dans le wiki aussi.. .. je suis en plein dans les hitTest
mille excuse.;

le bon code
var texteQuestion:Array=[["Flash est un logiciel",
"flash est un logiciel de comptabilité ",
"Action script est la langue des Action-Man  ",
"action script en est a la version 3  ",
"On peut se servir de flash sans savoir coder  ",
"Mediabox est aussi un centre de formation flash  ",
"Flash appartient a Adobe  ",
"Il y a des logiciels équivalents a Flash  ",
249],
["flash appartenait a Macromedia",
        "flash ne sert qu'à la pub",
        "Le plug-in Flash est sur plus de 90% des ordinateurs",
        "Ce plug-in est payant",
        "Colin Moock est un représentant de lave-linge",
        "Robert Penner a inventé la poudre a couper le beurre",
        "Flash n'est utile que pour le web",
        "Flash ne s'affiche pas sur un iPhone",133]             ,
["MouseEvent est le nouveau nom de Mickey",
        "Dans flash un écouteur sert pour la musique",
        "Dans flash on peut importer un PSD",
        "Flash permet de faire des jeux facilement",
        "Colin Moock est un représentant de lave-linge",
        "Robert Penner a inventé la poudre a couper le beurre",
        "Flash n'est utile que pour le web",
        "Flash ne s'affiche pas sur un iPhone",140]     ]


var bouton:quiz;;
var rondVrai:rond;
var rondFaux:rond;
var vrai:Array=[];
var faux:Array=[];
var texte:Array=[]
var ligne1:Array=[]
var ligne2:Array=[]
var a:int;;
var b:int;;
var reponseCandidat:int;
var reponse:int
var reponsesJustes:int
var n:int=0
function miseEnPlace (n:int):void {
        reponse=texteQuestion[n][(texteQuestion[n].length-1)];
        alerte1.text=alerte2.text="";
        for (var i:int=0;  i<8; i++){
           texte[i].text=texteQuestion[n][i];
           vrai[i].alpha=0;
            faux[i].alpha=0;
        }}  
for (var i:int=0;  i<8; i++){
        bouton=new quiz();
        rondVrai=new rond()
        rondFaux= new rond()
        vrai[i]=(rondVrai)
        faux[i]=(rondFaux)
    bouton.x=400;
        rondVrai.x=415
        rondFaux.x=465;
        bouton.y=50 +(i*25);
        rondVrai.y=54 +(i*25)
        rondFaux.y=54 +(i*25)
        texte[i]=bouton.texte;
        bouton.texte.text=texteQuestion[0][i];


        addChild(bouton);
        addChild(rondFaux)
        addChild(rondVrai)
        }
       
       
valider.addEventListener( MouseEvent.CLICK,valide)
function valide(me:MouseEvent):void {
        ligne1=[];
        ligne2=[];
        a=0;
        b=0;
        alerte1.text="";
        alerte2.text=""
        reponseCandidat=0;
        for (var u:int=0;  u<8; u++){
       
                if(vrai[u].alpha && faux[u].alpha) {ligne1[a++]=u+1;alerte1.text= "ligne  "+ ligne1 +":  vous ne pouvez pas cocher 2 cases";}
                if( ! vrai[u].alpha && !faux[u].alpha) {ligne2[b++]=u+1; alerte2.text= "ligne  "+ ligne2 +"  :  vous devez cocher une case";}
                if(  vrai[u].alpha ){reponseCandidat |=1<<u }// on impute le résultat a reponseCandidat
                trace(reponseCandidat)
        }
        if(ligne1.length==0 && ligne2.length==0) {// s'il y a pas d'erreur on valide le formulaire
                a=0;
                b=0;
                ligne1=[];
            ligne2=[];
               
                reponsesJustes=reponseCandidat ^ reponse;// on compare les reponses du candidat a la grille idéale
               
        for(var k:int=0;k<8;k++) {
                if( (reponsesJustes & (1<<k)) >0) {ligne1[a++]=k+1;alerte1.text= "ligne  "+ ligne1 +":  réponses fausses"+ "  c'est a dire:  "+ a +"   réponses fausses";}
                if( (reponsesJustes & (1<<k)) == 0) {ligne2[b++]=k+1;alerte2.text= "ligne  "+ ligne2 +":  réponses justes"+"  c'est à dire:   "+ b+"/8  réponses bonnes";}
        }
        }
        }
questionnaire.addEventListener( MouseEvent.CLICK,nouvelleQuestion)

function nouvelleQuestion(me:MouseEvent):void {
        if( ++n > 2) {n=0;}
        miseEnPlace(n)
}
miseEnPlace(0)

Fichier(s) joint(s)



#78 hubeert

  • Members
  • PipPipPipPipPipPipPipPip
  • 925 messages

Posté 10 July 2011 - 15:31 PM

coucou a toutes et tous;

J'ai un peu avancé avec opérateurs sur le bit dans le domaine des jeux avec des sortes de "hitTest" avec une balle et des murs sur lesquels elle rebondi .


Critique et suggestion bienvenues.

Merci

le code pour ceux que ca interesse.

var colonne:uint=colonne=1<<30 | 1<<0 ;
var ligne:uint=colonne=1<<30 | 1<<0 ;

var a:int=27;// placé au point 27 car ma balle est placée a 3 place vers la droite sur les x
var a1:int=30// variable position pouyr les y
var b:int=1;
var b1:int=1
var t:int;
var t1:int;


var vitesse : int=carre.width/(31);

carre.bal0.addEventListener(Event.ENTER_FRAME,Avance);

function Avance(e:Event) {
      if ( ligne & 1<<t){b=-b;}// si le bit  est a true inverse le sens
      if(colonne & 1<< t1) {b1=-b1;}
      if(a % b !=0) return //il faut que b soit un sous multiple de a
      if(a1 % b1 !=0) return
      t=Math.abs(a+=b);
      t1=Math.abs(a1+=b1);
      e.target.x -=vitesse*b;
      e.target.y+= vitesse*b1
 }
                       


opérateur sur le bit et "hitTest"

Fichier(s) joint(s)



#79 hubeert

  • Members
  • PipPipPipPipPipPipPipPip
  • 925 messages

Posté 02 October 2011 - 17:08 PM

coucou a toutes et tous !!
Ca avance pas vite mais j'oublie pas ceux que ca interesse.. :D
J'ai fini la partie sur les test de collision avec des obstacles.
Puis ca sera les test de collision avec des objet en mouvement;


test de collision avec les operateurs sur le bit

Fichier(s) joint(s)


Modifié par hubeert, 02 October 2011 - 17:11 PM.


#80 kamtron

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 156 messages

Posté 03 October 2011 - 00:04 AM

très intéressant tout ça, faudra que je m'y mette un jour :smile:
ça fait quelques temps que j'ai cette page sous la main:
http://lab.polygonal...t-integer-math/

la signification de sa fonction Math.abs() m'a toujours échapper !

i = (x ^ (x >> 31)) - (x >> 31);


#81 Billyben

    KlouChiPonshoñistäs

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 2597 messages

Posté 03 October 2011 - 07:17 AM

Voir le messagekamtron, le 03 October 2011 - 00:04 AM, dit :

Salut, intéressant ce lien! des gains de 600% sur un modulo, ça peux servir!

#82 Nataly

    Community Jane

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 5783 messages

Posté 03 October 2011 - 10:09 AM

Yo ! Trop bien ce lien !

:Hola:
Le savoir est le seul bien qui s'accroit quand on le partage
une tartine de tutos

#83 hubeert

  • Members
  • PipPipPipPipPipPipPipPip
  • 925 messages

Posté 03 October 2011 - 12:57 PM

coucou;
Merci de l'interet porté au operateurs sur les bit..
Quasiment toutes les opérations que l'on puisse résoudre avec les opérateur sur le bit sont infiniment plus rapide. :D

Pour le Math.abs()
admettons que maVariable=-2

en faisant maVariable >> 31 il décale de 31 bit maVariable vers la droite.. Si le nombre est negatif le résultat de cette opération sera -1 ; (le bit 31 est la et il represente un nombre négatif)
si le nombre est positif le résultat est 0
ca vient d la convention sur la représentation des nombres negatif en binaire..

i = (x ^ (x >> 31)) - (x >> 31);

ensuite si le nombre est positif il fait une operation qui sert a rien lorsque le nombre est positif; mais comme il ne le sait pas..

il fait x ^ 0 qui sert a rien puis il rajoute zero ca ne sera a rien non plus mais on sait pas au depart si le nombre est positif ou negatif

si le nombre est negatif

en fait il va faire ca x ^ (-1)
la representation de -1 en binaire cest 64 1 cote a cote l'operateur sur les bit

Image IPB
XOR vas comparer tous les bit 1 a 1

Partout ou il y a des 1 dans les deux opérandes il va mettre a zero
comme -1 en binaire est composé que de 1
moins 1 en binaire cest :
1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111
moins deux c'est :
1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1110


1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111
^
1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1110
--------------------------------------------------------------------------------------
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0001 et la

on enleve le 1 qu'on avait ajouter au masque dans l'operation de complement a deux..(pour represente les nombre negatif en binaire)

et donc 1 -(- 1) egale bien deux.. :lol:

mais je sais ps si j'ai ete clair .. :lol:
n'empeche que c'est tres malin ..




Lol cest vrai que le lien est très bien; si ca peut aider a valoriser les opérateurs sur les bit !!!

#84 hubeert

  • Members
  • PipPipPipPipPipPipPipPip
  • 925 messages

Posté 04 October 2011 - 09:07 AM

coucou;
Attention au lien certaine de ses formules sont erronées nottament celle sur le modulo..

exemple :

trace(20 % 7)
trace(20 & (7-1))


#85 hu9o

  • Members
  • PipPipPipPipPipPipPipPip
  • 653 messages

Posté 06 October 2011 - 11:12 AM

Salut à tous.

hubeert:

Citation

Fast modulo operation using bitwise AND
If the divisor is a power of 2, the modulo (%) operation can be done with:
modulus = numerator & (divisor - 1);

Car 2^n - 1 donne une suite de '1' en binaire, et ça garde seulement la partie inférieure à 2^n.

Ce serait trop beau de gagner 600% sur tous les modulo...

D'ailleurs, ça m'étonne un peu que Flash ne recoure pas automatiquement à certaines de ces astuces (je pense notamment à la multiplication par une puiss. de 2).

#86 hubeert

  • Members
  • PipPipPipPipPipPipPipPip
  • 925 messages

Posté 06 October 2011 - 21:46 PM

coucou;

Oui mais vu enthousiasme général; il vaut mieux parler de formule erronée car elle ne marche pas souvent et seulement dans des cas précis;(je ne suis pas sur que tout le monde ait vu que ce n'était que dans le cas ou le diviseur était une puissance de 2(j'en fais parti lol)) en plus un gain de fois 6 c'est pas non plus aussi marquant que 600% plus vite !!
dans le même ordre d'idée


Math.pow(16,2)

//est 10 fois plus lent que
 16<<4 // pour élever un nombre  qui est une puissance de 2 , au carre,  en binaire il suffit de décaler a gauche  celui ci ,  d'autant de place que la hauteur de son rang ; ici 4


 

c'est un gain de 1000%(sur mon ordi) mais bon on a pas que des puissance de 2 a élever au carre ou au cube (il suffit de multiplier la hauteur du rang en conséquence);ni des modulo de puissance 2

:D

#87 hu9o

  • Members
  • PipPipPipPipPipPipPipPip
  • 653 messages

Posté 06 October 2011 - 23:57 PM

Voir le messagehubeert, le 06 October 2011 - 21:46 PM, dit :

il vaut mieux parler de formule erronée car elle ne marche pas souvent et seulement dans des cas précis;
Non, tu ne peux pas dire que la formule est erronée parce qu'elle ne marche pas avec ce que tu veux!
L'article dit simplement - et explicitement - qu'elle sert à faire un modulo par une puissance de 2 en AS3, ce qui est vrai dans l'absolu.
Enfin, à moi, ça me semble incontestable (avec ce genre d'arguments en tout cas).


Voir le messagehubeert, le 06 October 2011 - 21:46 PM, dit :

un gain de fois 6 c'est pas non plus aussi marquant que 600% plus vite !!
Pas compris...


Voir le messagehubeert, le 06 October 2011 - 21:46 PM, dit :



Math.pow(16,2)

//est 10 fois plus lent que
 16<<4 // pour élever un nombre  qui est une puissance de 2 , au carre,  en binaire il suffit de décaler a gauche  celui ci ,  d'autant de place que la hauteur de son rang ; ici 4


 

c'est un gain de 1000%(sur mon ordi) mais bon on a pas que des puissance de 2 a élever au carre ou au cube (il suffit de multiplier la hauteur du rang en conséquence);ni des modulo de puissance 2
:D
Ton code effectue une multiplication, pas une puissance...
Bien sûr, si tu écris directement 256, ça ira encore plus vite!

Modifié par HugoTR, 06 October 2011 - 23:58 PM.


#88 hubeert

  • Members
  • PipPipPipPipPipPipPipPip
  • 925 messages

Posté 07 October 2011 - 08:51 AM

coucou;
Non la formule n'est pas erronée.. :D elle ne marche que dans certains cas.. :Hola:

Mais c'est d' un intérêt nettement amoindri !! :D

Je disais que parler de gain de 600% c’était valoriser sa découverte artificiellement. Il aurait ecrit ca va 6 fois plus vite c'etait moins vendeur !! :lol: (mais c'est pour rire)

Une mise au carre au cube ou plus n'est rien d'autre qu'une multiplication particulière



ma maniere d'élever au carre ou au cube ou plus pour une puissance de 2 va plus vite jusque a 10 fois plus vite que Math.pow() (1000% :roll: )
par contre elle ne peut pas servir a grand chose parceque elle n'est juste que pour les puissance de deux et d'autres part il est pas évident de savoir que 16 est la valeur numérique du bit 4

(La valeur numérique du bit est égal a la base élevée a la puissance de son rang (poids du bit)).

on peut ecrire aussi ainsi trace( 1<<4<<4) mais la encore pas evident de savoir que 4 est le rang de la valeur recherchée ici 16.
Mais bon ca n'a pas grande importance . :Hola:

#89 hubeert

  • Members
  • PipPipPipPipPipPipPipPip
  • 925 messages

Posté 20 November 2012 - 13:00 PM

coucou;

Une ébauche de tuto pour crypter avec l’opérateur sur les bit XOR..Si ca intéresse quelqu'un je développerai.

http://forums.mediab...essais/binaire4

je n'arrive pas a mettre le swf dans le tuto afin qu'il soit de taille adéquate je le mets donc ici..

Fichier(s) joint(s)





1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)