Bonjour,
Je vous expose mon problème.
Je voudrais pouvoir exécuter le même script sur 2 ordinateurs a la fois, et ce en même temps.
Le problème c'est que lorsque je met une valeur dans une variable, elle n'existe que pour un seul de ces deux ordinateurs.
Comment faire pour que la valeur que je met dans la variable soit reconnue lors de l'exécution simultanée du script?
peut on écrire la liste des variables dans un fichier et faire que le script la lise à chaque moment où il en a besoin?
# Le script, il sent fort de la bouche ?
Posté par Frederic Brugmans . Évalué à 2.
Ce serait nettement plus simple avec
[^] # Re: Le script, il sent fort de la bouche ?
Posté par deumdeum . Évalué à 1.
j explique un peu.
C'est un programme d'othello (le jeu, appellé aussi reversi) que j'aimerais etre jouable sur 2 machines à la fois
il commence à la fonction attente.
#!/bin/bash
A1=".";A2=".";A3=".";A4=".";A5="." # etc........... -> H8="."
tableau()
{
echo "-------------------------------------"
echo "| | A | B | C | D | E | F | G | H |"
echo "-------------------------------------"
echo "| 1 | $A1 | $B1 | $C1 | $D1 | $E1 | $F1 | $G1 | $H1 |"
echo "-------------------------------------"
echo "| 2 | $A2 | $B2 | $C2 | $D2 | $E2 | $F2 | $G2 | $H2 |"
echo "-------------------------------------"
echo "| 3 | $A3 | $B3 | $C3 | $D3 | $E3 | $F3 | $G3 | $H3 |"
echo "-------------------------------------"
echo "| 4 | $A4 | $B4 | $C4 | $D4 | $E4 | $F4 | $G4 | $H4 |"
echo "-------------------------------------"
echo "| 5 | $A5 | $B5 | $C5 | $D5 | $E5 | $F5 | $G5 | $H5 |"
echo "-------------------------------------"
echo "| 6 | $A6 | $B6 | $C6 | $D6 | $E6 | $F6 | $G6 | $H6 |"
echo "-------------------------------------"
echo "| 7 | $A7 | $B7 | $C7 | $D7 | $E7 | $F7 | $G7 | $H7 |"
echo "-------------------------------------"
echo "| 8 | $A8 | $B8 | $C8 | $D8 | $E8 | $F8 | $G8 | $H8 |"
echo "-------------------------------------"
}
convertisseur()
{
# convertit les A1 en 11,...
}
converse()
{
# converti les 11 en A1
}
joue()
{
read coul < couleur
if [ "$coul" = "n" ]
then
aff="x"
paff="O"
echo b > couleur
else
echo n > couleur
aff="O"
paff="x"
fi
convertisseur
line=`expr $shoot / 10`
row=`expr $shoot % 10`
cased=`expr 8 - $row`
caseg=`expr $row - 1`
caseh=`expr $line - 1`
caseb=`expr 8 - $line`
if [ $cased -ge $caseh ]
then casehd=$caseh
else casehd=$cased
fi
if [ $cased -ge $caseb ]
then casebd=$caseb
else casebd=$cased
fi
if [ $caseg -ge $caseb ]
then casebg=$caseb
else casebg=$caseg
fi
if [ $caseg -ge $caseh ]
then casehg=$caseh
else casehg=$caseg
fi
echo $cased #débug
echo $paff #débug
flag=0
i=1
shoot3=$shoot
while [ $i -le $cased ] #retourne les cases à droite
do
point=`expr $shoot + $i`
conv=$point
converse
if [ "$( eval echo $conv )"=="$paff" ]
then
flag=`expr $flag + 1`
else
if [ $( eval echo $conv )==. ]
then
break
else
if [ $( eval echo $conv )==$aff && $flag -ge 1 ]
then
j=1
while [ $j -lt $flag ]
do
shoot3=`expr $shoot3 + 1`
conv=$shoot3
converse
eval "$conv=$aff"
done
fi
fi
fi
i=`expr $i + 1`
done
eval "$shoot2=$aff"
clear
tableau
sleep 3
echo l>who
sleep 2
suite
}
attente()
{
E4=x
E5=O
D4=O
D5=x
clear
echo "Attente de l'autre joueur"
i=0
read var2 < file
if [ "$var2" = "r" ]
then
echo b>who
echo rg > file
coul="b"
echo b > couleur
pascoul="n"
echo "vous etes blanc - vos pions sont [O]"
sleep 2
suite
else
echo r > file
while i=0
do
sleep 3
echo "attente"
read joueur < file
if [ "$joueur" = "rg" ]
then
echo "vous etes noir - vos pions sont [x]"
break
fi
done
suite
fi
}
tir()
{
clear
tableau
echo w > who
echo "Où voulez vous jouer? Ecrivez en majuscule (exemple: X4)"
read shoot
if [ "$shoot" = "q" ]
then
exit 0
else
shoot2=$shoot
eval "$shoot=$shoot2"
joue
fi
}
suite ()
{
read var1<who
if [ "$var1" = "$coul" ]
then
echo w >who
tir
else
echo "Attendez que l'autre joueur finisse"
i=0
while i=0
do
sleep 1
read attent<who
echo $attent
if [ "$attent" = "l" ]
then
echo good
tir
fi
done
fi
}
attente
[^] # Re: Le script, il sent fort de la bouche ?
Posté par tontonflingueur . Évalué à 1.
http://web.purplefrog.com/~thoth/netpipes/ftp/(...)
Je ne sais pas dans quelle mesure il existe des packages pour les différentes distributions. Pour debian, ça a l'air d'exister pour unstable, <troll> c'est à dire celle qui devrait sortir en 2008</troll>.
Mais bon, le shell script c'est pas terrible pour faire du réseau, c'est même pas terrible pour la programmation tout court dès que ça devient un peu trop compliqué. En ce qui me concerne, je n'arrive jamais à me souvenir comment faire ne serait-ce que deux if imbriqués ou même une comparaison numérique, autant dire que je suis très admiratif que tu sois déjà arrivé jusqu'ici. Donc si ce n'est pas pour un exercice de style (après tout il y a bien un fou qui a réussi à implémenter sokoban en ... sed), je te conseille de passer à un langage de programmation plus adapté : perl, tcl, python, ruby, lisp, pour ne rester qu'aux langages interprétés : tu as le choix. Ils ont tous des supports réseaux, soit intégrés directement dans le langage, soit sous forme de module. Tu verras que tu souffriras beaucoup moins ...
[^] # Re: Le script, il sent fort de la bouche ?
Posté par deumdeum . Évalué à 1.
Je suis completement d accord que c'est un peu ridicule de demander de faire ca mais c est un projet de cours !!!
le shell script c est tres cool pour faire de l administration mais c est sur que quand il s agit de faire un jeu, c est une autre histoire, enfin....
si toutefois quelqu un pouvait m aider !!!!!
merci tonton
[^] # Re: Le script, il sent fort de la bouche ?
Posté par tontonflingueur . Évalué à 1.
A quoi tu as droit et à quoi tu n'as pas droit. Parce que c'est clair qu'avec du shell tout seul, tu n'arriveras jamais à partager des données entre deux machines.
Tu peux utiliser soit netpipes déjà mentionné, soit un shell distant (ssh, rsh, rlogin, rexec), soit ftp ou le mail.
Et n'oublie pas que multi-utilisateurs ça veut pas dire forcément plusieurs machines, on est sous UNIX qui est multi-utilisateurs depuis 1970.
[^] # Re: Le script, il sent fort de la bouche ?
Posté par deumdeum . Évalué à 1.
Le problème est donc que lorsque l'un des deux joueurs exécute ce script, les variables qu'il utilise sont locales à sa session. Donc l'autre joueur n'y a pas accès et vu que j'ai eu le malheur de ne pas y penser dès le début, j'ai mis dans des variables les cases du tableau dans lesquelles les joueurs jouent. Du coup quand l'un joue il ne voit pas les coups de l'adversaire.
C'est pour ça que j'espere trouver un moyen de transformer le script, par exemple en mettant dans un fichier la liste de variable utilisées, mais je ne sais pas comment faire pour que le script principal y accede et considere le contenu de ce fichier comme ses propres variables..
[^] # Re: Le script, il sent fort de la bouche ?
Posté par tontonflingueur . Évalué à 1.
> echo > fichier.tmp << EOF
> VAR1=var1
> VAR2=var2
> EOF
Pour l'écrire, et
> . fichier.tmp
pour le lire, et après tu peux accéder aux valeurs de VAR1 et VAR2 depuis ton shell. En théorie, il faut un truc pour locker le fichier (tu peux utiliser un fichier fichier.lck, par exemple) pour être sûr que l'un n'est pas en train de lire/écrire en même temps que l'autre.
En outre, il faudrait faire gaffe à la sécurité, parce que l'autre pourrait mettre des trucs méchants (genre "rm -rf $HOME/" dans fichier.tmp au pire, ou au mieux bidouiller les données de l'autre). Mais bon le fait de partager un même compte n'est pas terrible pour la sécurité de toute façon...
[^] # Re: Le script, il sent fort de la bouche ?
Posté par deumdeum . Évalué à 1.
si "othello" veut ecrire dans la variable "A1" il ecrit "A1=23" > dans le fichier "variables" et qu ensuite quand il a besoin de savoir ce qu il y a dans la variable "A1", il execute le fichier "variables" pour la lire.
ainsi au début de l execution du script:
A1=".";A2=".";.........;H8="."
puis au fur et a mesure que les joueurs jouent on passe à Xn="O" ou Xn="x" selon qui joue.
Je pense que le fait d ecrire les variables dans un fichier séparé et lire ce fichier a chaque besoin d acces aux variables est le seul moyen pour que chacun des joueurs puisse disposer des memes variables en meme temps.
[^] # Re: Le script, il sent fort de la bouche ?
Posté par death_voice . Évalué à 1.
peux tu me donner le code en complet afin de pouvoir le tester et trouver une solution ?
[^] # Re: Le script, il sent fort de la bouche ?
Posté par hackoff . Évalué à 1.
(code des fonctions ........................................)
j'en ai vraiment besoin
aboulouayacine@hotmail.com
merci
[^] # Re: Le script, il sent fort de la bouche ?
Posté par deumdeum . Évalué à 1.
Le code entier qui fonctionne (presqe)
il faut lancer le script dans 2 sessions pour qu'il fonctionne
#!/bin/bash
# Othello 2005
#
# ordre du script:
#
# attente
# suite
# tir
# tableau
# joue
# convertisseur
# convere
# suite
# .
# .
# .
#
#
#
echo "**************************************"
echo "** **"
echo "** O T H E L L O **"
echo "** **"
echo "**************************************"
echo ""
echo ""
echo "Appuyez sur pour continuer"
read startttt
echo ""
echo ""
# placement de "." dans les variables du "tableau"
echo "." >A1;echo "." >A2;echo "." >A3;echo "." >A4;echo "." >A5;echo "." >A6;echo "." >A7;echo "." >A8;echo "." >B1;echo "." >B2;echo "." >B3;echo "." >B4;echo "." >B5;echo "." >B6;echo "." >B7;echo "." >B8;echo "." >C1;echo "." >C2;echo "." >C3;echo "." >C4;echo "." >C5;echo "." >C6;echo "." >C7;echo "." >C8;echo "." >D1;echo "." >D2;echo "." >D3;echo "." >D4;echo "." >D5;echo "." >D6;echo "." >D7;echo "." >D8;echo "." >E1;echo "." >E2;echo "." >E3;echo "." >E4;echo "." >E5;echo "." >E6;echo "." >E7;echo "." >E8;echo "." >F1;echo "." >F2;echo "." >F3;echo "." >F4;echo "." >F5;echo "." >F6;echo "." >F7;echo "." >F8;echo "." >G1;echo "." >G2;echo "." >G3;echo "." >G4;echo "." >G5;echo "." >G6;echo "." >G7;echo "." >G8;echo "." >H1;echo "." >H2;echo "." >H3;echo "." >H4;echo "." >H5;echo "." >H6;echo "." >H7;echo "." >H8
tableau() # fonction qui trace le tableau
{ # on lit dans chaque fichier Xn sa valeur pour la placer dans le tableau
read A1 <A1;read B1 <B1;read C1 <C1;read D1 <D1;read E1 <E1;read F1 <F1;read G1 <G1;read H1 <H1;read A2 <A2;read B2 <B2;read C2 <C2;read D2 <D2;read E2 <E2;read F2 <F2;read G2 <G2;read H2 <H2;read A3 <A3;read B3 <B3;read C3 <C3;read D3 <D3;read E3 <E3;read F3 <F3;read G3 <G3;read H3 <H3;read A4 <A4;read B4 <B4;read C4 <C4;read D4 <D4;read E4 <E4;read F4 <F4;read G4 <G4;read H4 <H4;read A5 <A5;read B5 <B5;read C5 <C5;read D5 <D5;read E5 <E5;read F5 <F5;read G5 <G5;read H5 <H5;read A6 <A6;read B6 <B6;read C6 <C6;read D6 <D6;read E6 <E6;read F6 <F6;read G6 <G6;read H6 <H6;read A7 <A7;read B7 <B7;read C7 <C7;read D7 <D7;read E7 <E7;read F7 <F7;read G7 <G7;read H7 <H7;read A8 <A8;read B8 <B8;read C8 <C8;read D8 <D8;read E8 <E8;read F8 <F8;read G8 <G8;read H8 <H8;
# tableau a base d echo
echo "-------------------------------------"
echo "| | A | B | C | D | E | F | G | H |"
echo "-------------------------------------"
echo "| 1 | $A1 | $B1 | $C1 | $D1 | $E1 | $F1 | $G1 | $H1 |"
echo "-------------------------------------"
echo "| 2 | $A2 | $B2 | $C2 | $D2 | $E2 | $F2 | $G2 | $H2 |"
echo "-------------------------------------"
echo "| 3 | $A3 | $B3 | $C3 | $D3 | $E3 | $F3 | $G3 | $H3 |"
echo "-------------------------------------"
echo "| 4 | $A4 | $B4 | $C4 | $D4 | $E4 | $F4 | $G4 | $H4 |"
echo "-------------------------------------"
echo "| 5 | $A5 | $B5 | $C5 | $D5 | $E5 | $F5 | $G5 | $H5 |"
echo "-------------------------------------"
echo "| 6 | $A6 | $B6 | $C6 | $D6 | $E6 | $F6 | $G6 | $H6 |"
echo "-------------------------------------"
echo "| 7 | $A7 | $B7 | $C7 | $D7 | $E7 | $F7 | $G7 | $H7 |"
echo "-------------------------------------"
echo "| 8 | $A8 | $B8 | $C8 | $D8 | $E8 | $F8 | $G8 | $H8 |"
echo "-------------------------------------"
}
convertisseur() # fonction qui convertit les Xn en nn, ex: B3 -> 32
{
case $shoot in
A1) shoot=11 ;;
A2) shoot=21 ;;
A3) shoot=31 ;;
A4) shoot=41 ;;
A5) shoot=51 ;;
A6) shoot=61 ;;
A7) shoot=71 ;;
A8) shoot=81 ;;
B1) shoot=12 ;;
B2) shoot=22 ;;
B3) shoot=32 ;;
B4) shoot=42 ;;
B5) shoot=52 ;;
B6) shoot=62 ;;
B7) shoot=72 ;;
B8) shoot=82 ;;
C1) shoot=13 ;;
C2) shoot=23 ;;
C3) shoot=33 ;;
C4) shoot=43 ;;
C5) shoot=53 ;;
C6) shoot=63 ;;
C7) shoot=73 ;;
C8) shoot=83 ;;
D1) shoot=14 ;;
D2) shoot=24 ;;
D3) shoot=34 ;;
D4) shoot=44 ;;
D5) shoot=54 ;;
D6) shoot=64 ;;
D7) shoot=74 ;;
D8) shoot=84 ;;
E1) shoot=15 ;;
E2) shoot=25 ;;
E3) shoot=35 ;;
E4) shoot=45 ;;
E5) shoot=55 ;;
E6) shoot=65 ;;
E7) shoot=75 ;;
E8) shoot=85 ;;
F1) shoot=16 ;;
F2) shoot=26 ;;
F3) shoot=36 ;;
F4) shoot=46 ;;
F5) shoot=56 ;;
F6) shoot=66 ;;
F7) shoot=76 ;;
F8) shoot=86 ;;
G1) shoot=17 ;;
G2) shoot=27 ;;
G3) shoot=37 ;;
G4) shoot=47 ;;
G5) shoot=57 ;;
G6) shoot=67 ;;
G7) shoot=77 ;;
G8) shoot=87 ;;
H1) shoot=18 ;;
H2) shoot=28 ;;
H3) shoot=38 ;;
H4) shoot=48 ;;
H5) shoot=58 ;;
H6) shoot=68 ;;
H7) shoot=78 ;;
H8) shoot=88 ;;
esac
}
converse()
{ # idem fonction précédente à l envers
case $conv in
11) conv=A1 ;;
12) conv=B1 ;;
13) conv=C1 ;;
14) conv=D1 ;;
15) conv=E1 ;;
16) conv=F1 ;;
17) conv=G1 ;;
18) conv=H1 ;;
21) conv=A2 ;;
22) conv=B2 ;;
23) conv=C2 ;;
24) conv=D2 ;;
25) conv=E2 ;;
26) conv=F2 ;;
27) conv=G2 ;;
28) conv=H2 ;;
31) conv=A3 ;;
32) conv=B3 ;;
33) conv=C3 ;;
34) conv=D3 ;;
35) conv=E3 ;;
36) conv=F3 ;;
37) conv=G3 ;;
38) conv=H3 ;;
41) conv=A4 ;;
42) conv=B4 ;;
43) conv=C4 ;;
44) conv=D4 ;;
45) conv=E4 ;;
46) conv=F4 ;;
47) conv=G4 ;;
48) conv=H4 ;;
51) conv=A5 ;;
52) conv=B5 ;;
53) conv=C5 ;;
54) conv=D5 ;;
55) conv=E5 ;;
56) conv=F5 ;;
57) conv=F5 ;;
58) conv=G5 ;;
61) conv=A6 ;;
62) conv=B6 ;;
63) conv=C6 ;;
64) conv=D6 ;;
65) conv=E6 ;;
66) conv=F6 ;;
67) conv=G6 ;;
68) conv=H6 ;;
71) conv=A7 ;;
72) conv=B7 ;;
73) conv=C7 ;;
74) conv=D7 ;;
75) conv=E7 ;;
76) conv=F7 ;;
77) conv=G7 ;;
78) conv=H7 ;;
81) conv=A8 ;;
82) conv=B8 ;;
83) conv=C8 ;;
84) conv=D8 ;;
85) conv=E8 ;;
86) conv=F8 ;;
87) conv=G8 ;;
88) conv=H8 ;;
esac
}
joue()
{ # fonction qui vérifie dans les 8 directions et retourne les pions
read coul < couleur # importe la couleur du joueur
if [ "$coul" = "n" ]
then
aff="x" # assigne l affichage x ou O en fonction de la couleur
paff="O"
else
aff="O"
paff="x"
fi
convertisseur # converti la case choisie en chiffre
line=`expr $shoot / 10`
row=`expr $shoot % 10`
cased=`expr 8 - $row`
caseg=`expr $row - 1`
caseh=`expr $line - 1`
caseb=`expr 8 - $line`
if [ $cased -ge $caseh ]
then casehd=$caseh
else casehd=$cased
fi
if [ $cased -ge $caseb ]
then casebd=$caseb
else casebd=$cased
fi
if [ $caseg -ge $caseb ]
then casebg=$caseb
else casebg=$caseg
fi
if [ $caseg -ge $caseh ]
then casehg=$caseh
else casehg=$caseg
fi
flag=0
i=1
shoot3=$shoot
hyperflag=0
while [ $i -le $caseb ]
do
k=`expr $i \* 10`
point=`expr $shoot + $k`
conv=$point
converse
read evalu < $conv
if [ "$evalu" = "$paff" ]
then
flag=`expr $flag + 1`
else
if [ "$evalu" = "." ]
then
break
else
if [ "$evalu" = "$aff" ]
then
echo $flag
echo $evalu
if [ $flag -ge 1 ]
then
j=1
hyperflag=`expr $hyperflag + 1`
while [ $j -le $flag ]
do
shoot3=`expr $shoot3 + 10`
j=`expr $j + 1`
conv=$shoot3
converse
echo $aff >$conv
done
fi
fi
fi
fi
i=`expr $i + 1`
done
flag=0
i=1
shoot3=$shoot
while [ $i -le $caseh ]
do
k=`expr $i \* 10`
point=`expr $shoot - $k`
conv=$point
converse
read evalu <$conv
if [ "$evalu" = "$paff" ]
then
flag=`expr $flag + 1`
else
if [ "$evalu" = "." ]
then
break
else
if [ "$evalu" = "$aff" ]
then
if [ $flag -ge 1 ]
then
j=1
hyperflag=`expr $hyperflag + 1`
while [ $j -le $flag ]
do
shoot3=`expr $shoot3 - 10`
conv=$shoot3
converse
j=`expr $j + 1`
echo $aff >$conv
done
fi
fi
fi
fi
i=`expr $i + 1`
done
flag=0
i=1
shoot3=$shoot
while [ $i -le $casebd ]
do
k=`expr $i \* 10`
ad=`expr $i \* 1`
bd=`expr $k + $ad`
point=`expr $shoot + $bd`
conv=$point
converse
read evalu <$conv
if [ "$evalu" = "$paff" ]
then
flag=`expr $flag + 1`
else
if [ "$evalu" = "." ]
then
break
else
if [ "$evalu" = "$aff" ]
then
if [ $flag -ge 1 ]
then
j=1
hyperflag=`expr $hyperflag + 1`
while [ $j -le $flag ]
do
shoot3=`expr $shoot3 + 11`
conv=$shoot3
j=`expr $j + 1`
converse
echo $aff >$conv
done
fi
fi
fi
fi
i=`expr $i + 1`
done
flag=0
i=1
shoot3=$shoot
while [ $i -le $casehg ]
do
k=`expr $i \* 10`
ad=`expr $i \* 1`
bd=`expr $k + $ad`
point=`expr $shoot - $bd`
conv=$point
converse
read evalu <$conv
if [ "$evalu" = "$paff" ]
then
flag=`expr $flag + 1`
else
if [ "$evalu" = "." ]
then
break
else
if [ "$evalu" = "$aff" ]
then
if [ $flag -ge 1 ]
then
j=1
hyperflag=`expr $hyperflag + 1`
while [ $j -le $flag ]
do
shoot3=`expr $shoot3 - 11`
j=`expr $j + 1`
conv=$shoot3
converse
echo $aff >$conv
done
fi
fi
fi
fi
i=`expr $i + 1`
done
flag=0
i=1
shoot3=$shoot
while [ $i -le $casehd ]
do
k=`expr $i \* 10`
ad=`expr $i \* 1`
bd=`expr $k - $ad`
point=`expr $shoot - $bd`
conv=$point
converse
read evalu <$conv
if [ "$evalu" = "$paff" ]
then
flag=`expr $flag + 1`
else
if [ "$evalu" = "." ]
then
break
else
if [ "$evalu" = "$aff" ]
then
if [ $flag -ge 1 ]
then
j=1
hyperflag=`expr $hyperflag + 1`
while [ $j -le $flag ]
do
shoot3=`expr $shoot3 - 9`
j=`expr $j + 1`
conv=$shoot3
converse
echo $aff >$conv
done
fi
fi
fi
fi
i=`expr $i + 1`
done
flag=0
i=1
shoot3=$shoot
while [ $i -le $casebg ]
do
k=`expr $i \* 10`
ad=`expr $i \* 1`
bd=`expr $k - $ad`
point=`expr $shoot + $bd`
conv=$point
converse
read evalu <$conv
if [ "$evalu" = "$paff" ]
then
flag=`expr $flag + 1`
else
if [ "$evalu" = "." ]
then
break
else
if [ "$evalu" = "$aff" ]
then
if [ $flag -ge 1 ]
then
hyperflag=`expr $hyperflag + 1`
while [ $j -le $flag ]
do
shoot3=`expr $shoot3 + 9`
j=`expr $j + 1`
conv=$shoot3
converse
echo $aff >$conv
done
fi
fi
fi
fi
i=`expr $i + 1`
done
flag=0
i=1
shoot3=$shoot
while [ $i -le $cased ]
do
point=`expr $shoot + $i`
conv=$point
converse
read evalu <$conv
if [ "$evalu" = "$paff" ]
then
flag=`expr $flag + 1`
else
if [ "$evalu" = "." ]
then
break
else
if [ "$evalu" = "$aff" ]
then
if [ $flag -ge 1 ]
then
j=1
hyperflag=`expr $hyperflag + 1`
while [ $j -le $flag ]
do
j=`expr $j + 1`
shoot3=`expr $shoot3 + 1`
conv=$shoot3
converse
echo $aff >$conv
done
fi
fi
fi
fi
i=`expr $i + 1`
done
flag=0
i=1
shoot3=$shoot
while [ $i -le $caseg ]
do
point=`expr $shoot - $i`
conv=$point
converse
read evalu <$conv
if [ "$evalu" = "$paff" ]
then
flag=`expr $flag + 1`
else
if [ "$evalu" = "." ]
then
break
else
if [ "$evalu" = "$aff" ]
then
if [ $flag -ge 1 ]
then
j=1
hyperflag=`expr $hyperflag + 1`
while [ $j -le $flag ]
do
shoot3=`expr $shoot3 - 1`
j=`expr $j + 1`
conv=$shoot3
converse
echo $aff >$conv
done
fi
fi
fi
fi
i=`expr $i + 1`
done
if [ "$hyperflag" = "0" ]
then
read ultra<ultraflag
if [ "$ultra" = "1" ]
then
finpartie
else
echo "0">ultraflag
fi
echo "1">ultraflag
echo ".">$shoot5
echo "Coup impossible, réessayez"
echo "Appuyez pour continuer"
read lasparticho
tir
else
echo $aff >$shoot5
fi
clear
tableau
sleep 3
echo l>who
sleep 2
change
}
change()
{
read coul < couleur
if [ "$coul" = "n" ]
then
echo b > couleur
else
echo n > couleur
fi
suite
}
finpartie()
{
echo "La Partie est finie"
xcomp=0
Ocomp=0
for i in A B C D E F G H
do
for j in 1 2 3 4 5 6 7 8
do
read temp< $i$j
if [ "$temp" = "x" ]
then
xcomp=`expr $xcomp + 1`
fi
if [ "$temp" = "O" ]
then
Ocomp=`expr $Ocomp + 1`
fi
done
done
echo "Le Joueur noir [x] a marqué $xcomp points"
echo "Le Joueur blanc [O] a marqué $Ocomp points"
echo "Appuyez sur pour recommencer ou sur une touche pour quitter"
read touche
if [ "$touche" = "r" ]
then
attente
else
exit 0
fi
}
attente()
{
echo "x" >E4
echo "O" >E5
echo "O" >D4
echo "x" >D5
aff="O"
clear
echo "Attente de l'autre joueur"
i=0
read var2 < file
if [ "$var2" = "r" ]
then
echo b>who
echo rg > file
coul="b"
echo b > couleur
pascoul="n"
echo "vous etes blanc - vos pions sont [OO]"
sleep 2
suite
else
echo r > file
while i=0
do
sleep 3
read joueur < file
if [ "$joueur" = "rg" ]
then
echo "vous etes noir - vos pions sont [xx]"
break
fi
done
suite
fi
}
tir()
{
clear
tableau
echo w>who
read color<couleur
if [ "$color" = "n" ]
then
affi="x"
else
affi="O"
fi
echo "Votre couleur est [$affi]"
echo "Où voulez vous jouer? Ecrivez en majuscule (exemple: X4)"
read shoot
if [ "$shoot" = "q" ]
then
exit 0
else
shoot2=$shoot
shoot5=$shoot
read testa <$shoot
echo $testa
echo $shoot
if [ "$testa" = "." ]
then
echo $shoot >$shoot
eval "$shoot=$shoot2"
joue
else
echo "Coup impossible, réessayez"
echo "Appuyez sur pour continuer"
read sertawait
tir
fi
fi
}
suite ()
{
read var1<who
if [ "$var1" = "$coul" ]
then
echo w >who
tir
else
echo "Attendez que l'autre joueur finisse"
i=0
while i=0
do
sleep 1
read attent<who
if [ "$attent" = "l" ]
then
echo good
tir
fi
done
fi
}
attente
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.