Cảm ơn rất nhiều đến nhulan ( người có công chính trong việc dịch bài hướng dẫn này ) nhưng vì dịch ít quá nên tui lại phải dịch phần còn lại. Nhưng công của nhulan là rất lớn vì đây là phần có nhiều từ khó dịch nhất. Và tôi dịch bài này chỉ nhằm giúp đỡ những ai chưa có những hiểu biết cơ bản về RGSS & Ruby. Mong mọi người tiếp tục ủng hộ.
Dịch từ bài hướng dẫn của Dubealex.
Tài Liệu Về Ngôn Ngữ Hướng Đối Tượng - RUBY
Chương I : Ruby & RGSS
1- Ruby là gì ?
Mã:
Ruby là một OOP-ngôn ngữ lập trình hướng đối tượng. Trong khi những người dùng ở phía Tây mới chỉ nghe đến Ruby thì ở Nhật Bản , Ruby đã có sự phổ biến vượt xa cả Python (một OOP khác)
[i][u]Vậy cái gì đã làm cho Ruby trở nên phổ biến như vậy ?[/u][/i]
Ruby đã thêu dệt nên những nét đặc biệt nhất của những ngôn ngữ lập trình. Những nét đó chính là :
-[b]Sức mạnh[/b]: Ruby là sự kết hợp giữa sức mạnh hướng đối tượng thuần túy của ngôn ngữ OOP cổ điển với sức diễn đạt và sự tiện lợi của ngôn ngữ kịch bản (script) của [b]Perl[/b]. Chương trình của Ruby rất nhỏ gọn, rất dễ đọc và còn có thể giữ được (maintainable) ; ngòai ra bạn còn có thể hoàn tất một vài dòng lệnh mà không có gì là khó hiểu.
-[b]Tính đơn giản[/b] : Cú pháp và nghĩa của nó rất trực quan và dễ đọc (clean). Và cũng không có “những trường hợp đặc biệt” nào mà bạn cần phải ghi nhớ ^_^. Như các ví dụ (instance), số nguyên (integer), hay các lớp (classes), vừa đủ giống vối mọi thứ khác. Mỗi khi bạn học những cái cơ bản, nó rất dễ dàng để đoán trước được cách làm những cái mới hơn -> đoán đúng ^^.
-[b]Tính vô hình[/b]:Ruby giải phóng bạn khỏi sự cực nhọc (drudgery) trong việc nhồi nhét của các trình biên dịch (complier). Nhiều hơn những ngôn ngữ khác mà chúng ta có thể làm được, Ruby nằm trong thẩm quyền của bạn do đó bạn có thể tập trung giải quyết các lỗi bằng tay.
-[b]Sẵn có[/b]: Ruby là nguồn mở nên có thể sử dụng một cách tự do đối với người dùng hay người phát triển. Không giống như nhiều ngôn ngữ mới khác, Ruby không giới hạn bạn về mật nền HĐH và pháp lý (vendor). Ruby có thể chạy trên Unix hay Linux , Microsoft Windows và những hệ thống chuyên dụng khác nữa như các OS hay những cái khác.
& Hầu hết thì Ruby đặt sự vui thích ở phía sau trong trong việc lập trình. Khi mà lần đầu tiên bạn cảm thấy thích thú khi viết một chương trình - một chương trình có thể làm việc được trong lần đầu tiên, một chương trình đọc được ngày tới, tháng tới, hay năm tới mà bạn chỉ có thể hiểu được chính xác như thế ? Chúng ta tìm thấy ở Ruby như một hơi thở mới trong sự rối loạn (dense), một sự cuồng nhiệt trong thế giới lập trình. ( hơi lằng nhằng ^^ )
[...]
Ruby là một ngôn ngữ hướng đối tượng xác thực. Tất cả những thứ mà bạn làm chỉ là các đối tượng và kết quả của việc bạn làm cũng chính bản thân đối tượng đó .
[...]
Giống như [b]Perl[/b], Ruby cũng giỏi về xử lý văn bản. Giống [b]SmallTalk[/b], mọi thứ trong Ruby đều là những đối tượng, Ruby còn có thêm các khối (block), phần bên trong (interator), các siêu lớp (meta-class) và những thứ tốt khác.
& Bạn có thể dùng Ruby để viết những server, hay những thí nghiệm của mẫu ban đầu (phototype), và cho công việc lập trình mỗi ngày. Ruby có qui mô tốt vì là một [b][u]ngôn ngữ hướng đối tượng thống nhất và đầy đủ[/u][/b]. ^_^
[b]Điểm đặc trưng của Ruby :[/b]
Cú pháp đơn giản.
Mang các đặc điểm của ngôn ngữ hướng đối tương cơ bản như nhiều lớp (classes), nhiều phương thức (methods), nhiều đối tượng (objects) và hơn nữa).
Mang thêm các đặc diểm đặc biệt khác như sự pha trộn (mix-ins), nhiều phương thức gỡ rối (singleton methods), sự thay đổi tên (renaming), ....
Quá tải toán tử (operation overloading).
Tiến hành các ngoại lệ (Exception handling).
Sự nhắc lại (iterator) và sự đóng kín (closures).
Trình gom và xử lý rác (garbage collection).
Nhập liệu động (dynamic loading) và độc lập trong cấu trúc.
Tính khả chuyển cao (high transportability) –> chạy trên nhiều nền khác nhau như : Unices, Windows, DOS, OSX, OS/2, Amiga và hơn nữa. ( tui cũng chỉ dựa trên nghĩa và chút ít hiểu biết của mình về lập trình ^^. Vì vậy, nếu có sai thì làm ơn sửa hộ ^^ )
Và như bạn đã thấy, Ruby là một ngôn ngữ OOP <Object Oriented Programing> và nhiều chi tiết về OOP nữa sẽ được đề cập ở các phần sau. Thực ra thì Ruby là một nguồn mở cho phép bạn tải về công cụ để tạo chương trình từ bất cứ website nào. Bạn có thể ghé qua trang chủ của Ruby là
www.rubycentral.org để tải các công cụ này.
2- Lịch sử của Ruby
Mã:
Ruby được tạo ra bởi Yukihiro Matsumoto (hay còn được gọi là Matz)
Bị ảnh hưởng của [b]Perl[/b], Matz muốn sử dụng tên của một lọai đá quí để đặt tên cho một ngôn ngữ của anh ta, vì thế cái tên Ruby ra đời sau khi Matz nhìn thấy viên đá quí của bạn đồng nghiệp ^_^.
Và sau đó anh ta nhận thấy rằng Ruby giống với [b]Perl[/b] ở một vài điểm. Trong đá quí thì pearl là tháng sáu còn ruby là tháng bảy. Khi đo cỡ font chữ thì pearl là 5pt Ruby là 5.5pt. Từ đó anh ta nghĩ Ruby là một cái tên hay cho một ngôn ngữ lập trình mới hơn (hi vọng nó sẽ tốt hơn) so với [b]Perl[/b].
[...]
[i]<< Theo những lời trích dẫn của Matz trênRuby Talk >>[/i]
“Ruby được tạo ra ngày 24 tháng 2 năm 1994, khi tôi đang nói chuyện với bạn đồng nghiệp về khả năng của một ngôn ngữ OOP và những đặc điểm phụ thêm cho nó. Là một Fan hâm mộ OOP trong 15 năm, tôi muốn ngôn ngữ xác thực trong hướng đối tượng-OOP, và sử dụng ngôn ngữ kịch bản một cách dễ dàng. Tôi đã tìm kiếm nhưng cuối cùng vẫn không tìm được cái nào.” ^_^
“Vì thế tôi quyết định tạo ra nó. Tôi phải mất vài tháng để làm sao hiểu được cách vận hành. Tôi đặt vào nó những đặc điểm mà tôi cho là cần, chẳng hạn như sự nhắc lại (iterator) ; sự đóng kín (closures) hay trình gom và xử lý rác (garbage collection).”
“Sau đó tôi đã tổ chức lại những đặc điểm của [b]Perl [/b]vào thư viện của các lớp (class) và bổ sung chúng. Tôi đã cho ra mắt Ruby bản 0.95 tại Nhật Bản ở một nhóm thảo luận trong nước vào tháng 12 năm 1995.”
“Kể từ đó, danh sách thư của tôi rất nhiều nên phải lập cả một trang web riêng.”
3- Hướng đối tượng-OOP là gì ?
Một ngôn ngữ lập trình hướng đối tượng hay OOP là một ngôn ngữ mà tất cả những gì mà bạn thao tác chính là “đối tượng” (objects).
(Ghi chú : Một “ngôn ngữ” là tập hợp tất cả các cú pháp (syntax), giới hạn (term), qui tắc (rules) và cấu trúc (structure) được dùng để tạo ra một chương trình nào đó. C++ ; JAVA ; Ruby là những ngôn ngữ khác nhau.)
Mọi ngôn ngữ hướng đối tượng đều có ít nhất một khía cạnh giống nhau, đó là vì chúng đều là những OOP. ^_^ Cấu trúc cơ bản mà chúng xử lý là như nhau. Một OOP là một tập hợp bao gồm những thành phần chính và chức năng của chúng.
Bao Gồm :
- Các lớp – Class
- Những phương thức – Methods
- Những thông điệp – Messages
- Những đối số – Arguments
- Biến và hằng số – Variables/Constants.
Giải thích sơ đồ:
-Các lớp
-Thông điệp
-Biến số/Hằng số
-Phương thức[/u] + CODE
Biến số/Hằng số
Một
lớp thì chứa các
biến và
phương thức định nghĩa.
- Một
phương thức chứa các
biến định nghĩa và
CODE.
- Một
thông điệp có thể chứa các
đối số.
- Một
đối tượng là một trường hợp của một
lớp.
- Một
đối tượng liên lạc qua các
thông điệp và
đối số.
Ví dụ về các đối tượng trường hợp :
Hãy xem một
lớp như một nhà máy xe hơi, và một
đối tượng chính là một chiếc xe hơi. Nhà máy sẽ chứa những
chức năng cần thiết để sản xuất mộ chiếc xe hơi, và mỗi chiếc xe sẽ được xem như những
trường hợp (instance) khác nhau của cùng một thứ. Những chiếc xe “
trường hợp” này khi đó sẽ những
đối tượng khác nhau và có thể bị sửa đổi mà không bị
ảnh hưởng đến các chiếc xe
đối tượng khác. Khi công ty xe hơi cần một chiếc xe khác, họ có thể yêu cầu nhà máy của họ sản xuất một chiếc mới một cách dễ dàng. Một khi nhà máy (class) được tạo ra, nó sẽ tiết kiệm được rất nhiều thời gian khi mà bạn không cần phải thực hiện lại ở mỗi chiếc xe (object) một cách thủ công.
Ví dụ về sự liên lạc và thuộc tính của đối tượng
Khi mà bạn muốn truy xuất ( hiểu đại loại là muốn xét ) một thuộc tính của một đối tượng, bạn cần gửi một thông điệp cho nó, và nó có thể cho bạn một câu trả lời. Và khi bạn muốn thay đổi thuộc tính của một đối tượng, bạn cũng cần gửi một thông điệp đến nó, để nó tự sửa đổi. Trong RPG Maker XP, một Hero sẽ có nhiều thuộc tính như tên “Name”, máu “HP” hay cấp độ “Level”. Khi bạn mở menu chính trong game của bạn, bạn có thể thấy được các thuộc tính này (Level, Name và HP) trên màn hình. RPG Maker XP đã làm ở phía sau là gửi một thông điệp đến đối tượng Hero để yêu cầu những thông tin về thuộc tính của nó.
Một phương thức thường được định nghĩa sao cho một đối tượng có thể nhận được các thông điệp, và cái gì sẽ xảy ra khi nó nhận được thông điệp đó. Như một ý thức, đối tượng sẽ liên kết với cái tạo ra nó là lớp (class) cùng lúc với khi thông điệp được gửi tới đối tượng, và phương thức có liên quan trong lớp đó sẽ được thi hành.
Quay trở lại ví dụ về Hero của chúng ta : Có nghĩa là lớp định nghĩa Hero trong RPG Maker XP có một phương thức cho mỗi thông điệp mà bạn gửi đến.
Và cũng có nghĩa là bạn sẽ tìm thấy một phương thức được gọi là tên “Name”, phương thức này sẽ định nghĩa những gì sẽ xảy ra khi thông điệp được gửi và nhận. ( nếu cảm thấy khó hiểu thì bạn thử thay từ phương thức = method. Và method đại loại như là một việc làm gì đó ví dụ class “buổi sáng” có nhiều method và trong số đó có method “ đánh răng “ ^^ ).
(Ghi chú: mỗi phương thức sẽ dùng để đáp ứng hay trả lời cho nhiều thông điệp ^^).
4- RGSS là gì ?
"Ruby Game Scripting System" – Hệ thống kịch bản game viết bằng Ruby. RGSS sử dụng Ruby như ngôn ngữ của chính nó. Vậy nếu bạn biết về Ruby bạn cũng sẽ biết về RGSS. Sự khác biệt giữa RGSS và Ruby rất quan trọng khi bạn biết là nên xem RGSS như là một ngôn ngữ “kịch bản” (scripting) đã sử dụng để tạo thêm các thành phần. Chỉ trong Ruby, nếu bạn muốn hiển thị một hình ảnh lên màn hình bạn không thể chỉ sử dụng cùng một cú pháp như bạn đã sử dụng trong RM XP ( chính cái đó tạo ra sự lằng nhằng của RGSS với các ngôn ngữ thông thường khác ^^ ), bạn phải nhập Code lại với các chức năng đi lên.
Ví dụ : Để hiển thị hình ảnh bằng RGSS ta làm như sau :
Mã:
image = Sprite.new
image.bitmap = RPG::Cache.picture(name of picture)
Thật cơ bản, bạn chỉ cần có hai dòng hiển thị hình ảnh lên màn hình, bởi vì bạn sử dụng lớp tên là “Sprite” đã được lập trình sẵn trong RPG Maker XP (Không có sẵn trong
Script Editor). Và bạn cũng sử dụng một môđun (module) “RPG” cũng không có sẵn trong
Script Editor. Tất cả là làm cho công việc của bạn dễ dàng hơn và nhanh hơn khi nhập Code cho game của bạn. ( Nếu được tôi sẽ post tất cả các module và class của RPGXP trong một ngày không xa. Nhưng chỉ là để bạn tiện tra cứu thôi vì ngay bản thân phần help của RPG Maker cũng đã có đầy đủ rùi ( tui sẽ lấy ở đó mà chỉ khác là tui sẽ dịch nghĩa cú pháp thui ^^ )
Nhưng khi RGSS sử dụng Ruby, và đó chính là RPG Maker XP sử dụng Ruby (ver 1.80), bạn có thể nhập Code mới một lớp “Sprite” và sử dụng nó hay thêm các chức năng vào trong nó.
Vì thế, tất cả có nghĩa là RGSS có ít phức tạp hơn so với Ruby ( cái này tui không đồng tình với dubealex nhưng vẫn phải ghi để tôn trọng bản quyền ), bởi vì xử lý ở cấp độ thấp và được quản lý bởi RPG Maker XP cho nên bạn không cần phải nhập Code cho chúng nữa.
(Ghi chú: xử lý cấp độ thấp có nghĩa là những thứ mà bạn phải nhập Code để hiển thị hình ảnh, để nói chuyện với máy tính (trong Windows), đọc một File nào đó, hay trình bày một File nào đó v.v...)
5- Script Editor của RPG Maker XP
RPG Maker XP được xây dựng với một trình “
Sửa chữa mã” –
Script Editor gắn kèm cho phép bạn Sửa/Thêm những gì mà chúng ta gọi là kịch bản “Scripts”. Thực ra những kịch bản này chính là RGSS Code (dùnh cú pháp & sức mạnh của Ruby) cho phép thêm/sửa đổi các đặc điểm của RPG Maker XP. Khi bạn mở
Script Editor lên bạn có thể thấy rất nhiều “Script” đã có trong đó, chính là những script mặc định để một game mặc định chạy, như đối tượng Hero mà chúng ta đã nói ở phần3. Cách mà hãng Entebrain những script thành các lớp. Mỗi lớp nằm trong một trang của riêng nó (cho dù bạn có trộn nhiều lớp vào trong một trang).
Để mở và sử dụng
Script Editor bạn nhấn phím F11 hay Menu > Tool rồi chọn “Script Editor” hoặc sử dụng biểu tượng trên thanh công cụ.
Lưu ý rằng tên thật của lớp chính là tên mà bạn đặt cho trang (bố cục “tên trang” gồm phần dưới cùng bên trái của cửa sổ), không có gì để làm đối với tên lớp, nó chỉ là tên của script mà thôi. Và nó có thể là bất cứ tên nào, nó không nhất thiết là tên của lớp, như tôi đã nói từ trước, bạn có thể thêm nhiều lớp vào cùng một trang.
Màu CODE:
Có nhiều màu Code được sử dụng khi bạn soạn thảo script của bạn, hãy biết rằng màu Code là sự tiện lợi nhất như lập trình trong Ruby (một số thẻ màu đã bị bỏ).
Màu xanh :
Màu xanh được trình bày các cú pháp Code, như
def,
class,
end,
when,
if,
case, …
Màu đỏ :
Màu đỏ được sử dụng để trình bày các con số, như
1,
2,
3 và
5 ...
Xanh da trời :
Màu xanh da trời được sử dụng để trình bày các xử lý và các toán tử, như
=,
+, và
*
Màu xanh lá :
Màu xanh lá được sử dụng để trình bày lòi chú giải của bạn, lời chú giải được lờ đi trong Code của bạn, nó giống như những gì bạn ghi chú về công việc mà bạn đang làm hay chức năng của Code.
img]http://www.dubealex.com/index.php?act=Attach&type=post&id=149[/img]
Màu tím :
Màu tím được dùng như văn bản (thường là một chuỗi) thành phần trong Code của bạn trong suốt chiều dài với những biểu tượng chỉ dẫn của Ruby.
5- Những đặc tính của Script Editor :
Script Editor của RPG Maker XP có một vài những đặc tính cơ bản, như là Search ( tìm kiếm ), Replace ( thay thế ) và Go to Line ( đến một dòng bất kì ). Ở đây có một danh sách của những tùy chọn đó.
Những đặc tính hiển thị code (mã ) :
( Nhấn chuột phải vào code view ( đoạn trắng ( hiển thị mã ) ) để nhìn thấy tất cả đặc tính )
-> Những lệnh sẵn có từ Window Cut/Copy/Paste/Undo.
-> Tìm kiếm ( Control + F ).
-> Thay thế ( Control + H ).
-> Go To Line ( Control + G ).
-> Phóng to/nhỏ ( Control + con cuộn ( của chuột ) ).
Những đặc tính của page list ( hiển thị trang ) :[/b]
Và một điều khác ( giống một tin mừng ) vì bạn có thể sử dụng Unicode trong Script Editor vì RPG Maker XP và Ruby là những sản phẩm của người nhật ( vỗ tay vì Enterbrain đã làm một việc đúng đắn và ném trứng thối vì dùng Ruby là ngôn ngử chủ đạo để tạo ra RGSS ^^ ).
Đó hỏi đây trả lời ( phần này Dubealex ko có ^^ ) :
Đó hỏi : Học RGSS để làm gì
Đây trả lời : Bạn thích tui trả lời kiểu gì ^^.
Đó hỏi : Tất cả các kiểu.
Đây trả lời : Thứ nhất, nếu bạn đang dùng RPG Maker XP thì khỏi bản vì nếu nắm rõ nó thì gần như bạn có thể biên soạn tòan bộ phần program của game theo ý thích. Ví dụ như thay đổi CMS ( hệ thống menu ) thay đổi CBS ( hệ thống óanh nhau ) và còn rất nhiều rất nhiểu những cai khác. Tiện đây tôi cũng nói luôn rằng, trình độ RGSS của tôi còn rất hạn chế, tôi chỉ post những cái gì tôi đã học được và hiểu. Vì trên tôi còn rất nhiều người đi trước ( tôi biết vậy ) về RGSS như Faha, Zubachi, Ice Dragon ( nhưng hình như lão này bỏ rùi hay sao í ^^ ).
Thứ hai, nếu bạn không dùng RPG Maker XP thì học RGSS cũng như học Ruby mà học Ruby là học lập trình ( ^^ ). Mà Ruby là một ngôn ngữ nền tảng để học lập trình. Nên vì thế bạn cũng không lo học thừa đâu.
Tôi chỉ có thể nghĩ được một câu hỏi để trả lời ngay ai có câu hỏi nào thì cứ tiếp tục post nhé. Thank lot.
</SPAN>