Script.sh ?
Fermé
mino2z
Messages postés
1
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
8 juin 2007
-
8 juin 2007 à 11:49
FireCode Messages postés 1 Date d'inscription vendredi 8 juin 2007 Statut Membre Dernière intervention 8 juin 2007 - 8 juin 2007 à 23:08
FireCode Messages postés 1 Date d'inscription vendredi 8 juin 2007 Statut Membre Dernière intervention 8 juin 2007 - 8 juin 2007 à 23:08
1 réponse
FireCode
Messages postés
1
Date d'inscription
vendredi 8 juin 2007
Statut
Membre
Dernière intervention
8 juin 2007
8 juin 2007 à 23:08
8 juin 2007 à 23:08
Salut mino2z,
Je me suis amusé à développer ton script, je ne sais pas s'il est trop tard il y a peut-être des erreurs:
le script:
Le fichier des capitales "capitales.dat":
Voilà, dis moi ce que t'en pense ...
Je me suis amusé à développer ton script, je ne sais pas s'il est trop tard il y a peut-être des erreurs:
le script:
#! /bin/bash # <CONFIG/> #------------------------------------ SCR_NAME=`basename "$0"` DATA_DIR="`pwd`" DATA_FILE="${DATA_DIR}/capitales.dat" #------------------------------------ CAP_OPT="-c" CTR_OPT="-p" BTL_OPT="-b" #------------------------------------ MODE_CAP=0 MODE_CTR=0 #------------------------------------ MODE_BTL=0 ROUND_NB=0 PL1_NAME= PL2_NAME= #------------------------------------ # </CONFIG> if [ ! -f "$DATA_FILE" ]; then echo "${SCR_NAME}: fichier source \`~/`basename $DATA_FILE`' absent !" 2>&1 exit -1 else if [ ! -r "$DATA_FILE" ]; then echo "${SCR_NAME}: accès à \`~/`basename $DATA_FILE`' refusé !" 2>&1 exit -1 fi fi function usage() { echo "Usage: $SCR_NAME [ MODE ]" echo -e "\nModes:" echo "$CAP_OPT, lancer le mode capitale" echo "$CTR_OPT, lancer le mode pays" echo "$BTL_OPT, lancer le mode battle" } function pline() { echo "----------------------------" ;} # ========> SET PARAMETERS <========== if [ $# -eq 0 ]; then echo "${SCR_NAME}: paramètre manquant !" 2>&1 usage exit -1 fi while [ $# -gt 0 ]; do case "$1" in $CAP_OPT) if [ $MODE_CAP -ne 0 -o $MODE_CTR -ne 0 ]; then echo "${SCR_NAME}: paramètre non valide !" 2>&1 usage exit -1 else MODE_CAP=1 fi ;; $CTR_OPT) if [ $MODE_CAP -ne 0 -o $MODE_CTR -ne 0 ]; then echo "${SCR_NAME}: paramètre non valide !" 2>&1 usage exit -1 else MODE_CTR=1 fi ;; $BTL_OPT) if [ $MODE_CAP -ne 0 -o $MODE_CTR -ne 0 ]; then echo "${SCR_NAME}: paramètre non valide !" 2>&1 usage exit -1 else MODE_BTL=1 echo -e "\nMode battle ..." pline while : ; do printf "Entrez le nombre de partie: " read ROUND_NB test $ROUND_NB -gt 0 2> /dev/null if [ $? -ne 0 ]; then echo "Nombre \`$ROUND_NB' invalide !" else pline break fi done for PL_NB in 1 2; do while : ; do printf "Entrez le pseudo du joueur n${PL_NB}: " case $PL_NB in 1)read PL1_NAME test -n "$PL1_NAME" && pline && break ;; 2)read PL2_NAME test -n "$PL2_NAME" && pline && break ;; esac done done fi ;; -h|--help) usage exit 0 ;; *)echo "${SCR_NAME}: paramètre \`$1' non valide !" 2>&1 usage exit -1 ;; esac shift done function choice_mode() { while : ; do printf "Choisi un mode joueur ${1},\ncapitale: mode [1]\npays: mode [2]\nmode: " read RTR_MODE test $RTR_MODE -ge 1 -a $RTR_MODE -le 2 2> /dev/null if [ $? -ne 0 ]; then echo "Mode \`$RTR_MODE' non valide !" else break fi done return $RTR_MODE } function play_mode() { PLM_CAP=`cat "$DATA_FILE" | gawk -v CL=$CUR_LINE '(NR == (CL+1)) { sub("CAP:",""); printf("%s", toupper($0)); exit 1 }'` PLM_CTR=`cat "$DATA_FILE" | gawk -v CL=$CUR_LINE '(NR == CL) { sub("COUNTRY:",""); printf("%s",toupper($0)); exit 1 }'` test -n "$2" && PNAME_STR="Joueur $2, " case $1 in # CAPITAL MODE 1)echo -e "\nMode capitale ..." pline while : ; do printf "${PNAME_STR}Quelle est la capitale de: $PLM_CTR\nréponse: " read PLM_PLAYER_CAP test -n "$PLM_PLAYER_CAP" && break done PLM_PLAYER_CAP=`printf "$PLM_PLAYER_CAP" | gawk '{ printf("%s",toupper($0))}'` if [ "$PLM_PLAYER_CAP" == "$PLM_CAP" ]; then pline echo "Bonne réponse :p" pline else pline echo "Faux :(, c'était la capitale: $PLM_CAP" pline fi ;; # COUNTRY MODE 2)echo -e "\nMode pays ..." pline while : ; do printf "${PNAME_STR}Quel est le pays de la capitale: $PLM_CAP\nréponse: " read PLM_PLAYER_CTR test -n "$PLM_PLAYER_CTR" && break done PLM_PLAYER_CTR=`printf "$PLM_PLAYER_CTR" | gawk '{ printf("%s",toupper($0))}'` if [ "$PLM_PLAYER_CTR" == "$PLM_CTR" ]; then pline echo "Bonne réponse :p" pline else pline echo "Faux :(, c'était le pays: $PLM_CTR" pline fi ;; esac let $((CUR_LINE += 2)) } if [ $MODE_BTL -ne 0 ]; then # MODE BATTLE CUR_LINE=1 CURR_RND=0 while [ $CURR_RND -ne $ROUND_NB ]; do echo "PARTIE no `expr $CURR_RND + 1`:" pline test $CUR_LINE -ge `wc -l "$DATA_FILE" | gawk '{print $1}'` && CUR_LINE=1 # PLAYER 1 choice_mode "$PL1_NAME" CURR_MODE=$? play_mode $CURR_MODE "$PL1_NAME" # PLAYER 2 choice_mode "$PL2_NAME" CURR_MODE=$? play_mode $CURR_MODE "$PL2_NAME" let $((CURR_RND += 1)) done else CUR_LINE=`expr $RANDOM % $(wc -l capitales.dat | gawk '{ print $1}')` case $CUR_LINE in *0) CUR_LINE=1 ;; *2|*4|*6|*8) let $((CUR_LINE -= 1)) ;; esac if [ $MODE_CAP -ne 0 ]; then play_mode "1" else if [ $MODE_CTR -ne 0 ]; then play_mode "2" fi fi fi exit 0
Le fichier des capitales "capitales.dat":
COUNTRY:France CAP:Paris COUNTRY:Allemagne CAP:Berlin COUNTRY:Espagne CAP:Madrid COUNTRY:Italie CAP:Rome COUNTRY:Portugal CAP:Lisbonne COUNTRY:Royaume-uni CAP:Londre
Voilà, dis moi ce que t'en pense ...