Add 2020 source files for real
This commit is contained in:
1 parent
a3c1748648
commit
9d61fc0fb4
147 files changed
+32101
No files matched your search
@@ -0,0 +1,107 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Snake script that prompts for the colours desired for the colours for the
|
||||
# walls, the head and body of the snake and the bug, and then proceeds to
|
||||
# compile Snake with that profile and then start the game. If there's an input
|
||||
# error it uses the default colour for the specific item.
|
||||
#
|
||||
# I don't disable any colours in the script even those that will probably be
|
||||
# hard to see; interestingly although maybe not as easy to see black on black is
|
||||
# not impossible to see. It's more like a grey on black. White background will
|
||||
# probably be a problem but then again maybe not.
|
||||
#
|
||||
# Usage:
|
||||
#
|
||||
# [VAR=VAL ...] ./snake-colours
|
||||
#
|
||||
# Examples:
|
||||
#
|
||||
# WALLS=0 ./snake-colours
|
||||
# ./snake-colours
|
||||
#
|
||||
# Why did I choose the colours I did? Because there are snakes with red heads
|
||||
# and although the one I am aware of has a blue body it's easier to see (for my
|
||||
# eyes at least) the green. At first I had red bugs but I thought white is
|
||||
# easier to see and the red head with a green body also easier to see.
|
||||
# Unfortunately blue on black doesn't turn out so great and the cyan for the
|
||||
# snake body with a different colour for the wall didn't quite do it for me. But
|
||||
# I explain how you can change these anyway. Anyway I love redheads and the
|
||||
# snake in question Red-headed krait
|
||||
# (https://en.wikipedia.org/wiki/Red-headed_krait) is stunningly beautiful too.
|
||||
#
|
||||
# Last updated: 13 May 2020
|
||||
COLOUR[0]="BLACK"
|
||||
COLOUR[1]="RED"
|
||||
COLOUR[2]="GREEN"
|
||||
COLOUR[3]="YELLOW"
|
||||
COLOUR[4]="BLUE"
|
||||
COLOUR[5]="MAGENTA"
|
||||
COLOUR[6]="CYAN"
|
||||
COLOUR[7]="WHITE"
|
||||
DFLT[0]="-DWALL=COLOR_CYAN" # Wall foreground: cyan (WALL)
|
||||
DFLT[1]="-DWB=COLOR_BLACK" # Wall background: black (WB)
|
||||
DFLT[2]="-DHEAD=COLOR_RED" # Head foreground: red (HEAD)
|
||||
DFLT[3]="-DHB=COLOR_BLACK" # Head background: black (HB)
|
||||
DFLT[4]="-DBODY=COLOR_GREEN" # Body foreground: green (BODY)
|
||||
DFLT[5]="-DBS=COLOR_BLACK" # Body background: black (BS)
|
||||
DFLT[6]="-DBG=COLOR_WHITE" # Bug foreground: white (BG)
|
||||
DFLT[7]="-DBB=COLOR_BLACK" # Bug background: black (BB)
|
||||
COLOURS[0]="-DWALL=COLOR_"
|
||||
COLOURS[1]="-DWB=COLOR_"
|
||||
COLOURS[2]="-DHEAD=COLOR_"
|
||||
COLOURS[3]="-DHB=COLOR_"
|
||||
COLOURS[4]="-DBODY=COLOR_"
|
||||
COLOURS[5]="-DBS=COLOR_"
|
||||
COLOURS[6]="-DBG=COLOR_"
|
||||
COLOURS[7]="-DBB=COLOR_"
|
||||
|
||||
function show_colours()
|
||||
{
|
||||
echo "Colour selection for ${*} (enter for default)"
|
||||
for i in 0 1 2 3 4 5 6 7; do
|
||||
printf "(%d) %s\n" "${i}" "${COLOUR[${i}]}"
|
||||
done
|
||||
read -rp "Make selection (1 - 7): " colour
|
||||
|
||||
case "${colour}" in
|
||||
0|1|2|3|4|5|6|7)
|
||||
return "${colour}"
|
||||
;;
|
||||
*)
|
||||
return 255
|
||||
;;
|
||||
esac
|
||||
}
|
||||
function configure_colours()
|
||||
{
|
||||
j=0
|
||||
for i in "WALL" "WALL (BACKGROUND)" "HEAD" "HEAD (BACKGROUND)" "BODY" "BODY (BACKGROUND)" "BUG" "BUG (BACKGROUND)"; do
|
||||
show_colours "${i}"
|
||||
x="${?}"
|
||||
if [ "${x}" != 255 ]; then
|
||||
COLOURS[$j]="${COLOURS[$j]}${COLOUR[$x]}"
|
||||
else
|
||||
COLOURS[$j]=${DFLT[$j]}
|
||||
fi
|
||||
j=$j+1
|
||||
done
|
||||
|
||||
echo cc -o prog.alt prog.alt.c -D'f(a,b)'='((a)<(b)?(a):(b))' ${COLOURS[0]} ${COLOURS[1]} \
|
||||
${COLOURS[2]} ${COLOURS[3]} ${COLOURS[4]} ${COLOURS[5]} ${COLOURS[6]} ${COLOURS[7]} -lncurses
|
||||
|
||||
cc -o prog.alt prog.alt.c -D'f(a,b)'='((a)<(b)?(a):(b))' ${COLOURS[0]} ${COLOURS[1]} \
|
||||
${COLOURS[2]} ${COLOURS[3]} ${COLOURS[4]} ${COLOURS[5]} ${COLOURS[6]} ${COLOURS[7]} -lncurses || exit 1
|
||||
}
|
||||
|
||||
make
|
||||
|
||||
./termcaps
|
||||
T="${?}"
|
||||
if [ "${T}" -ne 0 ]; then
|
||||
read -rp "Terminal issues detected; do you wish to continue anyway (Y/N) ? " ans
|
||||
[[ "${ans}" != "y" ]] && [[ "${ans}" != "Y" ]] && exit 1
|
||||
fi
|
||||
|
||||
configure_colours
|
||||
|
||||
clear && ./prog.alt
|
||||
Reference in new issue
Block a user