Kadaj Geschrieben 30. September 2010 Geschrieben 30. September 2010 (bearbeitet) Hallo, ich hab ein Problem mit meinem Shell-Script. Ich habe damit begonnen Vier gewinnt mit einem Shell-Script zu schreiben. Es ist erst zur Hälfte fertig, man kann es aber schon ausführen. Die Eingabe der Felder und die Anzeige der Steine kann man bereits sehen, aber meine Überprüfung für die erste Reihe (hat ein Spieler bereits 4 Steine in einer Reihe) läuft nicht so richtig. Ich habe den Bereich mit #Anfang Schleife und #Ende Schleife markiert. Wenn Spieler 1 einen Stein reinwirft, dann geht der noch in die erste Schleife, aber bei allen anderen Würfen geht er nicht mehr in die Schleife (die innere Schleife) Um mir die Fehlerursache etwas genauer angeben zu lassen, habe ich vor in in der Schleife eine Variable an der jeweiligen Stelle umändern lassen, die ich beim nächsten durchlauf der äußeren Schleife dann anzeigen lasse. So habe ich schonmal herausgefunden, dass ein Spieler nicht gewinnt, wenn er in der unteren Reihe 4 Steine in einer Reihe hat, weil die innere Schleife nicht wieder durchläuft und somit der counter (xcombo und ocombo) nicht mehr hochzählt. Ich habe jetzt schon eine Weile an dem Script gesessen und ohne Erfolg versucht herauszufinden wo mein Denkfehler ist, aber ich find es einfach nicht. Vielleicht sieht ja jemand von euch wo die Ursache dafür ist:( #!/bin/bash i=0 clear until [ $i -eq 1 ] do echo "#########################################" echo "# Herzlich Willkommen bei Vier gewinnt #" echo "#########################################" echo "" echo "* * * * * * * * M E N Ü * * * * * * * * *" echo " " echo "* (1) Spiel gegen den Computer *" echo " " echo "* (2) Spieler gegen Spieler *" echo " " echo "* (3) Highscore ansehen *" echo " " echo "* (4) Credits *" echo " " echo "* * * * * * * * * * * * * * * * * * * * *" sleep 0.5 clear echo "#########################################" echo "# Herzlich Willkommen bei Vier gewinnt #" echo "#########################################" echo "" echo " * * * * * * * M E N Ü * * * * * * * * " echo "* *" echo " (1) Spiel gegen den Computer " echo "* *" echo " (2) Spieler gegen Spieler " echo "* *" echo " (3) Highscore ansehen " echo "* *" echo " (4) Credits " echo "* *" echo " * * * * * * * * * * * * * * * * * * * * " sleep 0.5 clear i=`expr $i + 1` done echo "#########################################" echo "# Herzlich Willkommen bei Vier gewinnt #" echo "#########################################" echo "" echo "*************** M E N Ü *****************" echo "* *" echo "* (1) Spiel gegen den Computer *" echo "* *" echo "* (2) Spieler gegen Spieler *" echo "* *" echo "* (3) Highscore ansehen *" echo "* *" echo "* (4) Credits *" echo "* *" echo "*****************************************" read menue case "$menue" in 1);; 2) reihe1=(" " " " " " " " " " " " " " " ") reihe2=(" " " " " " " " " " " " " " " ") reihe3=(" " " " " " " " " " " " " " " ") reihe4=(" " " " " " " " " " " " " " " ") reihe5=(" " " " " " " " " " " " " " " ") reihe6=(" " " " " " " " " " " " " " " ") clear echo "Bitte geben Sie den Name für Spieler 1 ein:" read spieler1 echo "Bitte geben Sie den Name für Spieler 2 ein:" read spieler2 clear spaltencount=1 sieg=0 wurf=1 spieler=X sieger="...Niemand, leider unentschieden" count=1 xcombo=0 ocombo=0 test=0 until [ $sieg -eq 1 ] do clear echo "||==========||==========||==========||==========||==========||==========||==========||" echo "|| || || || || || || ||" echo "|| ${reihe6[1]} || ${reihe6[2]} || ${reihe6[3]} || ${reihe6[4]} || ${reihe6[5]} || ${reihe6[6]} || ${reihe6[7]} ||" echo "|| || || || || || || ||" echo "||==========||==========||==========||==========||==========||==========||==========||" echo "|| || || || || || || ||" echo "|| ${reihe5[1]} || ${reihe5[2]} || ${reihe5[3]} || ${reihe5[4]} || ${reihe5[5]} || ${reihe5[6]} || ${reihe5[7]} ||" echo "|| || || || || || || ||" echo "||==========||==========||==========||==========||==========||==========||==========||" echo "|| || || || || || || ||" echo "|| ${reihe4[1]} || ${reihe4[2]} || ${reihe4[3]} || ${reihe4[4]} || ${reihe4[5]} || ${reihe4[6]} || ${reihe4[7]} ||" echo "|| || || || || || || ||" echo "||==========||==========||==========||==========||==========||==========||==========||" echo "|| || || || || || || ||" echo "|| ${reihe3[1]} || ${reihe3[2]} || ${reihe3[3]} || ${reihe3[4]} || ${reihe3[5]} || ${reihe3[6]} || ${reihe3[7]} ||" echo "|| || || || || || || ||" echo "||==========||==========||==========||==========||==========||==========||==========||" echo "|| || || || || || || ||" echo "|| ${reihe2[1]} || ${reihe2[2]} || ${reihe2[3]} || ${reihe2[4]} || ${reihe2[5]} || ${reihe2[6]} || ${reihe2[7]} ||" echo "|| || || || || || || ||" echo "||==========||==========||==========||==========||==========||==========||==========||" echo "|| || || || || || || ||" echo "|| ${reihe1[1]} || ${reihe1[2]} || ${reihe1[3]} || ${reihe1[4]} || ${reihe1[5]} || ${reihe1[6]} || ${reihe1[7]} ||" echo "|| || || || || || || ||" echo "||==========||==========||==========||==========||==========||==========||==========||" echo "" echo " 1 2 3 4 5 6 7 " if [ "$spieler" = "X" ] then echo "$spieler1 ist am Zug:" else echo "$spieler2 ist am Zug:" fi echo $xcombo echo $ocombo echo $count echo $test echo $schleife echo $count read wurf if [ "${reihe1[$wurf]}" = " " ] then reihe1[$wurf]=$spieler elif [ "${reihe2[$wurf]}" = " " ] then reihe2[$wurf]=$spieler elif [ "${reihe3[$wurf]}" = " " ] then reihe3[$wurf]=$spieler elif [ "${reihe4[$wurf]}" = " " ] then reihe4[$wurf]=$spieler elif [ "${reihe5[$wurf]}" = " " ] then reihe5[$wurf]=$spieler elif [ "${reihe6[$wurf]}" = " " ] then reihe6[$wurf]=$spieler fi if [ "$spieler" = "X" ] then spieler=O else spieler=X fi schleife="nein" #Anfang Schleife until [ $count -eq 8 ] do schleife="nur anfang" if [ "${reihe1[$count]}" = "X" ] then xcombo=`expr $xcombo + 1` count=`expr $count + 1` test=`expr $test + 1` schleife="ja" elif [ "${reihe1[$count]}" = "O" ] then schleife="elif" ocombo=`expr $ocombo + 1` count=`expr $count +1` else schleife="else" count=`expr $count + 1` xcombo=0 ocombo=0 fi if [ $xcombo -eq 4 ] then sieger=$spieler1 sieg=1 elif [ $ocombo -eq 4 ] then sieger=$spieler2 sieg=1 fi done #Ende Schleife done echo "Der Gewinner ist: $sieger" ;; 3);; 4);; esac Bearbeitet 30. September 2010 von Kadaj Zitieren
Kadaj Geschrieben 30. September 2010 Autor Geschrieben 30. September 2010 Hat sich erledigt, ich hab vergessen vor der Schleife den Zähler für das array wieder auf 1 zu setzen. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.