Worldedit
  Worldedit
Le site sur l'éditeur de warcraft 3 !
 
  FAQFAQ   RechercherRechercher   Liste des MembresListe des Membres    Groupes d'utilisateursGroupes d'utilisateurs   medals.php?sid=75cc8a8144660262a2ef10fbb8c37dbfMédailles   S'enregistrerS'enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 
  FAQFAQ World Editor   UploadUploader une map ou une image    UploadAjouter sa map à l'annuaire   UploadConsulter l'annuaire

Ecriture d'entiers
Aller à la page 1, 2  Suivante
 
Poster un nouveau sujet   Répondre au sujet    Worldedit Index du Forum -> Aide sur les déclencheurs
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
 Ayane
Bot administrateur


Inscrit le: 17 Sep 2007
Messages: 2009
Sujets: 49

Médailles: 2 (En savoir plus...)
Rédacteur de tuto #1 (Quantité : 1) Ayane (Quantité : 1)

MessagePosté le: 14/11/07 17:26    Sujet du message: Ecriture d'entiers Citer

Suite à une demande de TrollBrain j'écris ce sujet qui traîte des différentes écritures d'entiers en Jass.


Les bases

Retour aux bases
Pour cela on va déjà revenir à ce qui était autrefois au programme de primaire: On peut écrire un nombre arabe différemment suivant la base choisie.
Par défaut on écrit les nombres en base 10, ce qu'on nomme la base décimale. Qu'est-ce qu'une base? c'est tout simplement le nombres d'occurence à partir de laquelle on décide de remettre le compteur à zéro et d'incrémenter le chiffre de poids plus fort. C'est ce qu'on appelle en base 10 former une dizaine, exemple:
00
01
02
03
04
05
06
07
08
09 <= 10° chiffre
10 <= 11° chiffre, on remet à 0 le chiffre de poid 0 (le chiffre le plus à droite du nombre) et on incrémente le chiffre de poid 1.
11
12
...

On peut donc compter en d'autres bases:
base 2:
0
1
10
11
100
101
110
111
1000
...
On appelle la base 2, la base binaire.

base 8:
0
1
2
3
4
5
6
7
10
11
...
On appelle la base 8, la base octale.

base 16:
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
10
11
...
On appelle la base 16, la base hexadécimale.

Les chiffres n'étant que des symboles, au dessus de 9 on considère les lettres de l'alphabet.

Par exemple on pourrait considérer les numéros de plaques d'immatriculations des voitures françaises comme un nombre, auquel cas ce serait un nombre de base 36 (10 chiffres + 26 lettres).


A quoi cela sert?
Dans la vie de tous les jours à rien, on l'apprenait en primaire afin de comprendre les nombres.
En informatique on a été amené de par l'électronique à considérer deux états qui se résument en: courant / pas courant (ou tension / pas tension).
Pour effectuer des opérations avec des états on s'est tout simplement référer au travail d'un mathématicien du XVI° siècle appelé Boole qui consiste justement à faire des opérations sur des valeurs limitées à deux états, en mathématique on écrit donc ces états 0 et 1, autrement appelé faux / vrai, arrêt / marche, ...
En utilisant ainsi un ensemble d'états on obtient tout simplement un nombre de base 2. Comme vous pouvez vous en douter écrire ou lire des nombres en binaire peut être assez long, hors il est très facile de passer de la base 2 à une autre base de multiple de 2: 4, 8, 16, 32 ... C'est ainsi qu'en informatique on utilise beaucoup l'hexadécimale, le binaire, le décimale et dans une moindre mesure l'octale.


Conversion entre bases
Il existe différends moyens de conversions entre ces bases, je vais vous faire part de deux méthodes qui fonctionnent tout le temps et qui les deux réunient voud permet de convertir de n'importe quelle base en une autre.

Le premier consiste de passer de la base 10 à n'importe qu'elle autre base, elle est basée sur la division euclidienne:
On divise notre nombre de base 10 par la base en laquelle on veut le convertir, puis on refait la même chose sur le quotient jusqu'à ce qu'on arrive à 0.
Exemple: On veut convertir 6 (base 10) en base 2
6 div 2 = 3 reste 0
3 div 2 = 1 reste 1
1 div 2 = 0 reste 1
Le quotient est à 0, on assemble tous les restes dans l'ordre inverse et on obtient 110 (base 2) qui égale à 6 en base 10.
La deuxième consiste à passer de n'importe quelle base à la base 10:
On multiplie chaque chiffre du nombre par la base du nombre élevé à la puissance du poids:
n10 = Σ( chiffre[i] * base ^ poids )

Exemple: On veut convertir 110 (base 2) en base 10
0*2^0 + 1*2^1 + 1*2^2 = 0 + 2 + 4 = 6


Evidemment vous avez des outils qui le font, comme la calculatrice de Windows avec l'affichage en mode Scientifique:
Vous sélectionnez Déc (Décimale) et vous entrez 6, puis vous sélectionnez Bin (Binaire), il vous affichera 110.


Les caractères
Un caractère n'est autre qu'un symbole, qui par extention est une image. Comme l'informatique est un système numérique, on attribue donc un numéro à chaque caractère. On appelle une règle de numérotation tout simplement une table de caractères, on appel un ensemble d'images représentants des caractères une fonte ou une police d'écriture (ce n'est sémantiquement pas vraiment la même chose).
Les tables de caractères les plus connus sont:
ASCII: un caractère est codé sur un octet (un octet = 8 bits: un nombre binaire à 8 chiffres), autrement dit on a 2^8 = 256 caractères possibles.
Unicode: reprend la table ASCII sauf qu'un caractère est codé sur deux octets, soit 2^16 = 65536 caractères possibles
UTF-8: Reprend la table ASCII sauf qu'elle permet de spécifier des caractères spéciaux sur plusieurs caractères.

ASCII est l'une des plus utilisé pour sa simplicité mais est très limité par les caractères, notamment pour ceux qui utilisent des alphabets non-Romains.
Unicode est pratiquement aussi simple que ASCII et résoud le problème de la limitation des caractères mais utilise deux fois plus d'espace disque.
UTF-8 résoud le problème du nombre de caractères, est complétement compatible ASCII, et n'augmente que de quelques octets la taille des fichiers, mais demande un peu plus de calculs pour analyse.
Actuellement les système sont fortement en train de migrer de ASCII à UTF-8.

WarCraftIII utilise l'ASCII.

Vous pouvez voir la table des caractères sur Windows en exécutant (touches [Window] + [R]) "charmap", ou alors dans les programmes > Accessoires > Outils systèmes.
Cliquez sur un caractère afin de voir en bas à gauche le numéro du caractère.


Les différentes écritures d'entiers en Jass

Décimale
Vous devez tous la connaître.
Jass:
local integer a = 12

Un entier étant codé sur WC3 sur 4 octets et étant signé, il est limité sur L'intervalle [-2147483648 ; 2147483647]

Hexadécimale
Elle consiste à ajouter comme en c le préfixe '0x'
Jass:
local integer a = 0xC

ou
Jass:
local integer a = $C

L'intervalle étant [-0x80000000 ; 0x7FFFFFFF]

Octale
Elle consiste à ajouter comme en c le préfixe '0'
Jass:
local integer a = 014

Cela peut-être source d'erreurs, ne mettez un zéro devant un nombre que si vous voulez spécifiquement indiqué un octale.
L'intervalle étant [-017777777778;017777777777]

Litéral
Cela consiste en l'écriture de caractères afin de former un acronyme
Jass:
local integer a = 'Amov'

Le nombre de caractères maximales est de 4 étant donné que cela convertit chaque caractère en sa valeur ASCII.
exemple pour 'Amov':
A = 0x41
m = 0x6D
o = 0x6F
v = 0x76
Ce qui donne le nombre 0x416D6F76 = 1097690998
Contrairement à ce que l'on peut lire sur jass.sourceforge.net ou autre on peut mettre moins de quatre caractères et on peut mettre des caractères autres que des lettres.
Jass:
local integer a = 'a'   //  a = 0x61 = 97
local integer a = '00'   //  a = 0x3030 = 12336
local integer a = ':;<='   //  a = 0x3A3B3C3D = 976960573

_________________


Dernière édition par Ayane le 25/04/09 20:54; édité 1 fois
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 Valerian
Membre reconnu


Inscrit le: 26 Aoû 2007
Messages: 1005
Sujets: 59
Spécialité en worldedit: Dormir... heu non décors


MessagePosté le: 14/11/07 17:31    Sujet du message: Citer

Confused J'ai rien compris, sinon c'est pas la mauvese section?
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Ayane
Bot administrateur


Inscrit le: 17 Sep 2007
Messages: 2009
Sujets: 49

Médailles: 2 (En savoir plus...)
Ayane (Quantité : 1) Rédacteur de tuto #1 (Quantité : 1)

MessagePosté le: 14/11/07 17:37    Sujet du message: Citer

Tu n'as pas pris le temps de lire non plus ...
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 Troll-Brain
Ri1kamoua


Inscrit le: 23 Aoû 2007
Messages: 7143
Sujets: 147
Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance
Médailles: 2 (En savoir plus...)
Grand mage créateur de sort (Quantité : 1) Rédacteur de tuto #3 (Quantité : 1)

MessagePosté le: 14/11/07 18:33    Sujet du message: Citer

Joli travail Ayane, c'est exactement ce que je souhaitais.
@ KaMi-Gaara : C'est la bonne section et un effort supplémentaire de ta part ne serait pas superflu
_________________
Le violet, c'est moche.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Gevans
Back


Inscrit le: 21 Aoû 2007
Messages: 1930
Sujets: 85

Médailles: 2 (En savoir plus...)
Gevans (Quantité : 1) Rédacteur de tuto #1 (Quantité : 1)

MessagePosté le: 14/11/07 21:10    Sujet du message: Citer

A mon avis l'était 1/0 n'est pas du à la présence ou non de tension mais uniquement de courant car la tension est une différence de potentiel. Enfin c'est un détail, sinon c'est assez intéressant, j'avais une méthode pour passer de la base décimale à la base binaire, si je retrouve je la posterai Smile
_________________
Si vous recherchez quelque chose, il y a de très grandes chances que vous trouviez la réponse ici alors jetez y un oeil.
Topic indispensable
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Envoyer l'e-mail Visiter le site web du posteur MSN Messenger
 Magus
Membre a fort taux de post


Inscrit le: 13 Oct 2007
Messages: 994
Sujets: 25
Spécialité en worldedit: Codeur


MessagePosté le: 14/11/07 23:07    Sujet du message: Citer

Il éxiste 2 méthodes pour passer de la base 10 en base 2.

Celle indiqué dans le post de départ, on divise par 2 succéssivement et on regarde les restes. L'inconvénient est qu'on se retrouve avec le bon résultat, mais a l'envers (et c'est parfois très embétant).

Il éxiste une autre méthode un soupçon plus compliqué, mais le résultat est dans le bon ordre dès le départ.
Je le fais avec un exemple ce sera plus simple, vous comprendrez la méthode générale en même temps :

Nous voulons convertir le nombre 366 en binaire.
Dans un coin de votre feuille (ou de votre tête comme vous voulez), notez les puissances 2 de droite a gauche, en vous arrétant dès que vous dépasseriez 366. ça donne ceci :

256 128 64 32 16 8 4 2 1

Il faut ensuite se dire qu'on a une case par puissance, et qu'on doit remplir chacune des cases par un 1 ou un 0.

La méthode est simple, on prend la puissance de 2 la plus proche de 366 mais en dessous (ici c'est 256). On met un 1 dans cette case et on soustrait 256 à 366. On obtient 110 et on recommence jusqu'a ce que mort s'en suive (jusqu'a 0 en fait). La puissance de 2 la plus proche en dessous est 64, on met un 1 dans la case et on soustrait 64, on obtient 46. On met un 1 dans 32, on soustrait on a 14. Un 1 dans 8, on a 6. Un 1 dans la case de 4, on obtient 2, puis enfin un 1 dans la case de 2.
Il ne reste plus qu'a placer des 0 dans toutes les cases qu'on a pas utilisé, et on obtiens 101101110.

Désolé si c'est pas très clair la façon dont je l'ai expliqué :/[/code]
_________________
- La théorie c'est quand rien ne fonctionne mais tout le monde sait pourquoi.
- La pratique c'est quand tout fonctionne mais personne ne sait pourquoi.
- Chez moi la théorie et la pratique sont réunies, rien ne fonctionne et personne ne sait pourquoi.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 Ayane
Bot administrateur


Inscrit le: 17 Sep 2007
Messages: 2009
Sujets: 49

Médailles: 2 (En savoir plus...)
Ayane (Quantité : 1) Rédacteur de tuto #1 (Quantité : 1)

MessagePosté le: 14/11/07 23:16    Sujet du message: Citer

Cela dépend des composants, généralement c'est avec une différence de potentiels car c'est plus facile à générer et cela consomme moins d'énergie, mais tu peux en trouver qui font des différences de courants.

@[Master]: Je n'allais pas leur donner la plus compliqué, surtout que la première est la plus facile à coder. Néanmoins la méthode que tu as cité est la plus rapide lorsqu'on a l'habitude, elle permet de faire facilement la conversion de tête.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 Bantas
Anomalie floodiforme


Inscrit le: 21 Aoû 2007
Messages: 1524
Sujets: 37

Médailles: 1 (En savoir plus...)
Rédacteur de tuto #3 (Quantité : 1)

MessagePosté le: 14/11/07 23:47    Sujet du message: Citer

Merci merci merci Smile
J'en aurais eu besoin quand je codais le sytème d'encodage de héros pour Bizz' Very Happy
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Keitaro_Ura
Floodozaurus


Inscrit le: 21 Aoû 2007
Messages: 2073
Sujets: 38
Spécialité en worldedit: Oui
Médailles: 1 (En savoir plus...)
Rédacteur de tuto #2 (Quantité : 1)

MessagePosté le: 16/11/07 23:12    Sujet du message: Citer

J'ai pas bien compris mais logiquement y'a que 10 chiffres, et pas plus dans notre écriture numérale.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Magus
Membre a fort taux de post


Inscrit le: 13 Oct 2007
Messages: 994
Sujets: 25
Spécialité en worldedit: Codeur


MessagePosté le: 16/11/07 23:15    Sujet du message: Citer

Les arabes n'ont en effet que 10 chiffres, donc si on veut compter plus qu'en base 10 il faut aussi se servir des lettres :p
_________________
- La théorie c'est quand rien ne fonctionne mais tout le monde sait pourquoi.
- La pratique c'est quand tout fonctionne mais personne ne sait pourquoi.
- Chez moi la théorie et la pratique sont réunies, rien ne fonctionne et personne ne sait pourquoi.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 Bantas
Anomalie floodiforme


Inscrit le: 21 Aoû 2007
Messages: 1524
Sujets: 37

Médailles: 1 (En savoir plus...)
Rédacteur de tuto #3 (Quantité : 1)

MessagePosté le: 16/11/07 23:39    Sujet du message: Citer

Comment peut on passer du binaire à une autre base ?
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Brissou de Mourièssou
Créateur de sorts, depuis 1936.


Inscrit le: 30 Aoû 2007
Messages: 1510
Sujets: 26
Spécialité en worldedit: Développer des jeux vidéos pour le fun, donc world edit c'est comme faire une addition.
Médailles: 2 (En savoir plus...)
Concours de sorts amusants (Quantité : 1) Créateur de héros (Quantité : 1)

MessagePosté le: 17/11/07 00:27    Sujet du message: Citer

Binaire à la base 10 :

...0 ....0.......0.....0
2^3 2^2 2^1 2^0 => 0 + 0 + 0 + 0 = 0 xD

...1......0......1......0
2^3 2^2 2^1 2^0 => 8 + 0 + 2 + 0 = 10

...1.....1......1.......0
2^3 2^2 2^1 2^0 => 8 + 4 + 2 + 0 = 14

Binaire à la base héxadécimale, là le plus simple c'est de grouper le nombre binaire par bloc de 4:
1010.......0111........1110........0011
(10)->A .. (7)->7 .. (14)->E .. (3)-> 3 => A7E3
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger
 Bantas
Anomalie floodiforme


Inscrit le: 21 Aoû 2007
Messages: 1524
Sujets: 37

Médailles: 1 (En savoir plus...)
Rédacteur de tuto #3 (Quantité : 1)

MessagePosté le: 17/11/07 17:44    Sujet du message: Citer

Pour le binaire au décimal j'ai compris, mais je voudrais passer en base 32 ou 36 (36 de préférence, 32 si ça ne marche qu'avec des puissance de 2), et là je vois vraiment pas..
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Troll-Brain
Ri1kamoua


Inscrit le: 23 Aoû 2007
Messages: 7143
Sujets: 147
Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance
Médailles: 2 (En savoir plus...)
Rédacteur de tuto #3 (Quantité : 1) Grand mage créateur de sort (Quantité : 1)

MessagePosté le: 17/11/07 18:00    Sujet du message: Citer

J'ai trouvé cette fonction si ca t'intéresse :
http://wc3jass.com/viewtopic.php?t=178

c'est une méthode générale en utilisant les puissances , les divisions, les restes de celle ci, les bases et une loop
_________________
Le violet, c'est moche.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Gevans
Back


Inscrit le: 21 Aoû 2007
Messages: 1930
Sujets: 85

Médailles: 2 (En savoir plus...)
Rédacteur de tuto #1 (Quantité : 1) Gevans (Quantité : 1)

MessagePosté le: 17/11/07 18:27    Sujet du message: Citer

Bantas a écrit:
Pour le binaire au décimal j'ai compris, mais je voudrais passer en base 32 ou 36 (36 de préférence, 32 si ça ne marche qu'avec des puissance de 2), et là je vois vraiment pas..


Tu utilises les méthodes de Master mais avec les puissances b ou b est ta base.

En fait il faut faire la divisiion euclidienne de ton nombre par b (b entier > 1).

Je viens de retrouver ma technique, en fait on part de N par exemple 475 en base 7.

475 = 7*67 + 6
67 = 9*7 + 4
9 = 7*1 + 2
1 = 7*0 + 1
0 = 0*7 + 0

En rouge les restes.
Je pense qu'avec les couleurs c'est assez clair, quand on arrive à 0 comme reste on s'arrête et on prend les restes obtenus dans l'ordre inverse. Ici la réponse est donc : 01246 = 1246
_________________
Si vous recherchez quelque chose, il y a de très grandes chances que vous trouviez la réponse ici alors jetez y un oeil.
Topic indispensable
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Envoyer l'e-mail Visiter le site web du posteur MSN Messenger
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Worldedit Index du Forum -> Aide sur les déclencheurs Toutes les heures sont au format GMT + 1 Heure
Aller à la page 1, 2  Suivante
Page 1 sur 2

 
Sauter vers:  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com