My screen saver for a plain session

Good day. :slight_smile:

I don't know exactly where or how to post this kind of stuff, but I though I'd like to have a look at my "Screen Saver" in progress. Comments welcome.

This uses bash. Just copy and pase into any file. Make o+x and run. Feel free to edit and change all u like.

Thanks.

#!/usr/bin/bash

# DEFINE COLORS
BLUE='\e[1;34m'
RED='\e[1;31m'
GREEN='\e[1;32m'
YELLOW='\e[1;33m'
PUR='\e[1;35m'

# DEFINE SCREEN SETTINGS
TOP_OF_SCREEN=1
BOTTOM_OF_SCREEN=40
LEFT_OF_SCREEN=1
RIGHT_OF_SCREEN=100


MIDDLE_OF_SCREEN_X=`expr $LEFT_OF_SCREEN + $RIGHT_OF_SCREEN` MIDDLE_OF_SCREEN_Y=`expr $TOP_OF_SCREEN + $BOTTOM_OF_SCREEN`

MIDDLE_OF_SCREEN_X=`expr $MIDDLE_OF_SCREEN_X / 2` MIDDLE_OF_SCREEN_Y=`expr $MIDDLE_OF_SCREEN_Y / 2`


# DEFINE WORM BODY
BOD1="O"
BOD2="@"
BOD3="@"
BOD4="@"
BOD5="@"
BOD6="@"
BOD7="@"
BOD8="."


# DEFINE START POSITION
B1X=$MIDDLE_OF_SCREEN_X
B1Y=$MIDDLE_OF_SCREEN_Y
B2X=$MIDDLE_OF_SCREEN_X
B2Y=$MIDDLE_OF_SCREEN_Y
B3X=$MIDDLE_OF_SCREEN_X
B3Y=$MIDDLE_OF_SCREEN_Y
B4X=$MIDDLE_OF_SCREEN_X
B4Y=$MIDDLE_OF_SCREEN_Y
B5X=$MIDDLE_OF_SCREEN_X
B5Y=$MIDDLE_OF_SCREEN_Y
B6X=$MIDDLE_OF_SCREEN_X
B6Y=$MIDDLE_OF_SCREEN_Y
B7X=$MIDDLE_OF_SCREEN_X
B7Y=$MIDDLE_OF_SCREEN_Y
B8X=$MIDDLE_OF_SCREEN_X
B8Y=$MIDDLE_OF_SCREEN_Y





function DRAW_WORM {
tput cup $B1Y $B1X; echo -e "${BLUE} $BOD1"
tput cup $B2Y $B2X; echo -e "${RED} $BOD2"
tput cup $B3Y $B3X; echo -e "${GREEN} $BOD3"
tput cup $B4Y $B4X; echo -e "${YELLOW} $BOD4"
tput cup $B5Y $B5X; echo -e "${PUR} $BOD5"
tput cup $B6Y $B6X; echo -e "${BLUE} $BOD6"
tput cup $B7Y $B7X; echo -e "${RED} $BOD7"
tput cup $B8Y $B8X; echo -e "${GREEN} $BOD8"
}

function GET_DIRECTION {
limit=9
R1=99999
seed1=$RANDOM
seed=`nawk 'BEGIN {srand('"$seed1"');print int(rand() * '"$R1"') }'`; DIR=`nawk 'BEGIN {srand('"$seed"');print int(rand() * '"$limit"') }'`; }

function MOVE_WORM {
GET_DIRECTION;

#MOVES THE REST OF THE BODY
B8X=$B7X
B8Y=$B7Y

B7X=$B6X
B7Y=$B6Y

B6X=$B5X
B6Y=$B5Y

B5X=$B4X
B5Y=$B4Y

B4X=$B3X
B4Y=$B3Y

B3X=$B2X
B3Y=$B2Y

B2X=$B1X
B2Y=$B1Y


# MOVE HEAD
MOVE="FALSE"
case $DIR in
0) TEST=`expr $B1X - 1`; TEST2=`expr $B1Y - 1`;
   if [ $TEST -gt $LEFT_OF_SCREEN ]; then MOVE="TRUE"; fi;
   if [ $MOVE = "TRUE" ]; then if [ $TEST2 -gt $TOP_OF_SCREEN ]; then B1X=$TEST; B1Y=$TEST2; fi; fi;;
1) TEST=`expr $B1Y - 1`; if [ $TEST -gt $TOP_OF_SCREEN ]; then B1Y=$TEST; fi;;
2) TEST=`expr $B1X + 1`; TEST2=`expr $B1Y - 1`;
   if [ $TEST -lt $RIGHT_OF_SCREEN ]; then MOVE="TRUE"; fi;
   if [ $MOVE = "TRUE" ]; then if [ $TEST2 -gt $TOP_OF_SCREEN ]; then B1X=$TEST; B1Y=$TEST2; fi; fi;;
3) TEST=`expr $B1X + 1`; if [ $TEST -lt $RIGHT_OF_SCREEN ]; then B1X=$TEST; fi;;
4) TEST=`expr $B1X + 1`; TEST2=`expr $B1Y + 1`;
   if [ $TEST -lt $RIGHT_OF_SCREEN ]; then MOVE="TRUE"; fi;
   if [ $MOVE = "TRUE" ]; then if [ $TEST2 -lt $BOTTOM_OF_SCREEN ]; then B1X=$TEST; B1Y=$TEST2; fi; fi;;
5) TEST=`expr $B1Y + 1`; if [ $TEST -lt $BOTTOM_OF_SCREEN ]; then B1Y=$TEST; fi;;
6) TEST=`expr $B1X - 1`; TEST2=`expr $B1Y + 1`;
   if [ $TEST -gt $LEFT_OF_SCREEN ]; then MOVE="TRUE"; fi;
   if [ $MOVE = "TRUE" ]; then if [ $TEST2 -lt $BOTTOM_OF_SCREEN ]; then B1X=$TEST; B1Y=$TEST2; fi; fi;;
7) TEST=`expr $B1X - 1`; if [ $TEST -gt $LEFT_OF_SCREEN ]; then B1X=$TEST; fi;; esac; 

#tput cup 3 40; printf $DIR

}

function DRAW_BORDER {
#BOTTOM_OF_SCREEN=40
#LEFT_OF_SCREEN=10
#RIGHT_OF_SCREEN=100
#TOP_OF_SCREEN=10

#DRAW THE LEFT BORDER
BEGIN=$TOP_OF_SCREEN
while [ $BEGIN -lt $BOTTOM_OF_SCREEN ]; do tput cup $BEGIN $LEFT_OF_SCREEN ; echo @; BEGIN=`expr $BEGIN + 1`; done;

#RIGHT OF BORDER
BEGIN=$TOP_OF_SCREEN
while [ $BEGIN -lt $BOTTOM_OF_SCREEN ]; do tput cup $BEGIN $RIGHT_OF_SCREEN ; echo @; BEGIN=`expr $BEGIN + 1`; done;

#BOTTOM OF BORDER
BEGIN=$LEFT_OF_SCREEN
while [ $BEGIN -lt $RIGHT_OF_SCREEN ]; do tput cup $BOTTOM_OF_SCREEN $BEGIN; echo @; BEGIN=`expr $BEGIN + 1`; done;

#TOP OF BORDER
BEGIN=$LEFT_OF_SCREEN
while [ $BEGIN -lt $RIGHT_OF_SCREEN ]; do tput cup $TOP_OF_SCREEN $BEGIN; echo @; BEGIN=`expr $BEGIN + 1`; done;



}



# THIS IS THE MAIN SCRIPT
clear;
DRAW_BORDER;
while true; do
DRAW_WORM;
MOVE_WORM;
#sleep 1;
done;