#!/bin/bash ## BETTING-Här är funktionen "betting". Jag sätter variabel $bet. Skrivs ett värde mindre än 1 eller över 10 får man försöka igen. function betting { echo "Hur mycket vill du satsa? (1-10)?" read bet if [ $bet -lt 1 -o $bet -gt 10 ]; then echo "Du måste betta mellan 1 och 10 kronor. Försök igen:" betting else spelmeny fi } ## KAST-Här genereras två tärningskast och modifieringar till $bank görs vid de olika resultaten. Vid oavgjort så startas funktionen om. Det går inte att satsa mer än vad som finns på banken. function kast { if [ $bet -gt $bank ]; then echo "Du har inte pengar nog att satsa så mycket. Var god ändra ditt bet." read -p "$tryck" spelmeny else die1=$(( RANDOM % 6 + 1 )) die2=$(( RANDOM % 6 + 1 )) echo "Du kastar tärningen och får..." sleep 1 echo "$die1" echo "Datorn kastar tärningen och får..." sleep 2 echo "$die2" sleep 1 if [ $die1 -lt $die2 ]; then bank=$(( bank - bet )) echo "Du förlorade $bet och har $bank kronor kvar." if [ $bank -eq 0 ]; then echo "Spelet är slut. Du har inga pengar kvar" read -p "$tryck" huvudmeny fi elif [ $die1 -eq $die2 ]; then echo "Oavgjort. Tärningarna rullar igen." kast else bank=$(( bank + bet )) echo "Grattis! Du vann $bet och har $bank kronor på banken." fi fi read -p "$tryck" -n1 spelmeny } ## SPELMENY-Här är spelmenyn där man kan välja om man vill kasta, betta eller gå tillbaka till huvudmenyn. I menyerna använder jag $head1 och $head2 som "grafik" för att skapa en känsla av att allt hänger ihop. function spelmeny { clear echo $head1 echo $head2 echo "Välj vad du vill göra. Du har $bank kronor på banken." PS3="SPELMENY. Bet är inställt på $bet kronor per kast. (1-3):" select spelmeny in Kasta Betting Tillbaka do break done if [ "$spelmeny" = "" ]; then echo "Felaktigt val. Jag sa 1-3." spelmeny else echo "Du valde $spelmeny." if [ "$spelmeny" = "Kasta" ]; then kast elif [ "$spelmeny" = "Betting" ]; then betting else huvudmeny fi fi } ## HUVUDMENY-Här sätter jag upp ännu en meny. Man får välja mellan att titta på regler, spela,titta på topplistan, ändra spelare eller avsluta. Jag använder egna filer till regler och topplista (.regler och .topplista). Här skrivs pengarna in till topplsitan. Jag använder head för att visa topplista-filen, och sorterar efter nummer så man kommer bara att få se topp-10-resultat även fast alla resultat kommer att lagras i filen. function huvudmeny { clear echo $head1 echo $head2 PS3="HUVUDMENY. (1-5):" echo "Hej $spelare. Du har för tillfället $bank kronor på banken." echo "Välj ett alternativ från nedanstående lista:" select huvudmeny in Spela Regler Topplista Spelare Avsluta do break done if [ "$huvudmeny" = "" ]; then echo "Felaktigt val. Jag sa 1-5." exit 1 else echo "Du valde $huvudmeny." if [ $huvudmeny = "Spela" ]; then spelmeny elif [ "$huvudmeny" = "Regler" ]; then cat .regler read -p "$tryck" huvudmeny elif [ "$huvudmeny" = "Topplista" ]; then echo "$head2" head .topplista | sort -nr read -p "$tryck" huvudmeny elif [ "$huvudmeny" = "Spelare" ]; then echo "Nu får du skriva in ditt namn igen, och pengarna du hade återställs till 100." read -p "$tryck" start else echo "Hej då $spelare. Du kastade in handduken med $bank kronor i fickan. Ta en titt på topplistan nästa gång för att se hur du står dig." echo "$bank - $spelare" >> .topplista exit fi fi } ## START-Detta är startfunktionen där jag definierar många variablar som kommer att användas i olika delar av skriptet, standardbet, $spelare $bank sätts här. $head1 och $head2 använder jag för att unvika för mycket "echo" i de andra funktionerna så att dom inte blir röriga. Den leder automatiskt till funktionen huvudmeny. Spelet "startas om" om man kallar den här funktionen. function start { clear head1="Sebastians tärningsspel 2006." head2="-----------------------------" tryck="Tryck på enter för att komma vidare." echo $head1 echo $head2 echo "Skriv in ditt namn:" read spelare bet=5 bank=5 huvudmeny } start ## Här kallar jag på första funktionen så det är här allt börjar. Anledningen till att de fem funktionerna som skriptet består av "ligger baklänges" är för att funktionerna måste läsas in före de kan anropas. Vad jag fått höra finns det inte något smartare sätt att "ladda" funktionerna på. Så som man kan göra i t.ex C.