Bonjour !
Toujours sur le projet de version numérique de jeu de plateau.
J'ai plusieurs cases qui ont des statuts différents : elles peuvent être accessibles / inaccessibles ; occupées avec un ou plusieurs pions chacun de couleur différente.
J'aimerai stocker le statut de chaque case sous forme d'octet, pour ensuite prendre des décisions par rapport à la valeur d'un bit en particulier, tout en la modifiant en fonction de l'évolution du jeu..
Pour l'instant la seule piste est de stocker un entier (genre : 1, 2, 4 ou 1, 10, 100) et ensuite comparer cette valeur à une valeur référence, mais je pense qu'utiliser un octet et des méthodes de comparaison de bit plus efficace. Vous savez si c'est possible ? Ou bien je continue avec mes entiers ?
Merci !
Variable de type octet et comparaison par bit
Re: Variable de type octet et comparaison par bit
Yop,
Si tu n'as jamais fait de bitwise, je te conseil de garder tes entiers ( à moins que tu veuilles absolument tester )
Les machines sont assez puissantes pour ne pas à avoir à aller si loin dans l'optimisation.
Sinon en gros tu peux comme en C ou C++ utiliser les opérateurs:
en gros par exemple:
en faite, c'est toujours mieux pour la machine elle comprendras mieux et plus rapide, mais les compilateurs sont Top et normalement il optimise déjà certains points de ton code pour la machines
Moi perso quand j'ai des états, des groupes... j’utilise des Enum plutôt sinon.
genre:
Voila en gros, j'espère avoir répondu à ta question sinon n'hésite pas
cordialement
Si tu n'as jamais fait de bitwise, je te conseil de garder tes entiers ( à moins que tu veuilles absolument tester )
Les machines sont assez puissantes pour ne pas à avoir à aller si loin dans l'optimisation.
Sinon en gros tu peux comme en C ou C++ utiliser les opérateurs:
Code : Tout sélectionner
& = AND
| = OR
^ = XOR
<<X = déplacement de X vers la gauche
>>X = idem mais vers la droite
...
Code : Tout sélectionner
1&3 = 1
1<<1 = 2
1|3 = 3
Moi perso quand j'ai des états, des groupes... j’utilise des Enum plutôt sinon.
genre:
Code : Tout sélectionner
public enum objectType
{
food = 0,
drink,
moral,
material,
health
}
cordialement
Re: Variable de type octet et comparaison par bit
Merci pour la réponse !
Je ne connais pas bien les bitwise, et je resterai pour l'instant sur les entiers (je m'en sors pas trop mal).
Je n'ai pas encore essayé les enum, il faudra que je penche dessus
Je ne connais pas bien les bitwise, et je resterai pour l'instant sur les entiers (je m'en sors pas trop mal).
Je n'ai pas encore essayé les enum, il faudra que je penche dessus
Re: Variable de type octet et comparaison par bit
Pour faire ce que tu veux de maniére propre tu a un atribute [Flags] à mettre sur un enum: http://www.dotnetperls.com/enum-flags
Code : Tout sélectionner
using System;
[Flags]
enum State
{
Empty = 0,
A = 1,
B = 2,
C = 4,
D = 8
}
void function()
{
State s;
s = State.C | State.D // initialise avec C plus D
s |= State.A; // ajoute A
s |= State.B; // ajoute B
s &= ~State.A; // retire A
if (s.HasFlag(State.B)) { }// test si B est présent
}
____________________________________________
Hop Boy
Hop Boy
Re: Variable de type octet et comparaison par bit
C'est carrément astucieux ! Merci