Author Topic: [Bash] foo, bar, baz and qux  (Read 1102 times)

p

  • Global Moderator
  • Apache
  • *****
  • Posts: 110
  • Karma: +27/-0
    • View Profile
[Bash] foo, bar, baz and qux
« on: May 05, 2014, 11:40:12 am »
Show me your random Bash foo!

Code: [Select]
p@debian:~$ cat printsomething.sh
#!/bin/bash
chr() {
  [ "$1" -lt 256 -a "$1" -ne 37 ] || return 1
  printf "\x1b[38;5;${1}m$(printf "\\$(printf '%03o' "$1")")"
  #printf "\x1b[38;5;${i}m${i} "
}

for x in {0..110}
do
print=$(for i in {0..512}
do
        p=$(($RANDOM % 100))
        if [ $p -lt 10 ]
        then
                c=$(($RANDOM % 224+32))
                chr $c
        else
        printf " "
        fi
done)

echo "$print"
done

p

  • Global Moderator
  • Apache
  • *****
  • Posts: 110
  • Karma: +27/-0
    • View Profile
Re: [Bash] foo, bar, baz and qux
« Reply #1 on: May 07, 2014, 11:11:40 am »
Idle Bash Game - Only Save/Load and incrementing of the first resource (R1) implemented...  :ugly;

Code: [Select]
p@debian:~$ cat game.sh
#!/bin/bash

#starting values
declare -a r=(0 0 0 0 0)

#worker
declare -a rw=(1 0 0 0 0)

#worker rates
declare -a rwr=()
r0wr=$(echo "scale=5; ${rw[0]} / 1" | bc)
r1wr=$(echo "scale=5; ${rw[1]} / 2" | bc)
r2wr=$(echo "scale=5; ${rw[2]} / 3" | bc)
r3wr=$(echo "scale=5; ${rw[3]} / 4" | bc)
r4wr=$(echo "scale=5; ${rw[4]} / 5" | bc)
declare -a rwr=("$r0wr" "$r1wr" "$r2wr" "$r3wr" "$r4wr")

#controlvariables
m="m"
moutput=""
wo="Workers +1"
ro="Rates +1%"
run=1


function output {
        print=$(clear;
        printf "###########\n# Game.sh #\n###########\n\n\n"
        printf "Type\tWorkers\tRates\tResources\n";
        printf "R1\t%s\t%s\t%s\n" "${rw[0]}" "${rwr[0]}" "${r[0]}";
        printf "R2\t%s\t%s\t%s\n" "${rw[1]}" "${rwr[1]}" "${r[1]}";
        printf "R3\t%s\t%s\t%s\n" "${rw[2]}" "${rwr[2]}" "${r[2]}";
        printf "R4\t%s\t%s\t%s\n" "${rw[3]}" "${rwr[3]}" "${r[3]}";
        printf "R5\t%s\t%s\t%s\n" "${rw[4]}" "${rwr[4]}" "${r[4]}";
        printf "\n\n\n(q)uit\t(i)mport\n\n\n"
        rc=1
        for i in {1..10}
        do
                if [ $((i%2)) -ne 0 ]
                then
                        level=${rw[$((rc-1))]}
                        printf "(%s) R%s %s (%s)\t" "$(($i - 1))" "$rc" "$wo" "$((level * ((level+1)*level)))"
                else
                        level=${rw[$((rc-1))]}
                        printf "(%s) R%s %s (%s)\n" "$(($i - 1))" "$rc" "$ro" "$((level * ((level+1)*level)))"
                        rc=$(($rc + 1))
                fi
        done)
        printf "%s\n" "$print"
}

function turn {
        r[0]=$(echo "scale=5; ${r[0]} + (${rwr[0]} * ${rw[0]})" | bc)
        r[1]=$(echo "scale=5; ${r[1]} + (${rwr[1]} * ${rw[1]})" | bc)
        r[2]=$(echo "scale=5; ${r[2]} + (${rwr[2]} * ${rw[2]})" | bc)
        r[3]=$(echo "scale=5; ${r[3]} + (${rwr[3]} * ${rw[3]})" | bc)
        r[4]=$(echo "scale=5; ${r[4]} + (${rwr[4]} * ${rw[4]})" | bc)
}

while [ $run -eq 1  ]
do
        turn
        output
        read -t 1 -n 1 k

        case $k in
                q)
                        printf "uitting game..\n\nImport this string to return to the previous gamestate:\n%s" "$(echo "${r[0]};${r[1]};${r[2]};${r[3]};${r[4]};${rw[0]};${rw[1]};${rw[2]};${rw[3]};${rw[4]};${rwr[0]};${rwr[1]};${rwr[2]};${rwr[3]};${rwr[4]};" | base64)"
                        run=0
                        break
                        ;;

                i)
                        printf "nsert your gamestate string..\n"
                        read gamestate
                        if [ "$gamestate" == "$(echo $gamestate | base64 --decode | base64)" ]
                        then
                                gamestate=($(echo $gamestate | base64 --decode | tr ";" " "))
                                r[0]=${gamestate[0]}
                                r[1]=${gamestate[1]}
                                r[2]=${gamestate[2]}
                                r[3]=${gamestate[3]}
                                r[4]=${gamestate[4]}

                                rw[0]=${gamestate[5]}
                                rw[1]=${gamestate[6]}
                                rw[2]=${gamestate[7]}
                                rw[3]=${gamestate[8]}
                                rw[4]=${gamestate[9]}

                                rwr[0]=${gamestate[10]}
                                rwr[1]=${gamestate[11]}
                                rwr[2]=${gamestate[12]}
                                rwr[3]=${gamestate[13]}
                                rwr[4]=${gamestate[14]}
                        else
                                echo "Invalid gamestate"
                                run=0
                                break
                        fi
                        ;;
                0)

                        ;;

                1)

                        ;;
                2)

                        ;;
                3)

                        ;;
                4)

                        ;;
                5)

                        ;;
                6)

                        ;;
                7)

                        ;;
                8)

                        ;;

                9)

                        ;;
        esac
        output
done