2021年12月24日

課題★いま、秒針が何秒を指していたかクイズ改良。シェルスクリプト稚談-7

何回目のトライで当てたか、を表示させたくなって、
コードをいじりました。じぶんにはむずかしかったです。
何がむずかしいって、順次進行です。
言うは易し、行いがたしでして、どこに
カウントする行を入れたらいいかが さっぱり判らない。
なかば当てずっぽうに入れたところで、機能しました。
#!/bin/bash

guess=-1
count=0
answer=`date +%S`
while [ $guess -ne $answer ];
do
count=`expr $count + 1`
echo "〜〜〜〜〜〜〜 〜〜〜〜〜〜〜 〜〜〜〜〜〜〜〜"
echo "0から59。いまかみさまのこころに浮かんだ
数字があります。当ててみて?:"
echo " "
read guess
if [[ $guess -gt $answer ]]
then
echo " "
echo "その数より小さいです"
echo " "
elif [[ $guess -lt $answer ]]
then
echo " "
echo "その数より大きいです"
echo " "
else
echo " "
echo "おぉ、当たった。あなたはしあわせもの!!!
$count回目のちょうせんで当てたね。"
echo " "
fi
done

考えてみれば、繰り返しのところは、
doとdoneの間のはずで、その中でないと、
プログラムとして、回数が数えられない
にも拘らず、whileより上に入れてみたり、
正解のところの表示のそばに入れてみたり。

エラー表示がそんなに親切でもないのは、
わかっていましたが、けっこうな時間がかかりました。
プログラミングで云う”順次進行”って、
意外にむずかしいですね。
特にループ動作が絡むときには。

クイズは、適切な日本語が浮かんでこずで、
物語を変更しました。何度目に当てたかを
出すことにしたので、チャンチャチャーン!と
フルスクリーンの画像を派手に出すのは、
難しくなりました。

mikokoro_2021-12-24_12-43-43.jpg


posted by ブログ開設者 at 14:08| Comment(0) | linux | このブログの読者になる | 更新情報をチェックする

2021年12月23日

課題★<時><分>を除いて、いま秒針が何秒を指していたかクイズ。シェルスクリプト疲談-6

seconds_quiz_2021-12-23_11-46-08.jpg

#!/bin/bash

guess=-1
answer=`date +%S`
while [ $guess -ne $answer ]
do
echo "〜〜〜〜〜〜〜 〜〜〜〜〜〜〜 〜〜〜〜〜〜〜〜"
echo "いま秒針が、何秒を指しているか予想してください:"
echo " "
read guess
if [[ $guess -gt $answer ]]
then
echo " "
echo "その数字より小さいです"
echo " "
elif [[ $guess -lt $answer ]]
then
echo " "
echo "その数字より大きいです"
echo " "
else
echo " "
echo "ピタリ一致。あんたは天才や!!!"
echo " "
fi
done

シバンがbashなのは、そのほうが
上手くいくことがおおいため。

date +%S は、現在の秒のみを表示するコマンド。

[[ ]]の意味は、表示される警告を出ないようにするため。
./number: 9 行: [: -gt: 単項演算子が予期されます
./number: 12 行: [: -lt: 単項演算子が予期されます

を出なくするためです。

スクリプトを実行した時点で、回答は確定。
私、勘違いしまして、同じ数字を打って回答しつづければ、
近づいてきてそのうち当たるだろうと期待しましたが、
コードをよく眺めると、そういう仕掛けではないようで。
プロンプトで、スクリプトを実行するたびに
当然のことながら新たな回答をもつので、
答えの数が変わります。

入力した数が回答と一致するまで、問題がループして、
スクリプトは終了しません。(強制終了はctrl +c)
その数より小さいです  と その数より大きいです で、
間を詰めていき、いかに回数少なく時間は短く
答えに到達するか、みたいなゲームですね。
操作の速さを要求されるので、
年寄り向きじゃないですね。例として、
スクリーンショットを撮るためにやりましたが、
疲れました。

課題提供者の元問題は、英文にしてありましたが、
孫用に「にほんご」にしました。

学びは、while文とif文を
混ぜることができるんだな、でした。
たくさんやって、身体に覚えさせるしか
ないですね。出題者の変数の表し方がときどき
ちがうやり方だったりします。$も{}も付けずに、
変数って扱えるんですかね。[ ]の中だったら?
きょうは、$だけにしましたが、
無事に動いています。

guess=のところの  -1  は、とりあえずありえない数に
しておくのが、こういうときの作法か、と。
入力すべきは、0〜59 。
正解のときに派手にするには、
フォントに色をつけたりフォントサイズを大きくするか?
それができないなら、画像でドカンとやるとか?ですかね。


※考えてみれば、時制がおかしいですね、この問題。
本番では直します。
「いま何秒だったかクイズ!! この下へ入力:」
みたいなのを幼児に解るようにすればいい?
いまとは、今の「ま」を云ったときにはすでに過去!
時間は、逆さ回しにはできないことを伝えるぞっ!?
(2021/12/24)


posted by ブログ開設者 at 12:02| Comment(0) | linux | このブログの読者になる | 更新情報をチェックする

2021年12月22日

課題★2才児には画像出力で。シェルスクリプト粗談-5

音声認識のシェルスクリプトが
可能なのか、できないのか、、、。
勝手にできないと決めてかかって
キーボードでの代書は、
爺がやればいいや、でこんなです。

#1/bin/bash

echo " "
echo "ピがつくかわいいのは、だーれだ?"
echo " "
read str
str1="ピカチュウ"
echo " "
if [ $str == $str1 ];
then
eog -f '/home/user/画像/pikachu1.jpg'
else
echo "ちがうよ、パパやママじゃなく、ほら‥‥"
echo " "
fi

正解だと、これが
pikachu.jpg
どかんとフルスクリーン表示。

pikachu_execute_2021-12-22_19-50-40.jpg

eogコマンドは、デフォルトではなし、ですね。
(debian,、archlinux)。使うには、
eogがそのままパッケージ名で、
インストールする必要がありました。

始めたばかりの勉強。仕掛けとしては、
このへんで許してもらおうと思います。

あと、賞品を考える担当は、
お祖母様です。

私、エクセルができない絶滅危惧種です。
作業の効率化っていったって、
現役じゃないから、効率化したいものがないです。
この先、どう勉強を勧めていくべきか。

できたい具体的な課題がないと、
勉強は進まない、とネット上の大概の
センセイたちは、おっしゃっていられます。んー。


posted by ブログ開設者 at 20:38| Comment(0) | linux | このブログの読者になる | 更新情報をチェックする