From a1448c3d4b69be67b10aad05ae1331edc9549fc1 Mon Sep 17 00:00:00 2001 From: Yu-Jie Lin Date: Tue, 13 Mar 2018 17:20:20 +0800 Subject: [PATCH] test code portal/wormhole --- pipes.sh | 61 ++++++++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 44 insertions(+), 17 deletions(-) diff --git a/pipes.sh b/pipes.sh index 79a6760..b56fd8a 100755 --- a/pipes.sh +++ b/pipes.sh @@ -176,6 +176,36 @@ init_screen() { } +pipe_step() +{ + local i="$1" + + # New position: + # l[] direction = 0: up, 1: right, 2: down, 3: left + # +_CP_newpos + ((l[i] % 2)) && ((x[i] += -l[i] + 2, 1)) || ((y[i] += l[i] - 1, 1)) + # -_CP_newpos + + # Loop on edges (change color on loop): + # +_CP_warp + ((!KEEPCT && (x[i] >= w || x[i] < 0 || y[i] >= h || y[i] < 0))) \ + && ((c[i] = C[CN * RANDOM / M], v[i] = V[VN * RANDOM / M])) + ((x[i] = (x[i] + w) % w, + y[i] = (y[i] + h) % h, 1)) + # -_CP_warp +} + + +pipe_print() +{ + local i="$1" s="$2" + + echo -ne "\e[$((y[i] + 1));$((x[i] + 1))H\e[${BOLD}m" + ((NOCOLOR)) && echo -ne "\e[0m" || echo -ne "\e[3${c[i]}m" + echo -n "$s" +} + + main() { local i @@ -198,19 +228,19 @@ main() { ?) break;; esac for ((i = 0; i < p; i++)); do - # New position: - # l[] direction = 0: up, 1: right, 2: down, 3: left - # +_CP_newpos - ((l[i] % 2)) && ((x[i] += -l[i] + 2, 1)) || ((y[i] += l[i] - 1, 1)) - # -_CP_newpos - - # Loop on edges (change color on loop): - # +_CP_warp - ((!KEEPCT && (x[i] >= w || x[i] < 0 || y[i] >= h || y[i] < 0))) \ - && ((c[i] = C[CN * RANDOM / M], v[i] = V[VN * RANDOM / M])) - ((x[i] = (x[i] + w) % w, - y[i] = (y[i] + h) % h, 1)) - # -_CP_warp + pipe_step $i + + # +_CP_portal + if ((100 * RANDOM < M)); then + pipe_print $i 'o' + local gap=$((7 * RANDOM / M + 3)) + while ((gap--)); do + pipe_step $i + done + pipe_print $i 'o' + pipe_step $i + fi + # -_CP_portal # new turning direction: # $((s - 1)) in $s, going straight, therefore n[i] == l[i]; @@ -228,11 +258,8 @@ main() { )) # -_CP_newdir - # Print: # +_CP_print - echo -ne "\e[$((y[i] + 1));$((x[i] + 1))H\e[${BOLD}m" - ((NOCOLOR)) && echo -ne "\e[0m" || echo -ne "\e[3${c[i]}m" - echo -n "${sets[v[i]]:l[i]*4+n[i]:1}" + pipe_print $i "${sets[v[i]]:l[i]*4+n[i]:1}" # -_CP_print l[i]=${n[i]} done -- 2.13.5