Sidor

lördag 24 oktober 2009

tärningssimulator 0,7

Inför nationella spelveckan har jag gjort substantiella förändringar i min tärningssimulator. Den är framförallt snyggare och enklare att köra.

Man skulle kunna städa upp koden rätt mycket, använda case istället för if-satserna, men jag lyckas inte få den att ta input på ett bra sätt, t. ex. känna igen nummer med mer än en siffra. Med case vore det förhållandevis enkelt dock att känna igen saker som inte är siffror och ge lättlästa felmedelanden. Idag får man fel i koden på rad 45, där det borde finnas (men inte finns) en siffra om man skriver någonting annat än siffror. Det är den största anledningen till att dethär inte är ett färdigt projekt, utan fortfarande pågående. För min del kan jag tänka mig att helt enkelt inte trycka in annat än siffror i den, och då får jag inga felmedelanden, så att ändra koden är någonting som ligger på is tills jag behöver lite extra nerdboost nästa gång ;)

Ibland tycker jag också att koden inehåller väldigt många kommentarer, men det kommer jag bli glad för nästa gång jag ska pilla i den. Och så lång tid tar det inte att läsa några extra rader kod.

Som vanligt gäller att kopiera koden i en textfil, sätta rättigheterna så att du kan köra filen och sen köra den, för att använda tärningssimulatorn..
Bash-script är ganska okomplicerade varelser ;)

koden till nya versionen:
--------------------------------------------------------------
#!/bin/bash

#"number" needs to be "0" at this point
number=0

#clear the screen for a cleaner look
clear

#give exit instructions
echo "you can always type \"exit\" or \"0\" to exit"

#repeat script until told to stop
while [ "1" = "1" ]
do
echo "how many dice are there?"
read amount

#exit on 0 or "exit"
if [ "$amount" = "exit" ]
then
exit 0
fi
if [ "$amount" = "0" ]
then
exit 0
fi

echo "how many sides do the dice have?"
read sides

#again, exit on 0 or "exit"
if [ "$sides" = "exit" ]
then
exit 0
fi
if [ "$sides" = "0" ]
then
exit 0
fi

#insert spacer-line
echo

#"number" should at this point be 0 and therefor less than the dice amount
while [ "$number" -lt "$amount" ]
do
#the actual dice-tossing
echo -n "$(($RANDOM % sides +1)) "
#increase "number" by one, and repeat untill desired amount of dice are tossed
number=$((number + 1))
done
#reset "number" to 0 and newline, then rerun (most of) the script untill told to stop
number=0
echo
done
#If the script reads this something is wrong and exit status should be 1
exit 1
--------------------------------------------------------------

edit: blogger bryter raderna så att bara copy-pastea koden i en textfil kan (kommer antagligen) ge felmedelanden.. utkommenterade rader (de som börjar med "#") får inte vara på två rader. för att lösa detta får man helt enkelt pilla upp kommentarerna på en rad ;)

Inga kommentarer:

Skicka en kommentar