Script aslinya saya ambil dari buku FreeBSD 6 Unleashed Karangan Brian Tiemann, dimodifikasi sesuai kebutuhan :D berikut isi scriptnya :
$ cat tebak2an
#!/bin/sh
# Tebak-tebakan angka
clear
guess_count=1
echo
echo "Permainan menebak angka."
echo
echo -n "Masukkan batas angka Maksimum: "
read up_limit
rnd_number=`jot -r 1 1 $up_limit`
echo
echo "Ok, saya sudah memikirkan sebuah angka acak dari 1 sampai $up_limit."
echo
echo -n "Silakan anda tebak angka acak tersebut, yaitu mulai dari 1 sampai $up_limit: "
read guess
while true
do
if [ $guess -gt $rnd_number ]
then
echo "Tebakan angka anda terlalu tinggi. Silahkan coba lagi."
guess_count=`expr $guess_count + 1`
echo -n "Silahkan tebak angka acak antara 1 dan $up_limit: "
read guess
elif [ $guess -lt $rnd_number ]
then
echo "Tebakan angka anda terlalu rendah. Silahkan coba lagi."
guess_count=`expr $guess_count + 1`
echo -n "Silahkan tebak angka acak antara 1 dan $up_limit: "
read guess
else
break
fi
done
echo "Correct! Bravo! Pinter deh!"
echo
echo "Kamu menebak dalam $guess_count kali tebakan."
echo
$
sekarang kita compile scriptnya.
$ chmod +x tebak2an
$
Lalu kita coba jalankan. Kita coba menebak angka dengan range 0 sampai seratus. Untuk range-nya bisa di isi sesuai keinginan kita, bisa 1000, 10000, atau yang lainnya. coba yuk?
$ ./tebak2an
Permainan menebak angka.
Masukkan batas angka Maksimum: 100
Ok, saya sudah memikirkan sebuah angka acak dari 1 sampai 100.
Silakan anda tebak angka acak tersebut, yaitu mulai dari 1 sampai 100: 50
Tebakan angka anda terlalu rendah. Silahkan coba lagi.
Silahkan tebak angka acak antara 1 dan 100: 75
Tebakan angka anda terlalu rendah. Silahkan coba lagi.
Silahkan tebak angka acak antara 1 dan 100: 85
Tebakan angka anda terlalu rendah. Silahkan coba lagi.
Silahkan tebak angka acak antara 1 dan 100: 92
Tebakan angka anda terlalu tinggi. Silahkan coba lagi.
Silahkan tebak angka acak antara 1 dan 100: 88
Correct! Bravo! Pinter deh!
Kamu menebak dalam 5 kali tebakan.
$
Seperti dilihat di contoh, range tebakan dari angka 1 sampai 100 karena saya memasukan angka maksimum tebakan 100. Kita coba bongkar baris perbaris sama-sama yuk? Ok, kita mulai :)
guess_count=1 - menyimpan banyaknya tebakan yang dicoba.
read up_limit - menyimpan angka maksimum inputan atau range tebakan maksimum dari user. Dalam contoh saya memasukan 100, artinya angka yang harus ditebak berada di antara angka 1 sampai 100.
rnd_number=`jot -r 1 1 $up_limit` - mengacak (random) angka yang harus ditebak oleh user.
read guess - menyimpan inputan hasil tebakan angka dari user yang nantinya akan digunakan untuk proses kondisi statemen while-do. Pada contoh, tebakan pertama saya memasukkan angka 50.
selanjutnya ada 3 statemen if dari perulangan while-do ini, diantaranya :
if [ $guess -gt $rnd_number ] - jika angka tebakan ($guess) lebih tinggi (-gt) dari angka yang harus ditebak ($rnd_number), maka baris yang akan dieksekusi adalah : echo "Tebakan angka anda terlalu tinggi. Silahkan coba lagi.". Lalu kondisi kembali kepada memasukkan angka tebakan ($guess) agar lebih tepat.
elif [ $guess -lt $rnd_number ] - jika angka tebakan ($guess) lebih rendah (-lt) dari angka yang harus ditebak ($rnd_number), maka baris yang akan dieksekusi adalah : echo "Tebakan angka anda terlalu rendah. Silahkan coba lagi.", dan kondisi kembali pada memasukan angka tebakan ($guess).
Jika angka tebakan ($guess) tidak lebih besar (-gt) juga tidak lebih kecil (-lt) maka blok statemen ke 3 yang dipakai, artinya, agka tebakan ($guess) tersebut tidak cocok dengan 2 argumen sebelumnya alias cocok dengan abgka yang harus ditebak ($rnd_number), maka perulangan selesai (break), dan ditandai dengan statemen fi berfungsi sebagai penanda dari akhir blok statemen if.
Setelah kondisi ke 3 terpenuhi, maka argumen echo "Kamu menebak dalam $guess_count kali tebakan." yang akan dieksekusi. $guess_count adalah banyaknya tebakan yang sudah kita coba. pada contoh, saya berhasi menebak dalam 5 kali tebakan.
Begituh sodara-sodara kuh. Penjelasan yang membingungkan ya? :P
ya sudah, selamat mencoba ya.


