Ruby Warrior – Tâtez de l’intelligence artificielle et de la programmation Ruby en vous amusant

Voilà une trouvaille bien sympathique glanée chez Korben, qui va vous permettre de tâter de l’intelligence artificielle et de la programmation Ruby tout en vous amusant. Le but du jeu est simple et consiste en gros à mener votre vaillant guerrier en haut d’une tour, à l’aide des compétences en programmation que vous possédez ou que vous allez acquérir au fil des niveaux. Pour comprendre le principe il suffit de jeter un œil à la capture ci-dessus, où vous pouvez voir votre guerrier trépigner d’impatience à l’idée de monter les marches situées à droite de l’écran. Pour qu’il puisse le faire il va falloir que vous entriez la portion de code adéquate dans la console située plus bas, ce qui vous mènera au niveau suivant.

Comme on n’est pas vache dans l’étable je vais vous aider un peu à l’aide de la capture ci-dessous, où vous pouvez voir qu’une nouvelle ligne a été ajoutée au code de base :

L’instruction « warrior.walk! » a eu pour but d’indiquer au personnage qu’il était temps de se mettre en marche et à ce stade du jeu le level 1 sera bouclé. La prochaine étape vous mènera à un autre niveau où vous devrez marcher et tabasser une drôle de bestiole. Un autre instruction a donc été ajoutée « warrior.feel », mais je vous le dis tout de suite celle-ci ne sera pas suffisante pour clore le level. Vous devrez trouver le reste par vous même :D …

Rassurez-vous car même si vous n’y connaissez rien vous aurez toujours de quoi trouver la solution, grâce à une fenêtre apparaissant à la fin d’un test (Need a CLUE) ou en vous rendant sur cette page.

Si vous voulez en voir un peu plus vous pouvez également visionner cette petite vidéo :

Alors j’ai vraiment trouvé le concept très sympa, car il permet de mieux comprendre certain aspects de l’IA et qu’il permet en prime d’apprendre un langage de programmation de manière ludique.

Si ça vous tente vous pouvez vous y mettre en y jouant en ligne, ou encore mieux, en l’installant sur votre distributions GNU/Linux à l’aide des sources. Oui, c’est libre \o/

Amusez-vous bien et bonne prog.

PS : L’histoire ne nous dit pas si une princesse nous attends en haut de la tour, alors si vous y arrivez ne nous laissez pas dans l’ignorance et venez nous rencarder :)


12 Responses

  1. maogouste 19 juillet 2014 / 2 h 37 min

    Comme d’habitude, en elaguant le code , je suis arive a :

    Level 1: S
    Level 2: A
    Level 3: S
    Level 4: S
    Level 5: A
    Level 6: S
    Level 7: S
    Level 8: S
    Level 9: S

    La structure reste la meme, mais il y amoins de « gras »

    Je vais dormir, la.

  2. maogouste 19 juillet 2014 / 0 h 41 min

    Apres avoir fait les etapes une a une , on peut relancer le script pour tout tenter en une fois.

    Le scoring se fait avec une echelle de SABCDF. S pour super, jusqu’a F pour ce que vous voulez.

    J’ai :

    Level 1: S
    Level 2: B
    Level 3: A
    Level 4: A
    Level 5: A
    Level 6: A
    Level 7: A
    Level 8: S
    Level 9: A

    avec

    class Player
    def play_turn(warrior)

    @myreverselook = warrior.look(:backward)

    for i in 0..2
    non_nothing= »#{@myreverselook[i]} »
    @sens = :backward
    if non_nothing != « nothing »
    break
    end
    end

    if non_nothing == « nothing » or non_nothing == « wall »
    @mylook = warrior.look
    for i in 0..2
    non_nothing= »#{@mylook[i]} »
    @sens = :forward
    if non_nothing != « nothing »
    break
    end
    end
    end

    case non_nothing
    when « nothing »
    if warrior.health < 20
    warrior.rest!
    else
    warrior.walk!(@sens)
    end
    when "wall"
    if warrior.feel(@sens).empty?
    warrior.walk!(@sens)
    else
    warrior.pivot!
    end
    when "Sludge"
    if warrior.feel(@sens).empty?
    if warrior.health < 20
    warrior.rest!
    else
    warrior.walk!(@sens)
    end
    else
    warrior.attack!
    end
    when "Wizard", "Thick Sludge","Archer"
    warrior.shoot!(@sens)
    when "Captive"
    if warrior.feel(@sens).empty?
    warrior.walk!(@sens)
    else
    warrior.rescue!(@sens)
    end
    else
    puts "Si t'es la, c'est que t'as merde un truc…"
    puts " CORRIGE"
    end
    end
    end

  3. maogouste 19 juillet 2014 / 0 h 19 min

    Concernant la princesse cachee dans le donjon, j’ai eu cette reponse en version facile :

    CONGRATULATIONS! You have climbed to the top of the tower and rescued the fair maiden Ruby.

    Je pense que ce repond a la question.

    PS: en version locale, car flash me mange la batterie a un rhythme …
    PPS: pour compiler le code ruby, il suffit de lire les recommendations dans le fichier README. On reste en ruby. c’est independant des versions de linux.

    • Noireaude 19 juillet 2014 / 0 h 26 min

      Merci, c’est cool. Au moins on est fixés :)

  4. red 18 juillet 2014 / 13 h 06 min

    Huuum, je vais l’installer parce que dans le navigateur je n’arrive pas a faire bouger mon perso !

    En tout cas c’est une belle découverte.

    • red 18 juillet 2014 / 13 h 10 min

      Double poste désolé !

      Peux-tu m’expliquer comment le compiler sous arch ?
      Voici ce que j’ai fait:

      1.git clone https://github.com/ryanb/ruby-warrior
      2. cd ruby-warrior
      3. sudo makepkg –asroot

      => ==> ERREUR : PKGBUILD n’existe pas.

      • Noireaude 18 juillet 2014 / 21 h 51 min

        Désolé, je suis une tanche en compilation :)

      • Naonao 19 juillet 2014 / 0 h 30 min

        C’est du ruby, y’a rien à compiler…
        Sans vouloir paraître désagréable, il y a un fichier readme, il n’est pas là pour rien.

        Installe ruby sur ton Arch ( sur ton terminal ça doit être un truc du genre « sudo pacman -S ruby » ) et la gem rubywarrior ( « gem install rubywarrior » ) et c’est réglé.

        Documentez-vous un minimum avant de vouloir faire n’importe quoi ! ;) Si vous cherchez à compiler du ruby c’est que vous ne savez clairement pas ce que c’est, être curieux c’est bien, mais soyez curieux de façon efficace, sinon ça sert pas à grand chose.

        • red 19 juillet 2014 / 13 h 57 min

          Tu parais désagréable et autoritaire mais c’est pas méchant j’imagine. En tout cas merci. J’ai quelques bases en C et je pensais que c’était pareil : fallait compiler.

          • Noireaude 19 juillet 2014 / 19 h 33 min

            Si j’en crois le smilley je dirais que ce n’est pas méchant, mais juste un peu agacé. Après c’est un peu mérité quand même car j’ai eu la flemme de le télécharger pour voir et que tu n’as pas lu le readme ;)

Comments are closed.