Partage
  • Partager sur Facebook
  • Partager sur Twitter

Python/Pygame - Obtenir le prénom du joueur

Sujet résolu
Anonyme
    17 janvier 2019 à 18:04:49

    Alors voilà, je suis en train de coder un jeu avec pygame, et j'aimerais que mon programme soit capable de récupérer le prénom du joueur qui y joue. Avec quelques recherches, j'ai remarqué que la plupart du temps, dans des cas similaires, l'option choisit est de récupérer le nom de la session Windows, avec un code simple tel que :

    import os
    
    username = os.environ.get('USERNAME')

    Seulement, ce code est faux, car il ne permet pas de récupérer le nom de la session ouverte, mais le nom DU DOSSIER contenant la session ouverte.

    Exemple simple :

    -ma session s'appelle "Yves-Antoine Gangner".

    -le dossier de ma session s'appelle "Parents".

    -la commande os.environ.get('USERNAME') renvoie donc "Parents".

    Dans pas mal de cas, ce dossier s'appel "Admin", donc cette fonction ne remplit pas son rôle si on veut récupérer le nom du joueur. Je sais que ce que je veux faire est possible, car le jeu "OneShot" y arrive, mais ce jeu est codé en RPG Maker, donc ma question est de savoir si il y a un moyen d'accéder à ma requête sous python/pygame.

    J’espère que j'ai été clair dans mes explications, si vous voulez des précisions, n'hésitez pas à demander !

    -
    Edité par Anonyme 17 janvier 2019 à 18:06:19

    • Partager sur Facebook
    • Partager sur Twitter
      17 janvier 2019 à 19:09:29

      C'est peut-être stocké dans une autre variable d'environnement, affiches les toutes pour voir.
      • Partager sur Facebook
      • Partager sur Twitter

      Blond, bouclé, toujours le sourire aux lèvres...

      Anonyme
        17 janvier 2019 à 21:19:02

        LoupSolitaire a écrit:

        C'est peut-être stocké dans une autre variable d'environnement, affiches les toutes pour voir.


        Voilà le résultat d'un "os.environ" :

        >>> os.environ
        environ({'ALLUSERSPROFILE': 'C:\\ProgramData', 'APPDATA': 'C:\\Users\\Parents\\AppData\\Roaming', 'COMMONPROGRAMFILES': 'C:\\Program Files\\Common Files', 'COMMONPROGRAMFILES(X86)': 'C:\\Program Files (x86)\\Common Files', 'COMMONPROGRAMW6432': 'C:\\Program Files\\Common Files', 'COMPUTERNAME': 'DESKTOP-1GFEOGF', 'COMSPEC': 'C:\\WINDOWS\\system32\\cmd.exe', 'DRIVERDATA': 'C:\\Windows\\System32\\Drivers\\DriverData', 'FPS_BROWSER_APP_PROFILE_STRING': 'Internet Explorer', 'FPS_BROWSER_USER_PROFILE_STRING': 'Default', 'HOME': 'C:\\Users\\Parents', 'HOMEDRIVE': 'C:', 'HOMEPATH': '\\Users\\Parents', 'LOCALAPPDATA': 'C:\\Users\\Parents\\AppData\\Local', 'LOGONSERVER': '\\\\DESKTOP-1GFEOGF', 'NUMBER_OF_PROCESSORS': '4', 'ONEDRIVE': 'C:\\Users\\Parents\\OneDrive', 'OS': 'Windows_NT', 'PATH': 'C:\\Program Files (x86)\\Common Files\\Oracle\\Java\\javapath;C:\\WINDOWS\\system32;C:\\WINDOWS;C:\\WINDOWS\\System32\\Wbem;C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\;C:\\Program Files (x86)\\ATI Technologies\\ATI.ACE\\Core-Static;C:\\Program Files (x86)\\NVIDIA Corporation\\PhysX\\Common;C:\\WINDOWS\\system32;C:\\WINDOWS;C:\\WINDOWS\\System32\\Wbem;C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\;C:\\WINDOWS\\System32\\OpenSSH\\;C:\\Users\\Parents\\AppData\\Local\\Programs\\Python\\Python37\\Scripts\\;C:\\Users\\Parents\\AppData\\Local\\Programs\\Python\\Python37\\;C:\\Users\\Parents\\AppData\\Local\\Microsoft\\WindowsApps;', 'PATHEXT': '.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC', 'PROCESSOR_ARCHITECTURE': 'AMD64', 'PROCESSOR_IDENTIFIER': 'AMD64 Family 21 Model 56 Stepping 1, AuthenticAMD', 'PROCESSOR_LEVEL': '21', 'PROCESSOR_REVISION': '3801', 'PROGRAMDATA': 'C:\\ProgramData', 'PROGRAMFILES': 'C:\\Program Files', 'PROGRAMFILES(X86)': 'C:\\Program Files (x86)', 'PROGRAMW6432': 'C:\\Program Files', 'PSMODULEPATH': 'C:\\WINDOWS\\system32\\WindowsPowerShell\\v1.0\\Modules\\', 'PUBLIC': 'C:\\Users\\Public', 'SESSIONNAME': 'Console', 'SYSTEMDRIVE': 'C:', 'SYSTEMROOT': 'C:\\WINDOWS', 'TEMP': 'C:\\Users\\Parents\\AppData\\Local\\Temp', 'TMP': 'C:\\Users\\Parents\\AppData\\Local\\Temp', 'USERDOMAIN': 'DESKTOP-1GFEOGF', 'USERDOMAIN_ROAMINGPROFILE': 'DESKTOP-1GFEOGF', 'USERNAME': 'Parents', 'USERPROFILE': 'C:\\Users\\Parents', 'WINDIR': 'C:\\WINDOWS'})


        J'ai bien regardé, et je n'ai pas trouvé mon nom.

        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          18 janvier 2019 à 2:24:32

          Alors ça doit certainement se trouver dans les registres de Windows. Regarde avec l'éditeur de registre de Windows pour savoir où se situe l'information, et ensuite tu pourras utiliser le module standard winreg pour la récupérer.

          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            26 janvier 2019 à 12:27:28

            IdiotBête_ a écrit:

            Alors ça doit certainement se trouver dans les registres de Windows. Regarde avec l'éditeur de registre de Windows pour savoir où se situe l'information, et ensuite tu pourras utiliser le module standard winreg pour la récupérer.


            Effectivement, dans regedit, en suivant le chemin

            HKEY_CURRENT_USER\Software\Microsoft\Office\Common\UserInfo\,

            UserName contenait mon nom complet. Je n'ai jamais utilisé le module winreg, mais je pense que la plus dur est derrière moi.



            EDIT : 

            Finalement, j'ai trouvé une autre solution bien plus simple, il suffit de créer un fichier name.bat avec écrit dedans :

            @ECHO OFF
            
            Powershell.exe -Command "gwmi win32_useraccount | where {$_.caption -match $env:USERNAME} | select fullname | ft -HideTableHeaders" >>name.txt


            Et ensuite, vous écrivez dans votre code python : 

            import os
            os.startfile("name.bat")

            Il suffit ensuite de récupérer le contenu du fichier avec un simple 

            with open ("name.txt","r") as text :
                name = text.read ()

            et le tour est joué.

            Cette solution a comme seul inconvénient qu’elle ouvre une fenêtre cmd pendant une demi seconde, à vous de voir si c'est dérangeant ou non . .  .

            -
            Edité par Anonyme 26 janvier 2019 à 13:22:12

            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              26 janvier 2019 à 17:16:08

              Je reconnais que le module winreg est austère. Mais ça reste plus propre que ta solution, qui fait un peu bidouillage.

              Quelque chose comme ça devrait fonctionner :

              import os
              import winreg
              
              
              try:
                  regpath = r"\Software\Microsoft\Office\Common\UserInfo"
                  with winreg.OpenKey(winreg.HKEY_CURRENT_USER, regpath) as key:
                      username = winreg.QueryValueEx(key, "fullname")
              except WindowsError as err:
                  print(err) #logging.debug(err)
                  username = os.environ["USERNAME"]
              
              • Partager sur Facebook
              • Partager sur Twitter

              Python/Pygame - Obtenir le prénom du joueur

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown