| Programmation (le retour du topic des geeks qui se lavent pas, ou peu) | |
|
+14Meiguanxi Kamikaz93 cheikh35 Wraithslayer/HD Dragongaze13 Blizzard Falco Slump Choco-sama coco garywiss6 AristA AlexRE Empty 18 participants |
|
Auteur | Message |
---|
Empty Mangeur de manettes Lv 65
Nombre de messages : 16363 Age : 38
| Sujet: Programmation (le retour du topic des geeks qui se lavent pas, ou peu) Mer 23 Jan 2013, 19:40 | |
| Salut à tous, Je recrée ce topic car je ne mets plus la main sur l'ancien Ici on parle de programmation et ... De programmation ! J'ouvre le bal en posant cette question à Garywiss: - Comment t'y prendrais-tu pour formater une phrase entrée par un utilisateur en plusieurs mots distincts comparable ensuite à ceux compris dans une liste ? J'ai plusieurs façons de procéder mais elles sont plutôt chiantes à mettre en place et je sais, par intuition, qu'il doit exister des façons plus efficaces et moins chiantes :p Pour l'instant je ne parviens qu'à couper le contenu d'une variable en deux... exemple: Si l'utilisateur entre "manger pomme", je peux mettre le verbe et l'objet dans deux variables distinctes. Par contre, si l'utilisateur entre "manger la pomme" ou "manger cette pomme" ... Je suis bai*** Si tu (toi, ou quelqu'un d'autre, en fait) peut m'aiguiller un peu ce serait sympa =D Donnez un exemple en Python si possible, sinon n'importe quel langage fera l'affaire, tant que je comprends la manière de procéder. Deuxième question: - Si je crée une variable globale, peut-elle être importée d'un module à l'autre sans passer par une variable intermédiaire ? (j'entends par variable intermédiaire, les variables instanciées automatiquement en paramètre de fonction). | |
|
| |
AlexRE Admin trop trizo Lv 65
Nombre de messages : 29934 Age : 37
| Sujet: Re: Programmation (le retour du topic des geeks qui se lavent pas, ou peu) Mer 23 Jan 2013, 19:45 | |
| Tu ne peux pas simplement faire une condition du genre "si le deuxième mot est 'la' ou 'cette' remplacer le deuxième mot par le troisième mot" ? ____________ - Relm a écrit:
- Merci pour la confirmation Gary et fuck my life.
| |
|
| |
AristA Maker qui quitte vraiment E-m Lv 60
Nombre de messages : 11008 Age : 27
| Sujet: Re: Programmation (le retour du topic des geeks qui se lavent pas, ou peu) Mer 23 Jan 2013, 19:48 | |
| J'ai une idée : tu peux séparer chacun des mots reconnus dans un tableau (via ton_string.split()), puis tu analyses chacun des mots de ce tableau. Le tout premier que tu reconnais sera le verbe, puis le second reconnu sera l'objet. De cette façon, l'utilisateur pourra entrer "manger la putain de merde de pomme par terre espèce de chimpanzé", l'interpréteur reconnaîtra d'abord manger, puis ensuite pomme. S'il n'y a pas d'objets reconnus, l'action s'appliquera à la room (manger room dans ce cas).
J'ai pas d'exemple précis à te donner en code, mais j'imagine qu'une boucle devrait suffire pour ça.
Dernière édition par AristA le Mer 23 Jan 2013, 19:50, édité 1 fois | |
|
| |
Empty Mangeur de manettes Lv 65
Nombre de messages : 16363 Age : 38
| Sujet: Re: Programmation (le retour du topic des geeks qui se lavent pas, ou peu) Mer 23 Jan 2013, 19:50 | |
| AlexRE: Si mais dans ce cas je dois prévoir tous les mots possibles et inimaginables ... (s'il entre "manger fdgdfgdg pomme" je suis doublement niqué). A moins de faire une comparaison style: - Code:
-
if deuxième_mot not in liste_objet: #Changer deuxième mot par le troisième. AristA: Oui c'est ce à quoi je pensais à la base(voir condition "if" plus haut) mais je ne sais pas pourquoi, j'ai l'impression que ça posera problème d'une façon ou d'une autre :/ Je vais quand même tester ! - Citation :
- tu peux séparer chacun des mots reconnus dans un tableau (via ton_string.split())
Merci, j'avais oublié que .strip() s'adressait aussi aux listes | |
|
| |
AristA Maker qui quitte vraiment E-m Lv 60
Nombre de messages : 11008 Age : 27
| Sujet: Re: Programmation (le retour du topic des geeks qui se lavent pas, ou peu) Mer 23 Jan 2013, 19:57 | |
| Ca ne marchera pas si ton mot est composé ("flûte de pan" par exemple), en effet. | |
|
| |
Empty Mangeur de manettes Lv 65
Nombre de messages : 16363 Age : 38
| Sujet: Re: Programmation (le retour du topic des geeks qui se lavent pas, ou peu) Mer 23 Jan 2013, 20:10 | |
| Merde... Comment on fait encore pour demander à l'utilisateur d'entrer deux données à la fois ? genre: print ("{0}, à {1} ans !",nom,age) mais avec raw_input, je ne sais plus comment on formate :/ En fait c'est tout con, si on peut procéder de la sorte avec un raw_input je n'ai vraiment plus de quoi me prendre la tête ... Si je fais: - Code:
-
liste = raw_input("{verbe},{objet}",0,1) Il n'y aura pas d'erreur si je crée les variables au préalable. Par contre, "liste" sera de type String et donc on revient au même problème... Ce type de formatage ne peut pas être effectué sur un objet de type List :/
Dernière édition par KoZzY le Mer 23 Jan 2013, 20:12, édité 1 fois | |
|
| |
AristA Maker qui quitte vraiment E-m Lv 60
Nombre de messages : 11008 Age : 27
| Sujet: Re: Programmation (le retour du topic des geeks qui se lavent pas, ou peu) Mer 23 Jan 2013, 20:10 | |
| J'ai fait l'exemple dont je te parlais (pour m'entraîner moi même principalement). C'est en Python 3.3 btw. - Code:
-
verbes = ["manger", "examiner", "voler"] objets = ["pomme", "flute", "crayon"] action = "" objet_act = ""
print("Vous voyez face à vous une pomme, une flute et un crayon.") rep = input() rep.split()
verb = 0 while verb < len(verbes): if rep.count(verbes[verb]) > 0: #Verbe reconnu action = verbes[verb] break verb+=1 obj = 0 while obj < len(objets): if rep.count(objets[obj]) > 0: #Objet reconnu objet_act = objets[obj] break obj+=1
print(action + " " + objet_act) J'aurais peut être pu remplacer obj et verb par une variable i, tout simplement, mais je trouvais que c'était plus clair pour vous peut être. Le programme parcourt la phrase que l'utilisateur a écrite, et retourne une phrase "simplifiée", avec seulement les mots qu'ils a compris, mis dans l'ordre verbe objet. Exemple : - Code:
-
Vous voyez face à vous une pomme, une flute et un crayon >>mais il faut examiner le crayon non de non ! je te l'ai dit cent fois ! examiner crayon Le truc c'est qu'il faut avoir des strings des différentes actions qui sont similaires. Par exemple, pour une même action regarder, il faudrait assigner les verbes observer, examiner, contempler, apercevoir, entr'apercevoir... De telle sorte qu'il faudrait, en plus de parcourir la liste des verbes, parcourir la liste des alias de ces verbes. Ce serait un peu lourd de faire ça à chaque fois, non ? Ca nécessite aussi d'avoir tout ses verbes dans une liste... Ce qui est compliqué à faire, peut être. | |
|
| |
Empty Mangeur de manettes Lv 65
Nombre de messages : 16363 Age : 38
| Sujet: Re: Programmation (le retour du topic des geeks qui se lavent pas, ou peu) Mer 23 Jan 2013, 20:19 | |
| Ok j'ai rien dit, avec la fonction "split" (et non pas "strip" que j'ai tendance à utiliser) la variable est automatiquement transformée en liste =]
Ton idée est certainement la meilleure, exceptée ce qui est de la comparaison avec "len" car ça pourrait causer une grosse erreur (imaginons que le verbe ou l'objet soit plus petit ou égal en nombre de caractères que le mot aléatoire que l'utilisateur à tapé entre les deux).
Pour la liste de verbes / objets, je ne me prends pas la tête, je la charge en fonction de ce qui est écrit dans un autre fichier texte =] | |
|
| |
AristA Maker qui quitte vraiment E-m Lv 60
Nombre de messages : 11008 Age : 27
| Sujet: Re: Programmation (le retour du topic des geeks qui se lavent pas, ou peu) Mer 23 Jan 2013, 20:27 | |
| verb est ma variable itérative, pas le verbe en lui même que l'utilisateur a entrée J'étais sûr que ça allait poser problème | |
|
| |
Empty Mangeur de manettes Lv 65
Nombre de messages : 16363 Age : 38
| Sujet: Re: Programmation (le retour du topic des geeks qui se lavent pas, ou peu) Mer 23 Jan 2013, 20:39 | |
| Ouais c'est lourd à traduire quand les noms de variable se ressemblent Sinon, pour le moment, le plus simple que j'ai trouvé c'est: - Code:
-
liste_verbes = ["manger","prendre","deplacer","desulfatiser"] liste_objets = ["pomme","poire","scoubidoubidou"]
while phrase[0] not in liste_verbes or phrase[1] not in liste_objets: phrase = raw_input("Y a une pomme sur une table, Ducon:").split().lower() if phrase[0] == "manger" and phrase[1] == "pomme": print "Tu manges la pomme...Passionnant !" del liste_objets[0] elif: elif: elif: ###... Et-cetera else: print "Tu fais vraiment n'importe quoi !" phrase = [] Par contre niveau répétition du code c'est ultra lourd... | |
|
| |
AristA Maker qui quitte vraiment E-m Lv 60
Nombre de messages : 11008 Age : 27
| Sujet: Re: Programmation (le retour du topic des geeks qui se lavent pas, ou peu) Mer 23 Jan 2013, 20:50 | |
| C'est pas le plus simple si c'est si lourd x)
J'imaginais quelque chose de complètement différent en fait. Je te passe le code que je fais dans un instant. | |
|
| |
garywiss6 Rétrograde Lv 54
Nombre de messages : 5302 Age : 29
| Sujet: Re: Programmation (le retour du topic des geeks qui se lavent pas, ou peu) Mer 23 Jan 2013, 20:54 | |
| KoZzY : ne met pas tout dans le code, fait plusieurs fichier, une database avec les niveaux, action, objet etc... Je ne suis pas chez moi la, mais des que je rentre j'expliquerais mieux ____________ - Un soir banal sur skype a écrit:
- Moi : C'était quoi ce cri ?
Choco : C'est ma saucisse qui a hurlé.
| |
|
| |
Empty Mangeur de manettes Lv 65
Nombre de messages : 16363 Age : 38
| Sujet: Re: Programmation (le retour du topic des geeks qui se lavent pas, ou peu) Mer 23 Jan 2013, 21:06 | |
| AristA: Oui, d'autant plus que ma méthode donne une erreur "index out of range" quand l'utilisateur entre une donnée "vide" Ou pire encore s'il inverse "objet" et "verbe" ... Garywiss: Merci, c'est vraiment ça qu'il me manque, de l'organisation, je n'ai aucune idée de comment procéder efficacement. Je connais le langage (dans les grandes lignes) et tout ça mais je ne suis pas structuré pour deux francs... Et j'ai cru comprendre qu'en programmation il vaut mieux être structuré | |
|
| |
coco Dieu Maker Lv 44
Nombre de messages : 2989 Age : 30
| Sujet: Re: Programmation (le retour du topic des geeks qui se lavent pas, ou peu) Mer 23 Jan 2013, 21:28 | |
| En général vaut mieux éviter les variables globales si tu veux faire un gros projet Je me suis mis au C# sinon, c'est vraiment sympa la programmation objet ____________ | |
|
| |
Empty Mangeur de manettes Lv 65
Nombre de messages : 16363 Age : 38
| Sujet: Re: Programmation (le retour du topic des geeks qui se lavent pas, ou peu) Mer 23 Jan 2013, 22:15 | |
| Salut Coco, ça faisait un moment =] | |
|
| |
coco Dieu Maker Lv 44
Nombre de messages : 2989 Age : 30
| Sujet: Re: Programmation (le retour du topic des geeks qui se lavent pas, ou peu) Mer 23 Jan 2013, 22:28 | |
| Yep, les joies des études content d’être de retour ! Le seul point positif c'est que je me suis initié aux joies de la programmation pour robot. ____________ | |
|
| |
AlexRE Admin trop trizo Lv 65
Nombre de messages : 29934 Age : 37
| Sujet: Re: Programmation (le retour du topic des geeks qui se lavent pas, ou peu) Mer 23 Jan 2013, 22:32 | |
| RE Coco. ^^ Ah c'est marrant, je croyais que tu programmais en C# pour CoRoLia. - KoZzY a écrit:
- Si mais dans ce cas je dois prévoir tous les mots possibles et inimaginables ... (s'il entre "manger fdgdfgdg pomme" je suis doublement niqué).
Dans ce cas là le joueur t'en voudra pas si tu lui dis "commande non comprise". ____________ - Relm a écrit:
- Merci pour la confirmation Gary et fuck my life.
| |
|
| |
coco Dieu Maker Lv 44
Nombre de messages : 2989 Age : 30
| Sujet: Re: Programmation (le retour du topic des geeks qui se lavent pas, ou peu) Mer 23 Jan 2013, 22:34 | |
| Nop en C normale (je me rends compte maintenant que tellement de trucs auraient été beaucoup plus simples en C# par contre ). ____________ | |
|
| |
garywiss6 Rétrograde Lv 54
Nombre de messages : 5302 Age : 29
| Sujet: Re: Programmation (le retour du topic des geeks qui se lavent pas, ou peu) Mer 23 Jan 2013, 23:09 | |
| Le C#c'est genial, juste pour le framework XNA et surtout, Unity 3d ____________ - Un soir banal sur skype a écrit:
- Moi : C'était quoi ce cri ?
Choco : C'est ma saucisse qui a hurlé.
| |
|
| |
Empty Mangeur de manettes Lv 65
Nombre de messages : 16363 Age : 38
| Sujet: Re: Programmation (le retour du topic des geeks qui se lavent pas, ou peu) Mer 23 Jan 2013, 23:11 | |
| T'es chez toi, Garywiss ? | |
|
| |
AristA Maker qui quitte vraiment E-m Lv 60
Nombre de messages : 11008 Age : 27
| Sujet: Re: Programmation (le retour du topic des geeks qui se lavent pas, ou peu) Mer 23 Jan 2013, 23:33 | |
| Ah oui donc j'ai rien posté, mais j'envisageais de proposer que les items et les verbes soient des objets, auquel on attribueraient des fonctions "manger", "prendre" et qu'on spécifierait pour chaque item si l'action était spéciale ce qui devait se passer, sinon quoi on utiliserait la réponse de base de l'objet.
Mais au final, j'ai pas réussi à faire lien entre l'item et les objets. Je débute. Peut être coco tu pourrais un peu nous éclairer ? :help: | |
|
| |
Empty Mangeur de manettes Lv 65
Nombre de messages : 16363 Age : 38
| Sujet: Re: Programmation (le retour du topic des geeks qui se lavent pas, ou peu) Mer 23 Jan 2013, 23:45 | |
| Bin ça j'y arrive. Mais c'est long :/ J'aimerais bien connaître la méthode de Garywiss et qu'il m'explique un peu ce "rangement" en plusieurs fichiers. | |
|
| |
AristA Maker qui quitte vraiment E-m Lv 60
Nombre de messages : 11008 Age : 27
| Sujet: Re: Programmation (le retour du topic des geeks qui se lavent pas, ou peu) Mer 23 Jan 2013, 23:51 | |
| Tu vas pas non plus générer aléatoirement des réponses à tes objets, ça n'a pas trop de sens Faut bien spécifier quelque part les réactions des objets et des verbes, je veux dire. Après la méthode de garywiss est sûrement plus rapide d'un point de vue de l'organisation, apparemment en spécifiant cela rapidement dans des fichiers ? A voir, hum hum n'est ce pas. (j'aimais bien mon idée moi) | |
|
| |
garywiss6 Rétrograde Lv 54
Nombre de messages : 5302 Age : 29
| Sujet: Re: Programmation (le retour du topic des geeks qui se lavent pas, ou peu) Jeu 24 Jan 2013, 01:26 | |
| En fait, j'avais pensé à faire tout ça en objet (il y a de la POO en python et c'est super ) et donc de faire un objet pour tout les objets dans la pièce par exemple, qui comprends, le nom de l'objet, ses caractéristiques, et les actions pouvant être effectués sur l'objet. Dans un fichier python à part, tu met toutes les fonctions des actions avec comme paramètre une variable du type de l'objet qu'on a crée, example : - Code:
-
def manger(objet): Ensuite, pour créer par exemple une pomme, tu instancie tes objets en passant par des fichiers JSON, ce qui te simplifiera beaucoup de chose Le JSON c'est du XML mais en mieux, pour plus d'infos sur leur utilisation en python, je te redirige vers un tutoriel du site du zéro (très instable mais bon ) : http://www.siteduzero.com/informatique/tutoriels/serialisez-vos-objets-au-format-json Après avec un peu d'organisation, tu arrives à quelque chose de très modulables, et en ce qui concerne ce que tape le joueur au clavier, tu fais du parsing, tu découpe ta chaîne en un tableau de chaîne qui ne comporte que les mots, et tu prends juste le premier verbe que tu rencontres, et le premier objet que tu rencontre dans la commande du joueur (Ex: "Manger avant de boire, une pomme et prendre une bière", tu ne prends en compte que "Manger" premier verbe rencontré, et "pomme" premier mot rencontré, tout ça en fonction de ta liste d'action et de ta liste d'objet dans la scène et si le mec n'a mis que de la bouse, tu lui dit que ce qu'il fait n'est pas bien ) ____________ - Un soir banal sur skype a écrit:
- Moi : C'était quoi ce cri ?
Choco : C'est ma saucisse qui a hurlé.
| |
|
| |
Empty Mangeur de manettes Lv 65
Nombre de messages : 16363 Age : 38
| Sujet: Re: Programmation (le retour du topic des geeks qui se lavent pas, ou peu) Jeu 24 Jan 2013, 10:27 | |
| En gros, une fusion entre les idées d'AristA et les miennes Je ne connais pas JSON, vais jeter un oeil, en espérant que le SDZ ne fasse pas trop chier aujourd'hui :/ Merci pour les infos ! Ca a l'air plus long à faire au début mais finalement je pense que ce sera un fameux gain de temps. | |
|
| |
Contenu sponsorisé
| Sujet: Re: Programmation (le retour du topic des geeks qui se lavent pas, ou peu) | |
| |
|
| |
| Programmation (le retour du topic des geeks qui se lavent pas, ou peu) | |
|