

#46
Posté 19 May 2011 - 16:39 PM
#47
Posté 19 May 2011 - 16:50 PM
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 :
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
Posté 19 May 2011 - 17:07 PM
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
Posté 19 May 2011 - 17:15 PM
Sur le principe :
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
Posté 19 May 2011 - 17:19 PM
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.
#52
Posté 19 May 2011 - 22:30 PM

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
Posté 22 May 2011 - 18:49 PM
Comme me la conseillé lilive je lai mis en ligne dans les essais..
Si cela vous parle..

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
Posté 23 May 2011 - 20:52 PM

#55
Posté 23 May 2011 - 22:03 PM
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


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 ?

une tartine de tutos
#56
Posté 24 May 2011 - 09:13 AM
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é.

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é..

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

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
Posté 26 May 2011 - 13:23 PM
Nataly, le 23 May 2011 - 22:03 PM, dit :
Hey !!! Liliiiiive !
T'en penses quoi ?

[\mode]
une tartine de tutos
#58
Posté 26 May 2011 - 14:17 PM
Je crois que ta page hubeert ne peut atteindre le public que tu annonces viser:
Citation
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
Posté 26 May 2011 - 14:31 PM
On peut expliquer le binaire depuis zéro (ou un, ça dépend

pas tout le dossier donc, tu as raison, (comme d'hab et ça se paiera

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

(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 ?
une tartine de tutos
#60
Posté 26 May 2011 - 14:39 PM
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
Posté 26 May 2011 - 14:43 PM

une tartine de tutos
#62
Posté 26 May 2011 - 14:54 PM
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
Posté 26 May 2011 - 14:59 PM
Dldler, le 26 May 2011 - 14:54 PM, dit :

Sinon je suis assez d'accord avec le reste de tes remarques.
#64
Posté 26 May 2011 - 15:07 PM
dada, le 26 May 2011 - 14:39 PM, dit :
[…]
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
Posté 26 May 2011 - 15:21 PM

dada, le 26 May 2011 - 14:59 PM, dit :
Comment tu fais pour extraire le canal rouge de la couleur 412387 avec des if ?

Même pas besoin de if.
Je connais assez bien les couleurs et je les maîtrisait avant d'apprendre le binaire.
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));
#66
Posté 26 May 2011 - 22:43 PM
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.

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
Posté 27 May 2011 - 08:28 AM
pour faire un tirage aléatoire entre deux couleurs c'est très simple (attention je ne sais coder qu'en AS2

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
Posté 27 May 2011 - 08:38 AM
Mais une couleur entre • 0x32a3bb et • 0xd847f1, ça peut peut-être se faire avec une suite d'opérations directement sur les couleurs ?

#69
Posté 27 May 2011 - 09:01 AM
Dldler, le 27 May 2011 - 08:38 AM, dit :

#70
Posté 27 May 2011 - 09:35 AM

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

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

une tartine de tutos
#71
Posté 27 May 2011 - 09:44 AM
… j'identifie les thèmes

Dldler, le 26 May 2011 - 15:21 PM, dit :
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 …


une tartine de tutos
#72
Posté 27 May 2011 - 10:12 AM
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
Posté 29 May 2011 - 23:10 PM
suite et fin de la première partie.
Premiere partie
La suite.
la base de données
base de donnée
#74
Posté 09 June 2011 - 22:57 PM
ca avance..

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

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
Posté 04 July 2011 - 12:06 PM
suite a un surcroit de travail je n'ai pas pu trop venir ici..

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

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

Fichier(s) joint(s)
#76
Posté 09 July 2011 - 19:43 PM

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

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

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

une tartine de tutos
#77
Posté 10 July 2011 - 09:32 AM
Nataly, le 09 July 2011 - 19:43 PM, dit :
du coup je me demande si c'est exprès ou une bugouillerie


j'ai posté une mauvaise version !!
Merci

du coup je reprends dans le wiki aussi.. .. je suis en plein dans les hitTest
mille excuse.;
le bon code
"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
Posté 10 July 2011 - 15:31 PM
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 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
Posté 02 October 2011 - 17:08 PM
Ca avance pas vite mais j'oublie pas ceux que ca interesse..

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
Posté 03 October 2011 - 00:04 AM

ç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 !
#81
#82
Posté 03 October 2011 - 10:09 AM

une tartine de tutos
#83
Posté 03 October 2011 - 12:57 PM
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.

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

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..

mais je sais ps si j'ai ete clair ..

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
Posté 04 October 2011 - 09:07 AM
Attention au lien certaine de ses formules sont erronées nottament celle sur le modulo..
exemple :
trace(20 & (7-1))
#85
Posté 06 October 2011 - 11:12 AM
hubeert:
Citation
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
Posté 06 October 2011 - 21:46 PM
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

#87
Posté 06 October 2011 - 23:57 PM
hubeert, le 06 October 2011 - 21:46 PM, dit :
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).
hubeert, le 06 October 2011 - 21:46 PM, dit :
hubeert, 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

Bien sûr, si tu écris directement 256, ça ira encore plus vite!
Modifié par HugoTR, 06 October 2011 - 23:58 PM.
#88
Posté 07 October 2011 - 08:51 AM
Non la formule n'est pas erronée..


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

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 !!

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%

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 .

#89
Posté 20 November 2012 - 13:00 PM
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)