Click here to Skip to main content
15,891,184 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Hello everybody,I have been working with Debian for a couple of months for school and because it seems really handy to work with. but now I want to make a game for in the terminal. A Higher or Lower card game (also for school but I wanted to make it before I was given this task). You have to pick a Random card and then it asked if you want to bet High or Low. When you choose you bet, it wil created another random card and it wil then check if the new card is higer or lower. I still got a few problems that I can't find myself and hopefully you guys can lead me to the right direction.

What I have tried:


Bash
#!/bin/bash
score=0
uitkomst=juist
waardegok=0
echo "Hallo, welkom bij het spel {Hoger of Lager}"
echo "Het doel van het spel is om juist te kunnen gokken..."
echo "...Met kaarten."
echo "Je krijgt een kaart en jij moet gokken of de volgende kaart"
echo "hoger of lager in waarde is."
echo "Als je juist hebt geraden wordt uw juiste gok opgeslagen."
echo "veel succes!!"

Number=$(($RANDOM % 52))

KAARTEN=(Harten1 Harten2 Harten3 Harten4 Harten5 Harten6 Harten7 Harten8
Harten9 Harten10 Harten11 Harten12 Harten13 Klaver1 Klaver2 Klaver3
Klaver4 Klaver5 Klaver6 Klaver7 Klaver8 Klaver9 Klaver10 Klaver11 Klaver12
Klaver13 Schop1 Schop2 Schop3 Schop4 Schop5 Schop6 Schop7 Schop8 Schop9 
Schop10 Schop11 Schop12 Schop13 Ruit1 Ruit2 Ruit3 Ruit4 Ruit5 Ruit6 Ruit7
Ruit8 Ruit9 Ruit10 Ruit11 Ruit12 Ruit13)


Gokkaart=${KAARTEN[$Number]}
echo " "
echo "De kaart is een $Gokkaart"
waardekaart=$((Number+1))

until [ $uitkomst != juist ]
do

if [ "$score" -ge 1 ];
then
Number=$(($RANDOM % 52))
Gokkaart=${KAARTEN[$Number]}
oldNumber=$Number
echo "De kaart is $Gokkaart2"

elif [ "$score" -eq 0 ];
then
echo "Laten we beginnen"

fi

echo " "
echo -n "hoger of lager? type [H of L] > "
read gok
echo "gok: $gok"

if [ "$gok" = "H" ];
then
echo "Uw gok is hoger"
waardegok=54

elif [ "$gok" = "L" ];
then
echo "Uw gok is lager"
waardegok=-1
fi

if [ "$score" -ge 1 ];
then
oldNumber=$Number2

elif [ "$score" -eq 0 ];
then
oldNumber=$gok

fi

Number2=$(($RANDOM % 52))

KAARTEN2=(Harten1 Harten2 Harten3 Harten4 Harten5 Harten6 Harten7 Harten8
Harten9 Harten10 Harten11 Harten12 Harten13 Klaver1 Klaver2 Klaver3
Klaver4 Klaver5 Klaver6 Klaver7 Klaver8 Klaver9 Klaver10 Klaver11 Klaver12
Klaver13 Schop1 Schop2 Schop3 Schop4 Schop5 Schop6 Schop7 Schop8 Schop9 
Schop10 Schop11 Schop12 Schop13 Ruit1 Ruit2 Ruit3 Ruit4 Ruit5 Ruit6 Ruit7
Ruit8 Ruit9 Ruit10 Ruit11 Ruit12 Ruit13 )

Gokkaart2=${KAARTEN2[$Number2]}
echo "De volgende kaart ....."
waardekaart2=$((Number2+1))

if [ "$Number2" -ge 0 ] && [ "$Number2" -le 12 ];
then
echo "De volgende kaart is een harten, namelijk $Gokkaart2"
if [ $waardegok -gt $waardekaart2 ] && [ "$oldNumber -gt $Number2" ];
then
echo "goed gegokt"
score=$((score+1))
echo "uw score is nu $score"
echo " "
elif [ $waardegok -lt $waardekaart2 ] && [ "$oldNumber -lt $Number2" ];
then
echo "goed gegokt"
score=$((score+1))
echo "uw score is nu $score"
echo " "
else
echo "fout, goed geprobeert"
uitkomst=false
fi


elif [ "$Number2" -ge 13 ] && [ "$Number2" -le 25 ];
then
echo "De volgende kaart is een klaver, namelijk $Gokkaart2"
if [ $waardegok -gt $waardekaart2 ] && [ "$oldNumber -gt $Number2" ];
then
echo "goed gegokt"
score=$((score+1))
echo "uw score is nu $score"
echo " "
elif [ $waardegok -lt $waardekaart2 ] && [ "$oldNumber -lt $Number2" ];
then
echo "goed gegokt"
score=$((score+1))
echo "uw score is nu $score"
echo " "
else
echo "fout, goed geprobeert"
uitkomst=false
fi

elif [ "$Number2" -ge 26 ] &&  [ "$Number2" -le 38 ];
then
echo "De volgende kaart is een Schoppen, namelijk $Gokkaart2"
if [ $waardegok -gt $waardekaart2 ] && [ "$oldNumber -gt $Number2" ] ;
then
echo "goed gegokt"
score=$((score+1))
echo "uw score is nu $score"
echo " "
elif [ $waardegok  -lt  $waardekaart2 ] && [ "$oldNumber -lt $Number2" ];
then
echo "goed gegokt"
score=$((score+1))
echo "uw score is nu $score"
echo " "
else
echo "fout, goed geprobeert"
uitkomst=false
fi

elif [ "$Number2" -ge 39 ] && [ "$Number2" -le 52 ];
then
echo "De volgende kaart is een Ruiten, namelijk $Gokkaart2"
if [ $waardegok -gt $waardekaart2 ] && [ "$oldNumber -gt $Number2" ];
then
echo "goed gegokt"
score=$((score+1))
echo "uw score is nu $score"
echo " "
elif [ $waardegok -lt $waardekaart2 ] && [ "$oldNumber -lt $Number2" ];
then
echo "goed gegokt"
score=$((score+1))
echo "uw score is nu $score"
echo " "
else
echo "fout, goed geprobeert"
uitkomst=false
fi
fi
done
echo " uw score is $score"
Posted
Updated 22-Dec-16 1:53am
v2
Comments
Richard MacCutchan 22-Dec-16 7:20am    
The right direction is to do some debugging and tell us exactly what the problem is; we cannot be expected to guess.

1 solution

I did not checked all the code but this looks suspicious:
if [ "$score" -ge 1 ]; then
    Number=$(($RANDOM % 52))
    Gokkaart=${KAARTEN[$Number]}
    oldNumber=$Number
    echo "De kaart is $Gokkaart2"
fi

You are assigning a new random number to $Number. So the old number is no longer available and assigning the new value to $oldNumber later makes no sense.

You are getting the card name for the new number into $Gokkart but printing $Gokkart2.

So the above block should be probably something like:
if [ "$score" -ge 1 ]; then
    oldNumber=$Number
    Number=$(($RANDOM % 52))
    Gokkaart2=${KAARTEN[$Number]}
    echo "De kaart is $Gokkaart2"
fi

Note also that I have used the common bash formatting (putting the then into the same line as the if and indenting conditional blocks).

Finally two tips:
You might also have a look at bash functions. If you don't know this already have also a look at the BASH Programming - Introduction HOW-TO[^].
 
Share this answer
 
Comments
Member 12917493 22-Dec-16 16:23pm    
Thank you For the response. In the meantime I have rewritten the code and now I only have one error and that is a integer expressen at my large if loops at the end of the code. And thank you for the introduction documents, it really helpt me understand some parts of shell scripting.
this is the code:


#!/bin/bash
score=0
uitkomst=juist
waardegok=0
echo "Hallo, welkom bij het spel {Hoger of Lager}"
echo "Het doel van het spel is om juist te kunnen gokken..."
echo "...met kaarten."
echo "Je krijgt een kaart en jij moet gokken of de volgende kaart"
echo "hoger of lager in waarde is."
echo "Als je juist hebt geraden wordt uw juiste gok opgeslagen."
echo "veel succes!!"

Number=$(($RANDOM % 52))

KAARTEN=(Harten1 Harten2 Harten3 Harten4 Harten5 Harten6 Harten7 Harten8
Harten9 Harten10 Harten11 Harten12 Harten13 Klaver1 Klaver2 Klaver3
Klaver4 Klaver5 Klaver6 Klaver7 Klaver8 Klaver9 Klaver10 Klaver11 Klaver12
Klaver13 Schop1 Schop2 Schop3 Schop4 Schop5 Schop6 Schop7 Schop8 Schop9
Schop10 Schop11 Schop12 Schop13 Ruit1 Ruit2 Ruit3 Ruit4 Ruit5 Ruit6 Ruit7
Ruit8 Ruit9 Ruit10 Ruit11 Ruit12 Ruit13)


Gokkaart=${KAARTEN[$Number]}
echo " "
if [ "$Number" -ge 0 ] && [ "$Number" -le 12 ];then
case $Gokkaart in
Harten1) waarde=1;;
Harten2) waarde=2;;
Harten3) waarde=3;;
Harten4) waarde=4;;
Harten5) waarde=5;;
Harten6) waarde=6;;
Harten7) waarde=7;;
Harten8) waarde=8;;
Harten9) waarde=9;;
Harten10) waarde=10;;
Harten11) waarde=11;;
Harten12) waarde=12;;
Harten13) waarde=13;;
esac

elif [ "$Number" -ge 13 ] && [ "$Number" -le 25 ];then
case $Gokkaart in
Klaver1) waarde=1;;
Klaver2) waarde=2;;
Klaver3) waarde=3;;
Klaver4) waarde=4;;
Klaver5) waarde=5;;
Klaver6) waarde=6;;
Klaver7) waarde=7;;
Klaver8) waarde=8;;
Klaver9) waarde=9;;
Klaver10) waarde=10;;
Klaver11) waarde=11;;
Klaver12) waarde=12;;
Klaver13) waarde=13;;
esac

elif [ "$Number" -ge 26 ] && [ "$Number" -le 38 ];then
case $Gokkaart in
Schoppen1) waarde=1;;
Schoppen2) waarde=2;;
Schoppen3) waarde=3;;
Schoppen4) waarde=4;;
Schoppen5) waarde=5;;
Schoppen6) waarde=6;;
Schoppen7) waarde=7;;
Schoppen8) waarde=8;;
Schoppen9) waarde=9;;
Schoppen10) waarde=10;;
Schoppen11) waarde=11;;
Schoppen12) waarde=12;;
Schoppen13) waarde=13;;
esac

elif [ "$Number" -ge 39 ] && [ "$Number" -le 52 ];then
case $Gokkaart in
Ruiten1) waarde=1;;
Ruiten2) waarde=2;;
Ruiten3) waarde=3;;
Ruiten4) waarde=4;;
Ruiten5) waarde=5;;
Ruiten6) waarde=6;;
Ruiten7) waarde=7;;
Ruiten8) waarde=8;;
Ruiten9) waarde=9;;
Ruiten10) waarde=10;;
Ruiten11) waarde=11;;
Ruiten12) waarde=12;;
Ruiten13) waarde=13;;
esac
fi
echo "De eerste kaart is een $Gokkaart"
echo " "
until [ $uitkomst != juist ]
do
echo " "
echo -n "hoger of lager? type [H of L] > "
read gok
echo "gok: $gok"

if [ "$gok" = "H" ];then

echo "Uw gok is hoger"
waardegok=14

elif [ "$gok" = "L" ];then
echo "Uw gok is lager"
waardegok=0
fi

if [ "$score" -ge 1 ];then

vorigekaart=$Gokkaart2
vorigewaarde=$waarde2
echo "De vorige kaart was een $Gokkaart2"
echo " "
elif [ "$score" -eq 0 ];then

vorigekaart=$Gokkaart
vorigewaarde=$waarde
echo "Laten we beginnen"
echo " "
fi

Number2=$(($RANDOM % 52))

KAARTEN2=(Harten1 Harten2 Harten3 Harten4 Harten5 Harten6 Harten7 Harten8
Harten9 Harten10 Harten11 Harten12 Harten13 Klaver1 Klaver2 Klaver3
Klaver4 Klaver5 Klaver6 Klaver7 Klaver8 Klaver9 Klaver10 Klaver11 Klaver12
Klaver13 Schop1 Schop2 Schop3 Schop4 Schop5 Schop6 Schop7 Schop8 Schop9
Schop10 Schop11 Schop12 Schop13 Ruit1 Ruit2 Ruit3 Ruit4 Ruit5 Ruit6 Ruit7
Ruit8 Ruit9 Ruit10 Ruit11 Ruit12 Ruit13 )

Gokkaart2=${KAARTEN2[$Number2]}
echo "De volgende kaart ....."
if [ "$Number2" -eq "$Number" ];then

Number2=$(($RANDOM % 52))
Gokkaart2=${KAARTEN2[$Number2]}

elif [ "$Number2" -ge 0 ] && [ "$Number2" -le 12 ];then

echo "De volgende kaart is een harten, namelijk $Gokkaart2"
case $Gokkaart2 in
Harten1) waarde2=1;;
Harten2) waarde2=2;;
Harten3) waarde2=3;;
Harten4) waarde2=4;;
Harten5) waarde2=5;;
Harten6) waarde2=6;;
Harten7) waarde2=7;;
Harten8) waarde2=8;;
Harten9) waarde2=9;

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900