~ S'évader de la banalité... Et entrer dans l'imaginaire ! ~
 
AccueilGuelnika, le site de E-m !S'enregistrerConnexion

Partagez | 
 

 Programmation (le retour du topic des geeks qui se lavent pas, ou peu)

Voir le sujet précédent Voir le sujet suivant Aller en bas 
Aller à la page : 1, 2, 3 ... 10, 11, 12  Suivant
AuteurMessage
Empty
Mangeur de manettes Lv 65
Mangeur de manettes Lv 65


Nombre de messages : 16363
Age : 30

MessageSujet: 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 Nerd Sang

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).

____________
Revenir en haut Aller en bas
http://e-magination.jeun.fr
AlexRE
Admin trop trizo Lv 65
Admin trop trizo Lv 65


Nombre de messages : 29430
Age : 29

MessageSujet: 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" ?
Revenir en haut Aller en bas
http://www.alexzone.net
AristA
Maker qui quitte vraiment E-m Lv 60
Maker qui quitte vraiment E-m Lv 60


Nombre de messages : 10881
Age : 19

MessageSujet: 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
Revenir en haut Aller en bas
http://arista.lescigales.org
Empty
Mangeur de manettes Lv 65
Mangeur de manettes Lv 65


Nombre de messages : 16363
Age : 30

MessageSujet: 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 Wink

____________
Revenir en haut Aller en bas
http://e-magination.jeun.fr
AristA
Maker qui quitte vraiment E-m Lv 60
Maker qui quitte vraiment E-m Lv 60


Nombre de messages : 10881
Age : 19

MessageSujet: 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.
Revenir en haut Aller en bas
http://arista.lescigales.org
Empty
Mangeur de manettes Lv 65
Mangeur de manettes Lv 65


Nombre de messages : 16363
Age : 30

MessageSujet: 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
Revenir en haut Aller en bas
http://e-magination.jeun.fr
AristA
Maker qui quitte vraiment E-m Lv 60
Maker qui quitte vraiment E-m Lv 60


Nombre de messages : 10881
Age : 19

MessageSujet: 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.
Revenir en haut Aller en bas
http://arista.lescigales.org
Empty
Mangeur de manettes Lv 65
Mangeur de manettes Lv 65


Nombre de messages : 16363
Age : 30

MessageSujet: 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 =]

____________
Revenir en haut Aller en bas
http://e-magination.jeun.fr
AristA
Maker qui quitte vraiment E-m Lv 60
Maker qui quitte vraiment E-m Lv 60


Nombre de messages : 10881
Age : 19

MessageSujet: 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 Wink

J'étais sûr que ça allait poser problème Alex et ses smileys
Revenir en haut Aller en bas
http://arista.lescigales.org
Empty
Mangeur de manettes Lv 65
Mangeur de manettes Lv 65


Nombre de messages : 16363
Age : 30

MessageSujet: 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 Nerd Sang

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...

____________
Revenir en haut Aller en bas
http://e-magination.jeun.fr
AristA
Maker qui quitte vraiment E-m Lv 60
Maker qui quitte vraiment E-m Lv 60


Nombre de messages : 10881
Age : 19

MessageSujet: 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.
Revenir en haut Aller en bas
http://arista.lescigales.org
garywiss6
Rétrograde Lv 54
Rétrograde Lv 54


Nombre de messages : 5175
Age : 21

MessageSujet: 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 cactus smile

____________
Un soir banal sur skype a écrit:
Moi : C'était quoi ce cri ?
Choco : C'est ma saucisse qui a hurlé.
Revenir en haut Aller en bas
http://vuesubjective.org/Garywiss/
Empty
Mangeur de manettes Lv 65
Mangeur de manettes Lv 65


Nombre de messages : 16363
Age : 30

MessageSujet: 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" Nerd Sang 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é Nerd Sang

____________
Revenir en haut Aller en bas
http://e-magination.jeun.fr
coco
Dieu Maker Lv 44
Dieu Maker Lv 44


Nombre de messages : 2979
Age : 22

MessageSujet: 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 Wink

Je me suis mis au C# sinon, c'est vraiment sympa la programmation objet Very Happy

____________
Revenir en haut Aller en bas
Empty
Mangeur de manettes Lv 65
Mangeur de manettes Lv 65


Nombre de messages : 16363
Age : 30

MessageSujet: 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 =] Smile

____________
Revenir en haut Aller en bas
http://e-magination.jeun.fr
coco
Dieu Maker Lv 44
Dieu Maker Lv 44


Nombre de messages : 2979
Age : 22

MessageSujet: 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 :x content d’être de retour !

Le seul point positif c'est que je me suis initié aux joies de la programmation pour robot.

____________
Revenir en haut Aller en bas
AlexRE
Admin trop trizo Lv 65
Admin trop trizo Lv 65


Nombre de messages : 29430
Age : 29

MessageSujet: 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. cactus smile


@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". Laughing
Revenir en haut Aller en bas
http://www.alexzone.net
coco
Dieu Maker Lv 44
Dieu Maker Lv 44


Nombre de messages : 2979
Age : 22

MessageSujet: 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 ).

____________
Revenir en haut Aller en bas
garywiss6
Rétrograde Lv 54
Rétrograde Lv 54


Nombre de messages : 5175
Age : 21

MessageSujet: 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 Owi toutafé olala

____________
Un soir banal sur skype a écrit:
Moi : C'était quoi ce cri ?
Choco : C'est ma saucisse qui a hurlé.
Revenir en haut Aller en bas
http://vuesubjective.org/Garywiss/
Empty
Mangeur de manettes Lv 65
Mangeur de manettes Lv 65


Nombre de messages : 16363
Age : 30

MessageSujet: 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 ? :x

____________
Revenir en haut Aller en bas
http://e-magination.jeun.fr
AristA
Maker qui quitte vraiment E-m Lv 60
Maker qui quitte vraiment E-m Lv 60


Nombre de messages : 10881
Age : 19

MessageSujet: 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:
Revenir en haut Aller en bas
http://arista.lescigales.org
Empty
Mangeur de manettes Lv 65
Mangeur de manettes Lv 65


Nombre de messages : 16363
Age : 30

MessageSujet: 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.

____________
Revenir en haut Aller en bas
http://e-magination.jeun.fr
AristA
Maker qui quitte vraiment E-m Lv 60
Maker qui quitte vraiment E-m Lv 60


Nombre de messages : 10881
Age : 19

MessageSujet: 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 Alex et ses smileys

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)
Revenir en haut Aller en bas
http://arista.lescigales.org
garywiss6
Rétrograde Lv 54
Rétrograde Lv 54


Nombre de messages : 5175
Age : 21

MessageSujet: 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 cactus smile ) 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 Owi toutafé olala 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 cactus smile et si le mec n'a mis que de la bouse, tu lui dit que ce qu'il fait n'est pas bien Owi toutafé olala )

____________
Un soir banal sur skype a écrit:
Moi : C'était quoi ce cri ?
Choco : C'est ma saucisse qui a hurlé.
Revenir en haut Aller en bas
http://vuesubjective.org/Garywiss/
Empty
Mangeur de manettes Lv 65
Mangeur de manettes Lv 65


Nombre de messages : 16363
Age : 30

MessageSujet: 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 Nerd Sang
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 ! Wink

Ca a l'air plus long à faire au début mais finalement je pense que ce sera un fameux gain de temps.

____________
Revenir en haut Aller en bas
http://e-magination.jeun.fr
Contenu sponsorisé




MessageSujet: Re: Programmation (le retour du topic des geeks qui se lavent pas, ou peu)   Aujourd'hui à 21:01

Revenir en haut Aller en bas
 
Programmation (le retour du topic des geeks qui se lavent pas, ou peu)
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 12Aller à la page : 1, 2, 3 ... 10, 11, 12  Suivant

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
E-magination :: LE VILLAGE ~ Forums de la communauté et de discussions ~ :: La Taverne-
Sauter vers: