#!/bin/bash # BR-Snake - Terminal snake game # Usage: ./snake.sh clear COLS=$(tput cols) LINES=$(tput lines) W=$((COLS > 40 ? 40 : COLS - 2)) H=$((LINES > 20 ? 20 : LINES - 2)) declare -a SX SY SX=($(( W/2 )) $(( W/2-1 )) $(( W/2-2 ))) SY=($(( H/2 )) $(( H/2 )) $(( H/2 ))) LEN=3 DIR=0 SCORE=0 FX=$(( RANDOM % (W-2) + 1 )) FY=$(( RANDOM % (H-2) + 1 )) draw_border() { printf '\033[H\033[38;5;205m' for ((i=0;i<=W;i++)); do printf '█'; done; echo for ((j=1;j0;i--)); do SX[$i]=${SX[$((i-1))]} SY[$i]=${SY[$((i-1))]} done # Move head SX[0]=$(( SX[0] + DX[DIR] )) SY[0]=$(( SY[0] + DY[DIR] )) # Wall collision if (( SX[0] <= 1 || SX[0] >= W || SY[0] <= 1 || SY[0] >= H )); then printf '\033[%d;1H\033[38;5;205mGAME OVER! Score: %d\033[0m\n' $((H+2)) $SCORE read -rsn1; exit fi # Self collision for ((i=1;i