Tutorial:Hamster Ball (Tiếng Việt)


Hình chụp màn ảnh trò chơi.
Hình ảnh của quả bóng hamster (Lưu ý: Trong bài hướng dẫn này, coi như bạn đặt tên file hình này là hamster.png)

Trò chơi này là một ví dụ rất đơn giản minh họa cho việc thêm tài nguyên (ở đây là một hình đơn giản) vào trong chương trình và sau đó di chuyển hình đó bằng các phím mũi tên. Sau đây là toàn bộ mã lệnh, nếu như bạn chưa tải về:

-- Bài hướng dẫn 1: Hamster Ball
-- Thêm một hình ảnh vào trong trò chơi và di chuyển nó bằng
-- những phím mũi tên.
-- tương thích với löve 0.6.0 trở lên
 
function love.load()
   hamster = love.graphics.newImage("hamster.png")
   x = 50
   y = 50
   speed = 100
end
 
function love.update(dt)
   if love.keyboard.isDown("right") then
      x = x + (speed * dt)
   elseif love.keyboard.isDown("left") then
      x = x - (speed * dt)
   end
 
   if love.keyboard.isDown("down") then
      y = y + (speed * dt)
   elseif love.keyboard.isDown("up") then
      y = y - (speed * dt)
   end
end
 
function love.draw()
   love.graphics.draw(hamster, x, y)
end

Đây không phải là chương trình phức tạp lắm, nhưng ta vẫn phải bắt đầu bằng một chương trình cụ thể. Cần ghi nhớ rằng sau dấu -- trong mã lệnh là lời ghi chú và chương trình sẽ phớt lờ nó.

-- Ở đây bạn thích viết gì cũng được!

Được rồi, tiếp theo bạn cần biết rằng để mọi thứ hoạt động được bạn sẽ phải có một hàm tên là load. Đây là nơi mà trò chơi được khởi tạo và mọi thứ bắt đầu. Dù không cần thiết, song bây giờ ta nên kèm theo cả love.update()love.draw(). Ý nghĩa của các hàm này sẽ sớm được giải thích.

-- Đây là một chương trình trống không
function love.load()
end
 
function love.update(dt)
end
 
function love.draw()
end

Được rồi, bây giờ hãy đi vào giải thích mã lệnh cụ thể của chương trình này.

Hàm load trông như sau:

function love.load()
   hamster = love.graphics.newImage("hamster.png")
   x = 50
   y = 50
   speed = 100
end

Điều ta đang làm là thêm file hamster.png vào trò chơi bằng cách gán hình ảnh đó cho một biến có tên hamster. Ta cũng đang khai báo ba biến: x, yspeed. Sau này chúng đều sẽ tham gia vào trong chương trình. Hàm cập nhật sẽ trông như sau:

function love.update(dt)
   if love.keyboard.isDown("right") then
      x = x + (speed * dt)
   elseif love.keyboard.isDown("left") then
      x = x - (speed * dt)
   end
 
   if love.keyboard.isDown("down") then
      y = y + (speed * dt)
   elseif love.keyboard.isDown("up") then
      y = y - (speed * dt)
   end
end

Trước hết bạn sẽ thấy rằng hàm này nhận vào một tham số gọi là dt (viết tắt cho "delta-time"), vốn biểu thị cho thời gian trôi qua kể từ lần gọi hàm gần đây nhất. Nó được tính bằng giây, song tốc độ của bộ xử lý ngày nay thường nhỏ hơn 1 (nói chung là cỡ 0.01). Ta dùng giá trị này để di chuyển hình quả bóng với tốc độ đầu, bất kể máy tính ta dùng nhanh chậm ra sao.

Ở hàm trên ta kiểm tra xem các phím mũi tên sang phải, trái, lên hoặc xuống có bị bấm hay không bằng cách gọi hàm love.keyboard.isDown(key) với tham số thích hợp (một danh sách đầy đủ các tham số của phím bấm có thể xem ở đây). Bất kì lúc nào khi có phím thích hợp bị bấm thì giá trị x hoặc y sẽ tăng theo những lượng thích hợp (trong trường hợp này là speed nhân với dt có nghĩa là quả bóng sẽ di chuyển với một tốc độ 100 điểm ảnh mỗi giây; bạn hãy thử thay đổi giá trị speed trong hàm load để xem điều gì sẽ xảy ra).

Hàm draw (vẽ) trông như sau:

function love.draw()
   love.graphics.draw(hamster, x, y)
end

Không có nhiều điều xảy ra, nhưng đây chính là chỗ mà phép lạ xuất hiện. Hình ảnh chứa trong biến hamster được vẽ ra tọa độ xy.

Về cơ bản đó là trò chơi đầu tiên mà bạn viết. Hãy thử chỉnh các biến trong hàm love.load để xem chúng gây nên những hiệu ứng gì.

Hãy nhớ rằng các file .love có thể được mở bằng phần mềm nén thông dụng như WinZip hoặc 7zip. Thực ra chúng chỉ là các file .zip được đổi tên thôi!

Ngôn ngữ khác