Pages : 1
#1 Le 17/04/2008, à 10:25
- fred2k8
problèmes avec ruby
bonjour,
j'apprends ruby avec l'excellent tutoriel dispo ici :
http://www.ruby-doc.org/docs/beginner-fr/xhtml/
j'arrive à faire tous les exemples et j'ai fini le tutoriel. J'aimerais donc commencer à créer mes propres programmes. Donc j'ai voulu faire un programme de vérification de nom. On entre son nom, puis la machine dit si c'est le bon ou pas. J'ai fait une erreur dans le code mais je ne la vois pas... pouvez vous m'éclairer ?
#!/usr/bin/ruby
puts "bonjour. entrer nom s.v.p"
nom = gets
#boucle n.1
if nom == "sefyu"
nom == true
elseif
nom == false
else
nom == false
end
#boucle n.2
if nom = false
puts "vous netes pas sefyu."
else nom = true
puts "vous etes sefyu."
end
Ruby ne donne pas d'erreur mais simplement, quel que soit le nom que je rentre, j'obtiens toujours "vous etes sefyu."
quelqu'un aurait il aussi un lien vers un tutoriel plus developpé pour que j'apprenes comment gérer des i/o sur des fichiers sur le disque ?
merci,
fred2k8
#2 Le 17/04/2008, à 12:03
- eitri
Re : problèmes avec ruby
Salut,
dans ton script tu confonds l'assignation de valeur via "=" et le test de condition qui est "=="
if truc == valeur
instruction
end
regarde ici
if nom == "sefyu"
nom == true
elseif
et là
if nom = false
puts "vous netes pas sefyu."
else nom = true
puts "vous etes sefyu."
end
sinon ton traitement des conditions
est pas très clair:
if nom == "sefyu"
nom == true
elseif
nom == false
else
nom == false
end
essaye de simplifier
soit le nom est le bon
nom= true
sinon
nom=false
simplifies ton script.
Hors ligne
#3 Le 17/04/2008, à 12:36
- eitri
Re : problèmes avec ruby
Un petit truc que j'ai oublié:
la valeur que tu récupères dans nom via gets, se terminera par "\n".
Pour obtenir la valeur désirée sans "\n", il faut que tu appliques la méthode chomp
à la variable nom. Si tu ne fais pas cela tes tests seront faussés.
Hors ligne
#4 Le 17/04/2008, à 12:53
- fred2k8
Re : problèmes avec ruby
Salut,
merci pour ta réponse. J'ai tenté d'améliorer et de simplifier mon code mais cela ne fonctionne toujours pas :-/ :
#!/usr/bin/ruby
puts "bonjour. entrer nom s.v.p"
nom = gets
#boucle n.1
if nom == "sefyu"
puts " SEFYU ! "
elseif nom != "sefyu"
puts "NO SEFYU !"
end
pourrais tu me donner la solution s.t.p ?
Sinon, j'ai un autre problème. J'ai réussi à programmer un jeu du chiffre :
l'ordinateur choisit un chiffre au hasard entre 0 et 10 et on doit le deviner. Malheureusemeni, on a qu'une seule chance mais il fonctionne...
puts "devinez le chiffre entre 1 et 3"
chiffre = gets.to_i
alea = rand(1-3)
if chiffre == alea
puts "trouvé !"
elsif chiffre != alea
puts "faux !"
end
J'ai essayé de programmer une version améliorée qui dit "plus".. "moins" selon le chiffre. seulement, cela ne fonctionne pas.
(idée du logiciel : l'ordinateur prend un chiffre au hasard- l'utilisateur en écrit un - si c'est le bon : bravo ; si c'est moins : moins si c'est plus : plus'
quelqun pourrait il me donner le code pour que je comprenne ?
merci a+
#5 Le 17/04/2008, à 13:23
- eitri
Re : problèmes avec ruby
T'y étais presque:
deux petits trucs sur ton code:
if nom == "sefyu"
puts " SEFYU ! "
elseif nom != "sefyu"
puts "NO SEFYU !"
end
tu n'as pas besoin d'utiliser elseif ici puisque soit le nom est bon soit il ne l'est pas.
Voici une solution:
#!/usr/bin/ruby
puts "bonjour. entrer nom s.v.p"
nom = gets
if nom.chomp == "sefyu"
puts "vous êtes sefyu"
else
puts "vous n'êtes pas sefyu"
end
sinon il y a le truc avec gets il faut que tu traites toujours la chaîne retournée par gets avec chomp (sauf si tu sait ce que tu fais).
regarde:
#!/usr/bin/ruby
puts "bonjour. entrer nom s.v.p"
nom = gets
if nom == "sefyu"
puts "vous êtes sefyu"
else
puts "vous n'êtes pas sefyu"
end
Si tu tapes sefyu, le script te diras "vous n'êtes pas sefyu"
avec ce code la ça fonctionnera:
#!/usr/bin/ruby
puts "bonjour. entrer nom s.v.p"
nom = gets
if nom == "sefyu\n"
puts "vous êtes sefyu"
else
puts "vous n'êtes pas sefyu"
end
Soit tu utilises chomp sur la chaîne retournée par gets soit tu ajoutes "\n" à la valeur qui sera comparée à la chaîne retournée par gets.
Sinon pour l'autre question :
#!/usr/bin/ruby
puts "devinez le chiffre entre 1 et 10"
alea = rand(1-10)
while (1)
chiffre = gets.to_i
if chiffre == alea
puts "trouvé !"
exit
else if chiffre < alea
puts "plus !"
else
puts "moins!"
end
end
end
Hors ligne
#6 Le 17/04/2008, à 13:35
- fred2k8
Re : problèmes avec ruby
merci de ta réponse. il yu a juste un truc que je ne comprends pas. pour le troisième jeu pourquoi il y a 3 'end' ? un seul ne suffit pas ?
a+
Hors ligne
#7 Le 17/04/2008, à 13:41
- eitri
Re : problèmes avec ruby
Non regarde bien le code, il ya une boucle while et deux conditions .
#!/usr/bin/ruby
puts "devinez le chiffre entre 1 et 10"
alea = rand(1-10)
while (1)
chiffre = gets.to_i
if chiffre == alea //première condition
puts "trouvé !"
exit
else if chiffre < alea //deuxième condition
puts "plus !"
else
puts "moins!"
end //fin de la deuxième condition
end //fin de la première condition
end //fin de while
Hors ligne
#8 Le 17/04/2008, à 14:10
- fred2k8
Re : problèmes avec ruby
ok, merci, j'ai compris. maintenant j'aimerais passer à la vitesse supérieure et créer un programme "INTERACTIF" pour faire un jeu style space invader. jusque là qund j'utilise gets je dois appuyer sur "ENTER". Comment puis je faire pour simplement une touche?
Hors ligne
#9 Le 17/04/2008, à 15:14
- eitri
Re : problèmes avec ruby
Ta question était intéressante.
Après quelques recherches, il semblerait que ce n'est pas possible avec ruby ou peut-être avec le gem la termios :
http://raa.ruby-lang.org/project/ruby-termios/
De plus il faut aussi que tu envisages d'utiliser des threads. Au moins deux, un pour détecter les évènements issus du clavier et un autre qui contient les routines d'actions en fonction de ces évènements.
Un lien pour les threads sous ruby:
http://www.624opa.pascal.hostingrails.c … -sous-ruby
Mais bon le mieux se serait de faire ça en C ou C++ via curses regarde cette page:
http://www.presence-pc.com/forum/ppc/Pr … 1318-1.htm
Hors ligne
#10 Le 19/04/2008, à 13:48
- fred2008
Re : problèmes avec ruby
Bonjour,
Merci de ta réponse.
J'ai en fait commencé par vouloir apprendre le C, mais je n'ai pas trouvé de tutoriel très simple. Je trouve aussi que dans ce langage, il faut écrire beaucoup pour arriver à pas grand chose. Ruby a en fait été le langage de programmation avec lequel j'ai tout de suite réussi à faire des petits programmes amusants. Mon projet actuel est de faire un jeu d'aventure avec des descriptions. Seulement, j'ai l'impression que la façon dont je code (sur un autre forum, on m'a dit que mon code ressemblait à du BASIC) n'est pas très indiquée. Quelqun aurait il un lien vers un tutoriel expliquant bien ? J'aimerais aussi réaliser des interfaces graphiques.
A bientôt
Pages : 1