IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Lire plusieurs caractères en même temps


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mai 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2012
    Messages : 4
    Par défaut Lire plusieurs caractères en même temps
    Bonjour à tous,
    Je suis entrain de coder un jeu Rpg 2D du style Pokémon.
    Mes maps ressemblent à ceci mais en beaucoup plus grand:

    1, 1, 1, 1,
    1, 0, 0, 1,
    1, 0, 0, 1,
    1, 1, 1, 1,

    Mon problème est que je manque cruellement de caractères pour tous les éléments de mon jeu. J'aimerais donc réécrire mon fichier map comme ceci:

    0001, 0001, 0001, 0001,
    0001, 0000, 0000, 0001,
    0001, 0000, 0000, 0001,
    0001, 0001, 0001, 0001,

    Mais le problème est qu'il me faudrait pouvoir lire les quatre caractères en même temps, car si je prends cet élément par exemple: 0001, pyhton va lire "0" puis "0", "0", et enfin "1". Mon but serait de le faire lire d'un coup: "0001".

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 065
    Par défaut
    Bonjour,

    Pouvez-vous nous donner votre code permettant de lire le fichier map?

  3. #3
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    S'il s'agit de lire d'un seul coup "0001", c'est facile puisque c'est du binaire:

    on passe de "0001" à un nombre entier par:

    print int("0001",2)
    1

    on passe du nombre entier 1 à "0001" par:

    print str(bin(1))[2:].zfill(4)
    0001

    Et c'est généralisable, bien qu'un peu plus compliqué: on peut considérer que "0001, 0001, 0001, 0001" est un nombre entier de 16 bits, et il est donc possible d'établir les 2 fonctions de conversion. Dans ce cas, la lecture de la ligne nécessitera seulement 4 octets, qui pourront être convertis (et vice et versa) en 4 fois 4 positions binaires.

  4. #4
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonsoir,

    Ce n'est pas plutôt ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    >>> f = open('map', 'w')
    >>> f.write('00010000')
    8
    >>> f.close()
    >>> f = open('map', 'r')
    >>> f.read(4)
    '0001'
    >>> f.read(4)
    '0000'
    >>> f.close()
    >>> f = open('map', 'r')
    >>> val = f.read()
    >>> index = 0
    >>> while index < len(val):
    ...     print(val[index:index+4])
    ...     index += 4
    ... 
    0001
    0000
    ?

    @+

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 840
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par tyrtamos Voir le message
    print str(bin(1))[2:].zfill(4)
    0001
    Salut

    Normalement str() n'est pas nécessaire puisque la fonction bin() renvoie déjà une chaine...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print bin(1)[2:].zfill(4)
    0001...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour Sve@r,

    Merci! Je le sais mais je l'oublie souvent...

  7. #7
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    En fait je ne vois pas l’intérêt, et surtout pour zfill, puisque le po parle de 4 caractères, pas de binaire. S'il a besoin d'une chaîne "0000" c'est pour pouvoir stocker plus d'informations par rapport à "0" ou "1".
    C'est du moins ce que j'en ai (déduit) compris.

    Il vas sans doute falloir attendre une réponse de sarlunx.

  8. #8
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 065
    Par défaut
    Mon problème est que je manque cruellement de caractères pour tous les éléments de mon jeu. J'aimerais donc réécrire mon fichier map comme ceci:
    Quelqu'un peut-il répondre à cette question?

    Pourquoi ne pas simplement rajouter des colonnes et encore mieux des nombres sans virgules et sans espaces, qui seraient traitées plus tard?

    Bref je n'ai pas réussi à comprendre ce que le PO a prévu de faire... avec cette stratégie des 3 nombres supplémentaires sur la même colonne.

  9. #9
    Membre Expert

    Homme Profil pro
    Diverses et multiples
    Inscrit en
    Mai 2008
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Diverses et multiples

    Informations forums :
    Inscription : Mai 2008
    Messages : 662
    Par défaut
    Citation Envoyé par sarlunx Voir le message
    Mon problème est que je manque cruellement de caractères pour tous les éléments de mon jeu.
    Hmm… J’en déduirais que vous n’utilisez pas que des 0 et des 1, mais l’ensemble des caractères ASCII (étendus)*? Si ces 200 signes (environs) ne vous suffisent pas, vous pouvez vous pencher sur unicode (traité en natif par python), ça sera plus simple que d’avoir recours à des groupes de signes, non*?

Discussions similaires

  1. [pep/8] Lecture de plusieurs caractères en même temps
    Par Roud9 dans le forum Assembleur
    Réponses: 0
    Dernier message: 05/02/2015, 17h22
  2. Rendre visible / invisible plusieurs éléments en même temps
    Par Bluespike62 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 23/01/2006, 17h43
  3. laisser cochés plusieurs TRadioButton en même temps.
    Par heider dans le forum Composants VCL
    Réponses: 5
    Dernier message: 25/12/2005, 14h15
  4. lecture de plusieurs port en même temps
    Par manaboko dans le forum Langage
    Réponses: 3
    Dernier message: 06/10/2005, 15h26
  5. Réponses: 9
    Dernier message: 17/04/2004, 16h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo