Jeu "le lebyrinthe"
snif -
J'ai projet demandant l'écriture du script en shell sh du jeu "le labyrinthe": un joueur s identifie, a un nombre de vies et devra passer d une étape du jeu la suivante en répondant à des questions, énigmes.... Il y a une seule entrée mais pluseurs sorties sont envidageables.
Je voudrais que vous me donniez le premier coup de pouce pour commencer l'écriture de ce script.
- Jeu "le lebyrinthe"
- 94 degrés jeu - Télécharger - Divers Jeux
- Jeu logo - Télécharger - Jeux vidéo
- Jeu java - Télécharger - Jeux vidéo
- Jeu zuma - Télécharger - Jeux vidéo
- Jeu de guerre gratuit - Télécharger - Jeux vidéo
5 réponses
Un script shell sh est envisagé pour un jeu labyrinthe où un joueur s'identifie, dispose de vies et passe d'une pièce à l'autre en répondant à des énigmes, avec une entrée unique et plusieurs sorties. Des limitations du shell sh et de Bash sont rappelées, notamment l'absence de tableaux et de structures de listes chaînées, ce qui conduit à privilégier des fichiers pour sauvegarder les états et des scripts modulaires. Des pistes pratiques visent l'utilisation de source pour inclure des scripts, la gestion des sorties par codes de retour et des énigmes aléatoires via scripts séparés appelés par ./projet, tout en corrigeant l'intervalle RANDOM.
https://openclassrooms.com/fr/courses/43538-reprenez-le-controle-a-laide-de-linux/43394-les-conditions
Bonne chance
Le tutoriel que tu indiques concerne Bourne Again Shell (bash), alors que notre ami snif parle, apparemment, du Bourne Shell (sh).
bash comportant des d'extensions au shell qui sont des "bashisms", je le dirigerai plutôt vers une ressource qui lui permettre d'écrire un code portable, comme :
http://fr.lang.free.fr/cours/Shell_v2.0.pdf
C'est un bon document en français, qui part de la syntaxe sh, et aborde les particularités de shells plus évolués comme bash ou ksh.
Par exemple, utiliser sh ne lui permettra pas d'intégrer des variables dimensionnées (tableaux) dans son script. Cela le limite aux variables simples.
Dal
En fait j'ai indiqué à snif ce tutoriel car pour moi une grande partie de la syntaxe sh et bash reste la même et son exercice est suffisamment simple pour qu'il n'ait pas à utiliser des choses "évoluées" en bash qui le confronterait justement aux nuances entre bash et sh, et parce que vue la question, snif devrait à mon avis commencer par s'imprégner de la logique shell en lisant un cours ou un tutoriel.
Ceci dit, tu as parfaitement raison de signaler qu'il devrait plutôt se baser sur un tutoriel sur "sh" s'il venait à manipuler des choses "évoluées".
En tout cas, merci pour ta vigilance !
voilà j'ai ecrit un petit script pour le jeu "le compte est bon", toutefois ça se plante.
#!/bin/sh
a=5
b=3
c=2
r=10
echo "voici vos entiers de base:"
echo "a=$a"
echo "b=$b"
echo "c=$c"
echo "saisissez l'operation arithmétique utilisant ces entiers afin d'avoir le résultat 5,5."
echo "l'operation devra etre de la forme a operation b operation c"
read resultat
k=$(expr'resultat')
if [$k -eq r]
then
echo "touché, vus avez 4 pts de plus "
else
echo "oups, raté. vs avez 4 pts de moins."
fi
>>je rentre la bonne opération arithmétique qui est a+b+c et comme réponse, le terminal me renvoie ce code erreur:
""
~/..../ : 16: resultat not found
expr: missing operand
try 'expr --help' for more information
[:23:missing]
oups, raté, vs avez 4 pts de moins. ""
pouvez vous m'eclaircir sur ce code.
voilà j'ai fait un petit effort et j'ai essayé de corriger un peu mon script:
#!/bin/sh
a=5
b=3
c=2
r=10
echo "voici vos entiers de base:"
echo "a=$a"
echo "b=$b"
echo "c=$c"
echo "saisissez l'operation arithmétique utilisant ces entiers afin d'avoir le résultat $r."
echo "l'operation devra etre de la forme a operation b operation c"
read resultat
#je devrais peut etre mettre une condition telle que les opérandes soient encadrées avec les {} afin que ça soit calculé dans le expr: si c'est une operande; la remplacer avec {op}, sinon, on passe.
#on pourrait considerer les composantes de la var resultat comme les composantes d'un tableau; si tab[i]==(a || b || c) faire tab[i]==({a} || {b] || {c}) sinn i<-i+1. reste, comment l'ecrire en shell sh.!!!!!
$k=$((expr'$resultat'))
if [$k -eq $r]
then
echo "touché, vous avez 4 pts de plus "
else
echo "oups, raté. vous avez 4 pts de moins."
fi
en fait j'ai essayé les modifications que vous m'aviez proposées mais je tombe toujours sur la meme erreur.
et une autre question: vous m'aviez dit que expr était inutile, chose que je en comprends pas. dans ce script; l utilisateur est sencé entrer l'expression a+b+c, si on n'utilise pas l'expression expr; comment peut-on veifier si cette expression vérifie bien le compte demandé ou non???!
#!/bin/sh a=5 b=3 c=2 r=10 echo "voici vos entiers de base:" echo "a=$a" echo "b=$b" echo "c=$c" echo "saisissez l'operation arithmétique utilisant ces entiers afin d'avoir le résultat 5,5." echo "l'operation devra etre de la forme a operation b operation c" read resultat k=$(( resultat )) if [ $k -eq $r ] then echo "touché, vus avez 4 pts de plus " else echo "oups, raté. vs avez 4 pts de moins." fiet observe les différences avec ce que tu as écrit.
k=$(( resultat )) #le shell opère l'évaluation arithmétique if [ $k -eq $r ] #il faut des espaces à l'intérieur des crochets: [<espace><expression><espace><opérateur><espace><expression><espace>]
le shell n'est pas un sous-langage dont les règles seraient facultatives.
Télécharge la version française de l'Advanced Bash Scripting, sur tldp.org!
en fait, l'utilisateur devra me renter une expression du genre "a+b+c" ou encore "5+3+2"; le script devra vérifier si cette opération arithmétique aura comme résultat ce que contient la variable r=10. et non de rentrer juste un nombre et vérifier si c'est le même contenu dans r.
en exécutant le script que vous m'aviez proposé, j'ai l'erreur suivante:
/home/user/projet/CEB2: 16; Illégal number: a + b + c
et ce que ce soit j'utilise les lettres (a,b,c) ou les chiffres (5,3,2) et que j'introduise ou pas des espaces entre les opérandes et les opérations.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question