JeuxOnLineForumsPlusConnectés : 738 (sites) | 1313 (forums)Créer un compte
Forum jeux-vidéo>Neverwinter Nights
Maskado
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > [tutorial] Les opérateurs binaires RSS
   
Répondre
Partager Outils Rechercher
Avatar de Jedaï
Jedaï
Alpha & Oméga
 
Avatar de Jedaï
 
A priori ceci devrait marcher, mais faut que je fasse des tests :
Code PHP:
//Attribue au bit de position nPosition du groupe sIntVarName la valeur bValue
//oTrgObj : Objet cible par les variables
void SetBinInfo(object oTrgObjstring sIntVarNameint nPositionint bValue TRUE)
{
    
int iNumber 0;
    for(; 
nPosition 32iNumber ++) nPosition 32;
    
    
string sStringName sIntVarName AdjustDecimal(IntToString(iNumber));
    
    
int nVar GetLocalInt(oTrgObjsStringName);
    
nVar bValue nVar pow(2nPosition 1) : nVar & (0xFFFFFFFF pow(2nPosition 1));
    
    
SetLocalInt(oTrgObjsStringNamenVar);
}


//Renvoie la valeur du bit de position nPosition du groupe sIntVarName
//oTrgObj : Objet cible par les variables
int GetBinInfo(object oTrgObjstring sIntVarNameint nPosition)
{
    
int iNumber 0;
    for(; 
nPosition 32iNumber ++) nPosition 32;
    
    
string sStringName sIntVarName AdjustDecimal(IntToString(iNumber));
    
    
int nVar GetLocalInt(oTrgObjsStringName);
    
    return 
pow(2nPosition 1) & nVar;

En tout cas ça prend moins de place que 32 local int qui ne valent que FALSE ou TRUE (0 ou 1), sérieux vous utilisez souvent d'autres valeurs vous ??
Lien direct vers le message - Vieux
Avatar de Jedaï
Jedaï
Alpha & Oméga
 
Avatar de Jedaï
 
Bon testé et approuvé, surtout ne pas utiliser les scripts au-dessus, ils sont piégés (boucle infinie ) :
Code PHP:
//Renvoie la valeur du bit de position nPosition du groupe sIntVarName
//oTrgObj : Objet cible par les variables
int GetBinInfo(object oTrgObjstring sIntVarNameint nPosition);

//prend un nombre et "normalise" sa longueur
string AdjustDecimal(int nNumberint nNumberOfDecimal 3);

//Attribue au bit de position nPosition du groupe sIntVarName la valeur bValue
//oTrgObj : Objet cible par les variables
void SetBinInfo(object oTrgObjstring sIntVarNameint nPositionint bValue TRUE);

string AdjustDecimal(int nNumberint nNumberOfDecimal 3)
{
    
string sNumber IntToString(nNumber);
    
int nL GetStringLength(sNumber);

    
nL nL nNumberOfDecimal;

    if (
nL<0)
        {
        
string sR "";
        for (; 
nNumberOfDecimal;nNumberOfDecimal--)
            
sR += "0";
        return 
sR;
        }

    for (; 
nLnL--)
        
sNumber "0" sNumber;

    return 
sNumber;
}

void SetBinInfo(object oTrgObjstring sIntVarNameint nPositionint bValue TRUE)
{
    
int iNumber 0;
    for(; 
nPosition 32iNumber ++) nPosition -= 32;

    
string sStringName sIntVarName AdjustDecimal(iNumber);

    
iNumber << nPosition 1;

    
int nVar GetLocalInt(oTrgObjsStringName);
    
nVar bValue nVar iNumber nVar & ~iNumber;

    
SetLocalInt(oTrgObjsStringNamenVar);
}


int GetBinInfo(object oTrgObjstring sIntVarNameint nPosition)
{
    
int iNumber 0;
    for(; 
nPosition 32iNumber ++) nPosition -= 32;

    
string sStringName sIntVarName AdjustDecimal(iNumber);

    
iNumber << nPosition 1;

    
int nVar GetLocalInt(oTrgObjsStringName);

    return 
iNumber nVar TRUE FALSE;

Si vous voulez mon avis, c'est une sacré bonne idée d'utiliser ces fonctions, ça économisera beaucoup de place pour les variables qui en ont vraiment besoin... Après tout, 70% des variables employées sont des booléennes. (90% des local int ).
Avec cette fonction, on peut stocker 32 fois plus de booléen sur la même variable et on peut aller jusqu'à la position 31968....
Lien direct vers le message - Vieux
Répondre
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > [tutorial] Les opérateurs binaires
   

Outils Rechercher
Rechercher:

Recherche avancée

Les vidéos de Neverwinter Nights RSS
  • Aucune vidéo pour le moment...
Thème visuel : Fuseau horaire GMT +1. Il est actuellement 17h34.
   

© JeuxOnLine, le site des MMO, MMORPG et MOBA. Tous droits réservés. - Conditions générales d'utilisation - Conditions d'utilisation des forums - Traitement des données personnelles - ! Signaler un contenu illicite