RSS

Belajar Shell Scripting Yuk? - Script Tebak-tebakan Angka

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.

Aliek Beraksii..

lexxx....
Fosemu lexxx...

xixixixi...
Tiati kwe iso di tuduh mbunuh tikus lowh...
hwakakakakaka...

Motor Modifed

ihhh WaW...
Maz... Motor mu nganti Berkilau iku lowh....
hwahahahhaa...

Eitz... Senyum dunk bagi yang liad...
Keep Smile..

hwahahahahahahaha...!!!

Lagi Test Drive Nicchhh..!!



hwehehehe...
Maz.. Gaull e reekk... Pembalap asall PONOREOG....
Manstaps Bozzz..
SUzUKie Thunder 125 Modiped..!!

hwaakakakaka...