"Premature optimization is the root of all evil", Donald Knuth.

Thursday, May 26, 2016

Viết game java đơn giản - P1

Loạt bài này dành cho đối tượng có kiến thức cơ bản về lập trình hoặc mới tiếp cận Java. Demo sản phẩm của bài viết (phiên bản cũ):

Game được viết bằng ngôn ngữ Java 8. Tuy đây là game 3D nhưng được viết hoàn toàn bằng API 2D, vì vậy quá trình viết game sẽ có phần liên quan nhiều đến toán học và vật lí (quang học).
Việc lập trình được thực hiện trên Linux (Arch Linux) nên sẽ có vài phần không phù hợp với người dùng Windows.

Cài đặt môi trường lập trình  

 

IDE 


IDE dùng trong bài viết là Eclipse. Download ở đây .
(Phần này chỉ dành cho linux) Do Eclipse (phiên bản mới nhất - Mars 2) chưa hỗ trợ hoàn toàn GTK3 (xem ở đây ) nên ở một số máy sẽ gặp lỗi không thể tạo project mới. Để khắc phục lỗi này, thêm 2 dòng:
--launcher.GTK_version
2
vào file eclipse.ini để yêu cầu Eclipse sử dụng GTK2, chú ý cần thêm 2 dòng này trước dòng --launcher.appendVmargs .

JDK 


Để lập trình java, tất nhiên bạn phải cài java, mà cụ thể ở đây là JDK (Java Development Kit). Bạn có thể tải ở đây . Tuy nhiên, với người dùng Linux, tôi khuyến khích sử dụng bản java do nhà phân phối distro cung cấp.Để tạo project mới, vào File -> New -> Java project. Người dùng cần nhập tên cho project, ở đây tôi chọn tên BoxRacing. Các mục khác có thể để mặc định. Sau khi đã nhập tên, chọn Finish để hoàn tất quá trình.

Đến đây, việc cài đặt môi trường lập trình đã hoàn tất. Bước tiếp theo là tạo một class mới. Một chương trình Java gồm nhiều class, mỗi class sẽ được viết trong một file .java riêng biệt, có tên trùng với tên của class. Trên giao diện Eclipse, chọn File -> New -> Class, và nhập tên của class. Ở đây tôi chọn tên main .
Sau khi hoàn tất, file main.java sẽ được mở, có nội dung:
public class main {

}
Nhập nội dung như sau cho class main:
public class Main {
    public static void main(String args[]){
        System.out.println("Hello!!");
    }
} 
Sau đó nhấn CTRL+F11 để chạy chương trình, Eclipse sẽ hiện lên dòng chữ "Hello!!" ở console bên dưới.

Giải thích:
Mỗi chương trình Java sẽ có một hàm đặc biệt được khai báo:
public static void main(String args[])
Đây sẽ là hàm chứa những lệnh sẽ được thực thi khi chương trình bắt đầu. Dòng:
System.out.println("Hello!!");
sẽ xuất ra stdout (standard output) dòng chữ "Hello!!". Đây là một chương trình rất đơn giản, tuy nhiên chương trình chúng ta đang viết cần một giao diện graphical, tức là có một window và có thể vẽ trên window đó. Để thực hiện việc này, chúng ta sẽ sử dụng API swing và awt do Java cung cấp. Mã nguồn mới như sau:

import javax.swing.JFrame;

public class Main extends JFrame{
    public static void main(String argv[]){
        JFrame f = new JFrame("BoxRacing");
        f.setSize(200,200);
        f.setVisible(true);
    }
}
Tiếp tục nhấn CTRL+F11 để dịch và chạy chương trình, ta thu được một window nhỏ như hình sau:

Giải thích:
JFrame f = new JFrame("BoxRacing");
Tạo một object (có thể xem là biến - variable - như trong các ngôn ngữ khác) mới kiểu JFrame, object này được khởi tạo với String "BoxRacing" (là title của window sẽ được tạo).
f.setSize(200,200);
Quy định kích thước của window.
f.setVisible(true);
Yêu cầu chương trình hiển thị window được tạo thành.
Với cách này ta hoàn toàn có thể có nhiều window cho một chương trình.

Kết thúc phần 1

No comments:

Post a Comment