Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Shell - Problem mit Schleife

Empfohlene Antworten

Veröffentlicht

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 von Kadaj

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.