TRANG CHỦ
CHUYÊN MỤC
HỌC HỎI
TAG
ABOUT
Tìm kiếm
Lập trình games với Love2D - Chương 4 - LÖVE
2023-10-20 17:20:48
Love2D
Học Lập Trình Lua
200 lượt xem
0 bình luận
LÖVE là gì? LÖVE là cái mà chúng ta gọi là khuôn khổ. Nói một cách đơn giản: Đó là một công cụ giúp việc lập trình trò chơi trở nên dễ dàng hơn. LÖVE được tạo bằng C++ và OpenGL, cả hai đều được coi là rất khó. Mã nguồn của LÖVE rất phức tạp. Nhưng tất cả những đoạn mã phức tạp này khiến việc tạo trò chơi trở nên dễ dàng hơn rất nhiều đối với chúng ta. Ví dụ, với ```love.graphics.ellipse()```, chúng ta có thể vẽ một hình elip. Đây là mã nguồn đằng sau nó: ```c++ void Graphics::ellipse(DrawMode mode, float x, float y, float a, float b, int points) { float two_pi = static_cast
(LOVE_M_PI * 2); if (points <= 0) points = 1; float angle_shift = (two_pi / points); float phi = .0f; float *coords = new float[2 * (points + 1)]; for (int i = 0; i < points; ++i, phi += angle_shift) { coords[2*i+0] = x + a * cosf(phi); coords[2*i+1] = y + b * sinf(phi); } coords[2*points+0] = coords[0]; coords[2*points+1] = coords[1]; polygon(mode, coords, (points + 1) * 2); delete[] coords; } ``` Bạn có thể hoàn toàn không hiểu đoạn mã này (bản thân tôi cũng gần như không hiểu) và đó chính xác là lý do tại sao tôi sử dụng LÖVE. Nó xử lý những phần khó khăn trong việc lập trình một trò chơi và để lại phần thú vị cho chúng ta. ------ ### Lua Lua là ngôn ngữ lập trình mà LÖVE sử dụng. Lua là một ngôn ngữ lập trình riêng và không được tạo ra bởi hay dành cho LÖVE. Những người tạo ra LÖVE chỉ đơn giản chọn Lua làm ngôn ngữ cho framework của họ. Vậy phần nào trong mã mà chúng ta mã hóa là LÖVE và cái nào là Lua? Rất đơn giản: Mọi thứ bắt đầu bằng ```love.``` đều là một phần của khuôn khổ LÖVE. Mọi thứ khác đều là Lua. Đây là một phần chức năng của khung LÖVE: ```lua love.graphics.circle("fill", 10, 10, 100, 25) love.graphics.rectangle("line", 200, 30, 120, 100) ``` Và đây chỉ đơn giản là Lua: ```lua function test(a, b) return a + b end print(test(10, 20)) --Output: 30 ``` Nếu nó vẫn làm bạn bối rối thì không sao. Đó không phải là điều quan trọng nhất trong lúc này. ------ ### LÖVE hoạt động như thế nào? ------ Bạn bắt buộc phải cài đặt LÖVE vào thời điểm này. Quay lại [Chương 1](/learn/detail?learnId=1) nếu bạn chưa làm vậy. ------ LÖVE gọi 3 chức năng (hàm). Đầu tiên nó gọi ```love.load()```. Ở đây tôi tạo ra các biến của tôi. Sau đó, nó gọi ```love.update()``` và ```love.draw()```, lặp đi lặp lại theo thứ tự đó. Vì vậy: ```love.load``` -> ```love.update``` -> ```love.draw``` -> ```love.update``` -> ```love.draw``` -> ```love.update```, v.v. Đằng sau hậu trường, LÖVE gọi các hàm này và tôi tạo ra chúng cũng như điền đối số vào chúng. Đây là những gì tôi gọi là *hàm gọi lại*. LÖVE được tạo từ các mô-đun, ```love.graphics```, ```love.audio```, ```love.filesystem```. Có khoảng 15 học phần, mỗi học phần tập trung vào 1 nội dung. Mọi thứ bạn vẽ đều được thực hiện bằng ```love.graphics```. Và mọi thứ có âm thanh đều được thực hiện bằng ```love.audio```. Bây giờ, hãy tập trung vào ```love.graphics```. LÖVE có một [wiki](https://www.love2d.org/wiki/Main_Page) kèm theo lời giải thích cho từng chức năng. Giả sử chúng ta muốn vẽ một hình chữ nhật. Trên wiki tôi truy cập [love.graphics](https://www.love2d.org/wiki/love.graphics) và trên trang tôi tìm kiếm "rectangle". Ở đó tôi tìm thấy [love.graphics.rectangle](https://www.love2d.org/wiki/love.graphics.rectangle).  Trang này cho chúng ta biết hàm này làm gì và nó cần những đối số gì. Đối số đầu tiên là ```mode```, và cần phải thuộc loại ```DrawMode```. Chúng ta có thể nhấp vào [DrawMode](https://www.love2d.org/wiki/DrawMode) để biết thêm thông tin về loại này.  DrawMode là một chuỗi có thể là "fill" hoặc "line" và kiểm soát cách vẽ các hình dạng. Tất cả các đối số sau đây là numbers (số). Vì vậy, nếu chúng ta muốn vẽ một hình chữ nhật đầy màu sắc, chúng ta có thể làm như sau: ```lua function love.draw() love.graphics.rectangle("fill", 100, 200, 50, 80) end ``` Bây giờ khi chạy trò chơi, bạn sẽ thấy một hình chữ nhật lấp đầy màu trắng.  Các chức năng mà LÖVE cung cấp được tôi gọi là API. API là viết tắt của Giao diện lập trình ứng dụng ([Application Programming Interface](https://en.wikipedia.org/wiki/API)). Bạn có thể đọc bài viết trên Wikipedia để tìm hiểu chính xác API là gì, nhưng trong trường hợp này nó chỉ có nghĩa ở các hàm LÖVE mà bạn sử dụng. ### Bản tóm tắt LÖVE là một công cụ giúp chúng ta làm game dễ dàng hơn. LÖVE sử dụng ngôn ngữ lập trình Lua. Mọi thứ bắt đầu bằng đều ```love.``` là một phần của khuôn khổ LÖVE. LÖVE Wiki cho chúng ta biết mọi thứ về cách sử dụng LÖVE. ------ [Trước](/learn/detail?learnId=3) | [Mục lục](/learn/search?keyword=Lập%20trình%20games%20với%20Love2D) | [Kế tiếp](/learn/detail?learnId=5)
Gợi ý bài học liên quan
Awesome Love2D
Lập trình games với Love2D - Visual Studio Code
Lập trình games với Love2D - Chương 24
Lập trình games với Love2D - Chương 23
Lập trình games với Love2D - Chương 22