Per 2016, RMID pindah ke RMID Discord (Invite link dihapus untuk mencegah spambot -Theo @ 2019). Posting sudah tidak bisa dilakukan lagi.
Mohon maaf atas ketidaknyamanannya dan mohon kerjasamanya.
|
|
| [Tutorial] Ruby basic syntax | |
| |
2013-02-11, 20:53 | [Tutorial] Ruby basic syntax |
---|
TheoAllen ♫ RMID Rebel ♫
Posts : 4935 Thanked : 63
Awards:
| First topic message reminder :Disini w mau bahas soal basic2 pemrograman ruby. Karena gw yakin, yg ga ngerti script dari dasar dan mau coba-coba ngoprek RGSS di dalem RPG Maker pasti bakalan bingung.
Langsungan aja.
Requirement:
- Instal ruby. Caranya ada disini ~> http://ruby.about.com/od/beginningruby/ss/Installing-A-Ruby-Development-Environment-On-Windows.htm
- Ngerti cmd / console (bagi yg g ngerti ane ntar terangin deh)
- Notepad++
- Siap mental
- Ada lappie / kompie
- Willpower
Getting started: Nah, sekarang w anggap u dah nginstal rubynya dan punya Notepad++ Eit, jangan keburu dlu Ini sekedar saran sih. bikin folder > namain "Ruby" > taruh di tempat yang paling enak dijangkau. Kalo saran gw sih - Code:
-
C:\Ruby Itu ntar folder buat nyimpen file2 eksperimen ruby.
Sekarang, kalian buka cmdnya. Lewat run > cmd (WinXP) ato search program > cmd (Win7)
Langkah berikutnya, persiapin kaek gini
https://dl.dropbox.com/u/41797508/Galeries/SS/Ruby/cmd.jpg Command "cd.." buat keluar dari directory / folder. dan Command "cd<spasi>namafolder" buat masuk subdirectory / folder Jangan diclose cmd-nya
Langkah selanjutnya, - buka notepad++ - Language > ruby (buat highlight syntax)
Nah, persiapan beres. Kalian bisa mulai eksperimen ruby
Chapter one: Basic operations ------------------------------------------ 1.Simple Syntax Tulis di notepad++ kaek gini - Code:
-
puts 'hello' simpen pake nama terserah. kalo bisa sih dikasi nomer. mau dinomorin 001.rb jg boleh. Ntar bakal keluar kaek gini
=> https://dl.dropbox.com/u/41797508/Galeries/SS/Ruby/001.jpg Well, simple enough.
Things to know:- Tulisan yang berada dalem quote atau double quote itu disebut sebagai String
- keyword "puts" itu syntax buat ngeprint nilai / value
Let us advance to the next step
------------------------------------------ 2.Getting and putting input Sekarang kita nyoba masukan nama dari input user. Kaek gini nih - Code:
-
print('enter name ') name = gets() puts("Hello #{name}") Ntar bakal keluar kaek gini
=> https://dl.dropbox.com/u/41797508/Galeries/SS/Ruby/002.jpg
Things to know:
- Disini kan gw pake print ama puts. Bedanya, kalo print setelah dieksekusi, ngga ganti baris. Kalo puts, stelah dieksekusi, ganti baris
- kata "name" adalah yang disebut namanya variable. variable "name" itu ntar bisa dipake nyimpen suatu nilai (bisa berupa angka atau huruf). Di kasus contoh ini, variable "name" nyimpen masukan huruf dari user (angka jg bisa).
- Double quote ama single quote itu beda. Single quote lebih ke ngeprint apa adanya, sedangkan double quote ngeprint nilai dari variable "name" dalam contoh itu. Coba aja puts bawah ndiri diganti
- Code:
-
puts 'Hello #{name}' - Gets, buat nerima masukan dari user.
- Sbenernya () itu optional. Kalopun diilangin, ntar jalannya bakalan ttep sama. Cuman ntar di kasus laen, kurung kaek gt berguna buat meminimalisir keambiguan script
- Nama variable di Ruby itu case sensitif. Variable dengan nama "myVar" dengan "myvar" sudah merupakan hal yang berbeda banget.
- Line terakhir. #{nama_variable} itu semacem command buat ngeprint nilai dari variable dalam {}. command2 laen juga ada. macem \n buat ganti baris. dan \t buat tab
Sebenernya #{} bukan cuman buat ngeprint nilai variable. tapi jg bisa digunain langsung kaek gini - Code:
-
puts "1+2+3 = #{1+2+3}" ------------------------------------------ 3.Numbers Sekarang ayok kita belajar berhitung - Code:
-
attack = 100 defend = 50 damage = attack - defend puts "attack = #{attack} \ndefend = #{defend} \nthen damage = #{damage}" Outputnya ntar kaek gini
=> https://dl.dropbox.com/u/41797508/Galeries/SS/Ruby/003.jpg
Things to know:
- Dalam scripting, sequence / urutan itu penting. kodenya g akan jalan kalo semisal u bikin kaek gini
- Code:
-
damage = attack - defend attack = 100 defend = 50 Karena dalam baris pertama, program ga ngerti apa itu "attack" dan "defend"
- Beberapa basic operasi itung2ngan di ruby
- (=) buat ngeset nilai
- (+) Buat nambah nilai
- (-) Buat ngurangin nilai
- (*) Buat mengali nilai
- (/) Buat ngebagi nilai
- (%) Buat ngambil sisa bagi. Cnth : 20%3 ~> 2 (sisa bagi)
Sekarang coba bikin kode baru kaek gini - Code:
-
attack = 100 p attack attack += 100 p attack attack -= 150 p attack Outputnya ntar kaek gini
=> https://dl.dropbox.com/u/41797508/Galeries/SS/Ruby/004.jpg
Things to know:
- p << ini sbenernya buat nyimpelin "puts"
- Attack += 100 itu sama dengan kaek u bikin
- Code:
-
Attack = Attack + 100 Coba aja replace kalo g percaya
- Attack = Attack + 100 itu semisal nilai "Attack" awalnya 100, operasinya yg berjalan ntar kaek gini
- Code:
-
<Nilai attack yg baru> = <Nilai attack lama> + 100 - Beberapa list operasi yang dapat dipake
- (+=) Penambahan
- (-=) Pengurangan
- (*=) Perkalian
- (/=) Pembagian
- (%=) Sisa bagi
Kode berikutnya - Code:
-
damage = 100 damage = damage.to_f p damage damage = damage.to_s p damage damage = damage.to_i p damage Outputnya ntar kaek gini
=> https://dl.dropbox.com/u/41797508/Galeries/SS/Ruby/005.jpg
Things to know:
- (.to_f) itu convert bilangan ke tipe "float" dimana "float" itu macem pecahan gt
- (.to_s) buat convert ke tipe string / text
- (.to_i) buat convert ke tipe integer / bilangan bulat
------------------------------------------ 4.Control flow : Conditional Branch Di RPG Maker, kalian pasti udah tau conditional branch. If <Kondisi benar> then <kondisi kalo benar> else <kalo salah>. Di Ruby juga ada beginian. Langsung aja, coba kode kaek gini - Code:
-
attack = 100 defend = 50 if attack > defend p "damage delivered" else p "damage nullified" end Males aplod screenshot. Kalian tau kalo attack > defend nilainya bener. Maka script ntar akan ngeprint "damage delivered". kalo ngga, berarti "damage nullified"
Nilai kebenaran attack > defend bisa disimpen dalam variable lain. Coba dibikin kodenya kaek gini. Ntar outputnya juga sama aja - Code:
-
attack = 100 defend = 50 switch = attack > defend if switch p "damage delivered" else p "damage nullified" end Cara lain buat bikin kondisi bercabang, coba kaek gini - Code:
-
attack = 100 defend = 50 switch = attack > defend
switch ? puts("damage delivered") : puts("damage nullified") Yang ini strukturnya agak sesuatu well, formatnya gini - Code:
-
<kondisi> ? <kalo benar> : <kalo salah> Ato juga cuman dibikin satu line. - Code:
-
p "damage delivered" if switch # Formatnya | <lakukan sesuatu> if <kondisi disini benar> Yang kaek gini biasanya ditemui di script2 RGSS yang saling keterkaitan. Kyak add-on script gitu. Misalnya - Code:
-
<command here> if <script anu diimport> Kalo keyword "if" itu buat eksekusi kondisi yang dinyatakan benar, sekarang kebalikannya yaitu "unless" - Code:
-
attack = 100 defend = 150 switch = attack > defend
unless switch p "damage nullified" else p "damage delivered" end ato - Code:
-
p "damage nullified" unless switch Kita jg bisa mbalik nilai kebenaran dari variable "Switch" dengan nambahin ( ! ) tepat didepan nama variable. Kaek gini - Code:
-
attack = 100 defend = 150 switch = attack > defend
if !switch p "damage nullified" else p "damage delivered" end Things to know:- ( > ) Pembanding lebih besar dari
- (< ) Pembanding lebih kecil dari
- ( >= ) Pembanding lebih besar atau sama dengan
- (<= ) Pembanding lebih kecil atau sama dengan
- ( == ) Pembanding sama dengan. Inget, bukan pake ( = ) karena symbol itu buat ngeset nilai
- ( != ) Pembanding tidak sama dengan
------------------------------------------ 5.Control flow : Advanced Conditional Branch Sekarang kita bikin input dari user - Code:
-
print "input attack = " attack = gets.to_i print "input defend = " defend = gets.to_i
if attack > defend p "damage delivered" elsif attack == defend p "damage nullified" else p "damage absorbed" end things to know :
- gets.to_i itu buat convert input dari user ke bentuk integer. Karena fungsi gets sbenernya mbaca string. Jadi sbelum bisa dioperasikan ke bentuk anga, kudu diubah dlu.
- elsif itu sbenernya bikin kondisi baru setelah else pertama.
Kode berikutnya. Masi sama kek atasnya. Cuman beda dikit - Code:
-
print "input attack = " attack = gets.to_i print "input defend = " defend = gets.to_i
if attack > defend && attack > 0 && defend > 0 p "damage delivered" elsif attack == defend && attack > 0 defend > 0 p "damage nullified" elsif attack < defend && attack > 0 && defend > 0 p "damage absorbed" else p "parameter must above 0" end Things to know :
- (&&) itu artinya AND. Dimana AND itu jika dua kondisi yg menghubungkannya benar, maka nilainya benar. Buat testing di notepad, u bisa bikin kode simple kaek gini
- Code:
-
p (10 > 1 && 10 < 1) trus liat apa keluarannya
- ( || ) yang ini artinya OR. Dimana OR itu jika salah satu kondisi benar, maka semuanya benar. Coba kode diatas ganti gini
- Code:
-
p (10 > 1 || 10 < 1)
Sekarang kita coba macem pilihan - Code:
-
print "input number (1-4) = " choice = gets.to_i
case choice when 1 p "lu Maho" when 2 p "lu homo" when 3 p "lu jelek" when 4 p "lu ganteng" else p "g ada di pilihan coy :v" end Things to know :
- case itu ibaratnya kasus.
- when adalah kemungkinan-kemungkinan kasus
- else ibaratnya rencana terakhir kalo semua kondisi g masuk
Sekarang kita coba bikin sequence attack dan perhitungannya. Awas, persiapan mental. Yang disibi banyak banget kondisi2 yang perlu ditulis. Jadi siap2 mental ya?
Sebelumnya, gw kasi satu fungsi di ruby dulu. Coba kode ini - Code:
-
p rand * 10 rand itu fungsi ngegenerate bilangan random dari limit mendekati 0 ampe limit mendekati 1. kalo u mau bikin angka random dari 0 ampe 10, u kudu bikin rand * 11
Langsung ke codenya aja - Code:
-
hit_chance = rand * 11 eva_chance = rand * 11 cri_chance = rand * 11
damage = 0 print "input attack = " attack = gets.to_i print "input defend = " defend = gets.to_i
hit_rate = hit_chance < 7 eva_rate = eva_chance < 3 cri_rate = cri_chance < 1
success = hit_rate && !eva_rate if success damage = attack - defend if cri_rate damage * 3 p "critical! damage = #{damage}" else p "damage = #{damage}" end elsif !hit_rate p "attack missed" elsif eva_rate p "enemy evaded" end Output
Sequence script yg ngurus attack aja butuh panjang kaek gitu Well, things to know:- Wa disana pake bilangan random buat nentuin kemungkinan miss, evade, dan critical
- Variable "success" nilainya bener kalo attack masuk (hit_rate == true) dan musuh g evade (eva_rate == false)
- Kalo sukses, kita itung lagi. Critical ngga? Kalo critical berarti damagenya dikali 3. Kalo ngga ya biasa aja deh
- Kalo ngga sukses, masuk ke else if. Kalo serangan ga masuk, cetak miss
- Kalo masuk tapi musuh evade, berarti cetak evade
Udah ah, segini dulu. Cape bro nulisnya. Ntaran deh gw lanjut
Reference: => http://www.sapphiresteel.com/ruby-programming/The-Book-Of-Ruby
Terakhir diubah oleh TheoAllen tanggal 2013-02-26, 19:55, total 8 kali diubah |
| | |
2013-02-28, 19:09 | Re: [Tutorial] Ruby basic syntax |
---|
TheoAllen ♫ RMID Rebel ♫
Posts : 4935
Awards:
| emang g ada link donlotnya. Disana mah cara2nya kesini aja kalo mo instal ruby http://ruby.about.com/gi/o.htm?zi=1/XJ&zTi=1&sdn=ruby&cdn=compute&tm=9&f=00&su=p284.13.342.ip_p504.6.342.ip_&tt=29&bt=0&bts=1&zu=http%3A//rubyinstaller.org/
Terakhir diubah oleh TheoAllen tanggal 2013-02-28, 19:45, total 1 kali diubah |
| | | 2013-02-28, 19:25 | Re: [Tutorial] Ruby basic syntax |
---|
Hierony Newbie
Posts : 56 Thanked : 0 Engine : RMVX Skill : Beginner Type : Jack of All Trades
| @ Theo: Theo, kata linknya FIle not found -_- |
| | | 2013-02-28, 19:46 | Re: [Tutorial] Ruby basic syntax |
---|
TheoAllen ♫ RMID Rebel ♫
Posts : 4935 Thanked : 63
Awards:
| Bercanda lu mah kalo file not found :ngacay2 |
| | | 2013-02-28, 21:34 | Re: [Tutorial] Ruby basic syntax |
---|
Hierony Newbie
Posts : 56 Thanked : 0 Engine : RMVX Skill : Beginner Type : Jack of All Trades
| @ Theo: Sory gan, ada kok.. neh lagi DL. Tapi lag banget nih wireless kampus. Theo? punya ga buku tuts tentang Ruby? Kalau ada share donk gan.. |
| | | 2013-02-28, 21:36 | Re: [Tutorial] Ruby basic syntax |
---|
Shazuu Newbie
Posts : 64 Thanked : 1 Engine : Multi-Engine User Skill : Intermediate Type : Event Designer
| yg di sini alhamdulillah ane udah paham dan ngerti, ane yg belum paham tentang class, method dkk nya huakakakakka, mohon bantuannya mastah theo |
| | | 2013-03-01, 06:41 | Re: [Tutorial] Ruby basic syntax |
---|
TheoAllen ♫ RMID Rebel ♫
Posts : 4935 Thanked : 63
Awards:
| | | | | Re: [Tutorial] Ruby basic syntax |
---|
Sponsored content
| | | | | [Tutorial] Ruby basic syntax | |
|
Similar topics | |
|
Similar topics | |
| |
Halaman 2 dari 2 | Pilih halaman : 1, 2 | |
| Permissions in this forum: | Anda tidak dapat menjawab topik
| |
| |
Latest 10 Topics | [Web Novel] Gloria Infidelis 2016-11-17, 21:27 by LightNightKnight
[Announcement] Forum baru untuk RMID 2016-08-25, 16:39 by TheoAllen
Where I'm Wrong ? 2016-07-24, 16:10 by ReydVires
flakeheartnet's Resources part III 2016-07-08, 14:30 by flakeheartnet
Keira's Art Warehouse 2016-06-28, 19:27 by KeiraBlaze
Theo Core Time System + Bingung 2016-06-27, 16:24 by Lockin
Error Script, Maybe ? 2016-06-27, 16:20 by Lockin
Nusaimoe @ RMID Lounge 2016-06-21, 05:02 by Jihad Bagas
Call Random Battle 2016-06-15, 17:04 by Lockin
Flakeheartnet Resources Part II [come back gift] 2016-06-07, 15:51 by flakeheartnet
|
Statistics
|
Members: [ 4947 ]
Topics: [ 8258 ]
Posts: [ 112606 ]
Newest member: [ https://rmid.forumotion.net/u4968 ]
|
|
|
|
|
|