先日、端末で雪が降るのをシミュレートするこのbashスクリプトを見ました。 Cでncursesを学ぶのは簡単なプロジェクトだと思っていましたが、私はそれを完全に混乱させました。私のアプローチは、いくつかの文字列にランダムな雪片を塗りつぶしてスクリーンに書き込むことでした。私は何も期待していません。基本的に光の速さで飛ぶ大きな混乱。ncurses/Cでbash "snowfall"スクリプトをシミュレートする
誰でも私を正しい軌道に乗せることができますか?ここに私が行動をコピーしたいスクリプトがあります。
#!/bin/bash
LINES=$(tput lines)
COLUMNS=$(tput cols)
declare -A snowflakes
declare -A lastflakes
clear
function move_flake() {
i="$1"
if [ "${snowflakes[$i]}" = "" ] || [ "${snowflakes[$i]}" = "$LINES" ]; then
snowflakes[$i]=0
else
if [ "${lastflakes[$i]}" != "" ]; then
printf "\033[%s;%sH \033[0;0H " ${lastflakes[$i]} $i
fi
fi
printf "\033[%s;%sH*\033[0;0H" ${snowflakes[$i]} $i
lastflakes[$i]=${snowflakes[$i]}
snowflakes[$i]=$((${snowflakes[$i]}+1))
}
while :
do
i=$(($RANDOM % $COLUMNS))
move_flake $i
for x in "${!lastflakes[@]}"
do
move_flake "$x"
done
sleep 0.1
done
あなたのコード、予想される出力、実際に得られている出力を表示して、問題の特定の質問をしてください。 –
コードは編集されていて、あまりにも多くのコメントを付けてしまったので、ここに投稿する前に挫折から消えてしまった。これは宿題ではなく、退屈さを緩和しようとする試みはひどく間違っていた。 –