Grafik i en text värld. (12 / 17 steg)
Steg 12: Par nyår skript.
Måste köras på en linux-burk med figlet installerat.
$ sudo apt-get update
$ sudo lämplig-få installera figlet
Kod:
$ medan [[$(datum + %Y) - ne 2012]], göra figlet $(($(date-d 2012-01-01 +%s)-$(date +%s))), sova 1; rensa, gjort; figlet "gott nytt år!"
-----------------------------------------------------------------
Fyrverkeri:
Fireworks.sh
[code]
#! / bin/bash
rader = $(tput linjer)
cols = $(tput kolumner)
färger = (röd grön blå lila cyan gul brun)
lock_file =
lock_file_base = / tmp/$(basename $0.sh)
flera = 0
om [["$1"]]; sedan
nsingle = $1
Skift
annat
nsingle = 10
Fi
om [["$1"]]; sedan
nmultiple = $1
Skift
om [[$nmultiple - gt 8]]; sedan nmultiple = 8; Fi
annat
nmultiple = 6
Fi
funktion colorstr()
{
lokala row = $1
lokala col = $2
lokala färg = $3
lokala v
fall "$color" i
röd) v = 31;
grön) v = 34.;
blå) v = 32.;
lila) v = 35.;
cyan) v = 36.;
gul) v = 33.;
brun) v = 33.;
vit) v = 37;
*) v=;;
ESAC
Skift 3
om [[$multiple - ne 0]]; sedan
Touch $lock_file
medan [[$(ls $lock_file_base. * 2 >/dev/null | huvud - n 1)! = $lock_file]]
göra
sömn 0,05
gjort
Fi
tput cup $row $col
eko - n -e "\e["$v"m"
Ange -f
eko - n $*
Set + f
om [[$multiple - ne 0]]; sedan
RM -f $lock_file
Fi
}
funktion center_colorstr()
{
lokala row = $1
lokala färg = $2
Shift 2
lokala s = "$*"
lokala slen = ${#s}
colorstr $row $(((cols / 2)-(slen / 2))) $color "$s"
}
funktion fireworks()
{
lokala row = $((rader - 1))
lokala col = $(((RANDOM % (cols/2)) + (cols / 4)))
lokala höjd = $((RANDOM % rows-2))
lokala vinkling
lokala h
lokala color1 = ${färger [$((RANDOM % ${#colors[*]}))]}
lokala color2 = ${färger [$((RANDOM % ${#colors[*]}))]}
lokala color3 = ${färger [$((RANDOM % ${#colors[*]}))]}
medan [[$color1 == $color2 || $color1 == $color3 || $color2 == $color3]]
göra
color2 = ${färger [$((RANDOM % ${#colors[*]}))]}
color3 = ${färger [$((RANDOM % ${#colors[*]}))]}
gjort
fall $((RANDOM % 4)) i
2-0) vinkling =;
1) vinkling =-1;
2) vinkling = 1;
3) vinkling = 2;
ESAC
om [[$height - gt 5]]; sedan
h = $height
medan [[$h - gt 0]]
göra
colorstr $row $col $color1 '.'
Låt rad--
om [[$((col + vinkling)) -ge $((cols - 3)) || $((col + vinkling))-le 2]]; sedan bryta; Fi
Låt col += slant
Låt h--
sömn 0,1
gjort
om [[$((col + vinkling)) - lt $((cols - 3)) & & $((col + vinkling)) - gt 2]]; sedan
h = $((height / 5))
medan [[$h - gt 0]]
göra
colorstr $row $col $color2 '.'
Låt rad ++
om [[$((col + vinkling)) -ge $((cols - 3)) || $((col + vinkling))-le 2]]; sedan bryta; Fi
Låt col += slant
Låt h--
sömn 0,1
gjort
Fi
colorstr $((row)) $((col - 1)) $color3 ' ***'
colorstr $((rad - 1)) $((col)) $color3 ' *'
colorstr $((row + 1)) $((col)) $color3 ' *'
Fi
}
för jag i $(seq 1 $nsingle)
göra
klart
fyrverkerier
sova 1
gjort
klart
PID =
för jag i $(seq 1 $nmultiple)
göra
Låt flera ++
lock_file = $lock_file_base. $i
fyrverkerier &
PID = $pids $!"
gjort
fällan "kill-9 $pids 2 >/dev/null" EXIT
vänta $pids
sova 3
klart
center_colorstr $((rows / 2-1)) red "Hoppas du gillade showen!"
center_colorstr $((rows / 2 + 1)) red "Gott nytt år!"
center_colorstr $((rows / 2 + 3)) red "Computothought"
ECHO
sova 5
klart
# vim: tabbstopp = 4: shiftwidth = 4: noexpandtab:
# kate: fliken bredd 4. strecksatsen-bredd 4. Ersätt-tabs false;
[/code]
Skapa kommandofil shell:
$ vim fireworks.sh
Göra den körbar:
$ chmod + x fireworks.sh
Kör det:
$./fireworks.sh