Files
blackroad/bin/pixel-world
Alexa Amundson 78fbe80f2a Initial monorepo — everything BlackRoad in one place
bin/       230 CLI tools (ask-*, br-*, agent-*, roadid, carpool)
scripts/   99 automation scripts
fleet/     Node configs and deployment
workers/   Cloudflare Worker sources (roadpay, road-search, squad webhooks)
roadc/     RoadC programming language
roadnet/   Mesh network (5 APs, WireGuard)
operator/  Memory system scripts
config/    System configs
dotfiles/  Shell configs
docs/      Documentation

BlackRoad OS — Pave Tomorrow.

RoadChain-SHA2048: d1a24f55318d338b
RoadChain-Identity: alexa@sovereign
RoadChain-Full: d1a24f55318d338b24b60bad7be39286379c76ae5470817482100cb0ddbbcb97e147d07ac7243da0a9f0363e4e5c833d612b9c0df3a3cd20802465420278ef74875a5b77f55af6fe42a931b8b635b3d0d0b6bde9abf33dc42eea52bc03c951406d8cbe49f1a3d29b26a94dade05e9477f34a7d4d4c6ec4005c3c2ac54e73a68440c512c8e83fd9b1fe234750b898ef8f4032c23db173961fe225e67a0432b5293a9714f76c5c57ed5fdf35b9fb40fd73c03ebf88b7253c6a0575f5afb6a6b49b3bda310602fb1ef676859962dad2aebbb2875814b30eee0a8ba195e482d4cbc91d8819e7f38f6db53e8063401649c77bb994371473cabfb917fb53e8cbe73d60
2026-03-14 17:08:41 -05:00

90 lines
2.4 KiB
Bash
Executable File

#!/usr/bin/env bash
# BR-Pixel - Procedural pixel art world generator
clear
trap 'printf "\033[?25h\033[0m"; clear; exit' INT TERM EXIT
printf '\033[?25l'
COLS=$(( $(tput cols) / 2 )) LINES=$(( $(tput lines) - 2 ))
# Terrain colors
SKY=33 CLOUD=231 SUN=226
MOUNT=240 MOUNT2=245
TREE_TRUNK=94 TREE_LEAF=34
GRASS=28 GRASS2=22
WATER=27 WATER2=33
SAND=222 FLOWER1=205 FLOWER2=214
generate() {
printf '\033[H'
# Sky gradient
sky_h=$((LINES * 40 / 100))
for ((y=0;y<sky_h;y++)); do
line=""
shade=$((17 + y * 3 / sky_h))
for ((x=0;x<COLS;x++)); do
if (( RANDOM % 40 == 0 && y > 1 && y < sky_h/2 )); then
line+="\033[48;5;${CLOUD}m "
elif (( x == COLS/3 && y == 2 )); then
line+="\033[48;5;${SUN}m "
else
line+="\033[48;5;${shade}m "
fi
done
printf '%b\033[0m\n' "$line"
done
# Mountains
mount_h=$((LINES * 15 / 100))
peak=$((RANDOM % COLS))
for ((y=0;y<mount_h;y++)); do
line=""
w=$((y * COLS / mount_h / 2))
for ((x=0;x<COLS;x++)); do
dist=$((x - peak)); (( dist < 0 )) && dist=$((-dist))
if (( dist < w )); then
line+="\033[48;5;${MOUNT}m "
elif (( RANDOM % 3 == 0 && dist < w+2 )); then
line+="\033[48;5;${MOUNT2}m "
else
line+="\033[48;5;${SKY}m "
fi
done
printf '%b\033[0m\n' "$line"
done
# Ground
ground_h=$((LINES - sky_h - mount_h))
water_start=$((RANDOM % (COLS/2) + COLS/4))
water_w=$((RANDOM % 8 + 4))
for ((y=0;y<ground_h;y++)); do
line=""
for ((x=0;x<COLS;x++)); do
# Water
if (( x >= water_start && x < water_start + water_w && y > ground_h/3 )); then
c=$WATER; (( RANDOM % 3 == 0 )) && c=$WATER2
line+="\033[48;5;${c}m "
# Sand near water
elif (( x >= water_start-2 && x < water_start+water_w+2 && y > ground_h/3 )); then
line+="\033[48;5;${SAND}m "
# Trees
elif (( RANDOM % 15 == 0 && y > 0 )); then
line+="\033[48;5;${TREE_LEAF}m "
# Flowers
elif (( RANDOM % 30 == 0 )); then
c=$FLOWER1; (( RANDOM % 2 == 0 )) && c=$FLOWER2
line+="\033[48;5;${c}m "
else
c=$GRASS; (( RANDOM % 4 == 0 )) && c=$GRASS2
line+="\033[48;5;${c}m "
fi
done
printf '%b\033[0m\n' "$line"
done
printf '\033[38;5;205m🎨 BR-Pixel World \033[38;5;69m[Enter=regenerate, q=quit]\033[0m'
}
while true; do
generate
read -rsn1 K
[[ "$K" == "q" ]] && exit
done