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

VB.NET Discussion :

Analyse syntaxique & calcul d'une expression


Sujet :

VB.NET

  1. #1
    Membre actif
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Janvier 2013
    Messages : 57
    Par défaut Analyse syntaxique & calcul d'une expression
    Bonjour


    J'ai pour projet la création d'un petit jeu en 2D dans lequel le joueur doit programmer une IA ou en modifier une existante.
    Avant de commencer, mon ami Google n'ayant guerre pus m'aider beaucoup je viens ici quérir votre aide, ne sachant par où commencer...

    Plus concrètement je cherche avec difficultés a réaliser les choses suivantes, toute aide est la bienvenue (idées, exemples, "ce n'est pas possible", etc.) :
    -> calculer le résultat d'une expression mathématique (exemple : '5+5/9*(2+1)' )
    - avec la possibilité d'y insérer des fonctions prédéfinies ou définissables par l'utilisateur (exemple 'Sin(4*ACos(14))' )
    - avec la possibilité d'y insérer des variables (exemple 'Sin((i*4)^2)' )
    -> exécuter des lignes de codes façon vb avec des fonctionnalités simples (comme dans 'Algobox') dont :
    - des evenements déclenché par mon jeu tel Tick(toutes les x milisecondes) ou Enemy_detected(quand un ennemi est détecte) (il sagirait de fonctions automatiquement lues si elles sont nommées correctement par l'utilisateur)
    - SI SINON_SI SINON FIN_SI (If Elseif else end_if)
    - des etiquettes et des ALLER_A (: GOTO)
    - TANT_QUE FIN_TANT_QUE (While)
    - POUR (For/For each) (CHAQUE/i allant de n à k)
    - j'aime bien aussi le select case très pratique (mais je n'en connais pas la traduction française)
    - des fonctions et procédures (ou seulement les fonctions étant donné qu'elles peuvent servir de procédure en vb)
    - définition de variables de types suivants : String, Integer, ListOfString, ListOfInteger, BOOLEAN

    Mème si je ne me sent pas le courage de mener ce projet a bout, je suis tout de même curieux de savoir comment on peut faire cela

    voila tout, merci d'avance pour vos réponses éventuelles et bonne journée

  2. #2
    Membre très actif
    Avatar de charouel
    Homme Profil pro
    Freelance
    Inscrit en
    Mars 2009
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 618
    Billets dans le blog
    9
    Par défaut
    c'est simple tu na qu'a définir une language et un niveau de complexité
    Et avec la bibliothèque System.Math tout est possible
    https://msdn.microsoft.com/fr-fr/lib...v=vs.110).aspx

  3. #3
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2015
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2015
    Messages : 35
    Par défaut
    J'imagine que tu découpes ton String avec les opérateurs de Math ((),*,+,-,/,^...)

    Puis tu calcules l’élément avant l'opérateur avec celui d'après en respectant l'ordre des opérations :

    Exemple : 5*6-(4+7*4)*4
    Tableau : 5,6,4,7,4,4
    Ordre des opérations :

    Paranthèses et multiplication : 7*4=28
    Paranthèses et addition = 28+4=32
    Multiplication=30-128=-98

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    l'avantage c'est qu'il y a des moyens de faire ça sans s'embeter à lire ce que l'utilisateur à écrit

    le plus simple c'est si tu as accès à une base de données, en lui demandant select (5 + @var1) * 3 il te répondra directement
    sans base ca peut se faire aussi avec la classe datatable (je n'ai pas la syntaxe exacte mais ca a déjà été développé sur ce forum)

    dans ces 2 cas tu peux aussi faire un peu de replace avant si tu souhaites avoir une syntaxe spéciale (genre pas le select déjà)


    après il y a la compilation de code à la volée, tu donnes un string avec une fonction qui contient le code, tu la compiles puis tu l'appelles (codedom, vbcodeprovider)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre expérimenté Avatar de ShadowTzu
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Juin 2005
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Juin 2005
    Messages : 243
    Par défaut
    Pour la compilation à la volée, ceci pourrait t'aider: https://github.com/ShadowTzu/RTCNET

Discussions similaires

  1. Réponses: 3
    Dernier message: 19/06/2011, 13h54
  2. Analyse et calcul d'une expression mathématique
    Par Tipoun dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 31/03/2008, 20h47
  3. Réponses: 2
    Dernier message: 28/12/2006, 11h31
  4. Réponses: 2
    Dernier message: 20/11/2006, 21h19
  5. Réponses: 3
    Dernier message: 12/11/2006, 19h31

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