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 6 - Câu lệnh if
2023-10-22 07:46:44
Love2D
Học Lập Trình Lua
177 lượt xem
0 bình luận
Với câu lệnh if, chúng ta có thể cho phép các đoạn mã chỉ được thực thi khi đáp ứng một điều kiện. Bạn tạo một câu lệnh if như thế này: ```lua if condition then -- mã (code) end ``` Một điều kiện hoặc một tuyên bố một điều gì đó đúng (true) hoặc sai (false). Ví dụ: ```5 > 9``` Dấu ```>``` là dấu lớn hơn. Vậy điều khẳng định 5 lớn hơn 9 là sai (false). Đặt câu lệnh ```if``` thực thi mã ```x``` tăng. ```lua function love.update(dt) if 5 > 9 then x = x + 100 * dt end end ``` Khi chạy trò chơi, bạn sẽ nhận thấy hình chữ nhật của chúng ta không chuyển động. Điều này do tuyên bố là sai (false). Nếu chúng ta thay đổi câu lệnh thành 5 < 9 (5 nhỏ hơn 9), thì câu lệnh đó đúng (true) và mã bên trong câu lệnh ```if``` sẽ thực thi. Với thêm điều này, chúng ta có thể tăng ```x``` lên tới 600 và sau đó làm cho nó ngừng di chuyển, với x < 600 câu lệnh như sau: ```lua function love.update(dt) if x < 600 then x = x + 100 * dt end end ``` Mã đầy đủ lúc này ```lua function love.load() x = 100 end function love.update(dt) if x < 600 then x = x + 100 * dt end end function love.draw() love.graphics.rectangle("line", x, 50, 200, 150) end ```  Nếu muốn kiểm tra xem một giá trị nào đó có bằng giá trị khác hay không thì chúng ta cần sử dụng 2 dấu bằng (```==```). Ví dụ: 4 == 7 1 dấu bằng (```=```) là để gán giá trị, 2 dấu bằng (```==```) là để so sánh. ```lua x = 10 -- Gán giá trị 10 cho biến x x == 10 -- Giá trị 10 so sánh bằng với biến x ``` Chúng ta cũng có thể sử dụng ```>=``` và ```<=``` để kiểm tra xem các giá trị có lớn hơn hoặc bằng nhau hay không, và các giá trị có nhỏ hơn hoặc bằng nhau hay không. ```lua 10 <= 10 -- đúng, 10 nhỏ hơn hoặc bằng 10 (true) 15 >= 4 -- đúng, 15 lớn hơn hoặc bằng 4 (true) ``` Vì vậy đoạn mã trên là viết tắt của ```lua 10 < 10 or 10 == 10 15 > 4 or 15 == 4 ``` ### Boolean Một biến cũng có thể là ```true``` hoặc ```false```. Loại biến này được gọi là **boolean**. Hãy tạo một biến mới có tên là ```move```, với giá trị ```true``` và kiểm tra xem ```move``` có là ```true``` trong câu lệnh if của chúng ta không. ```lua function love.load() x = 100 move = true end function love.update(dt) -- Hãy nhớ, 2 dấu bằng để so sánh! if move == true then x = x + 100 * dt end end ``` ```move``` là ```true```, vì vậy hình chữ nhật của chúng ta sẽ di chuyển. Nhưng ```move == true```thực chất là dư thừa. Chúng ta đang kiểm tra xem giá trị của ```move``` là ```true```. Đơn giản chỉ cần sử dụng ```move``` như một tuyên bố là đủ rồi. ```lua if move then x = x + 100 * dt end ``` Nếu muốn kiểm tra xem có phải ```move``` không là ```true``` không, chúng ta có thể đặt ```not``` trước nó (not true = false). ```lua if not move then x = x + 100 * dt end ``` Hình chữ nhật sẽ không di chuyển vì tuyên bố cho kết quả là ```false``` Nếu chúng ta muốn kiểm tra xem một số có "không bằng" một số khác hay không, chúng ta sử dụng dấu ngã (~). ```lua if 4 ~= 5 then x = x + 100 * dt end ``` Chúng ta cũng có thể gán ```true``` hoặc ```false``` cho một biến bằng một câu lệnh. Ví dụ: move = 6 > 3. Chúng ta kiểm tra xem hành động có di chuyển hay không, sau đó thay đổi ```move = false``` bên trong câu lệnh if, thì đó không phải là chúng ta nhảy ra khỏi câu lệnh if. Tất cả mã bên dưới sẽ vẫn được thực thi. ```lua if move then move = false print("Điều này vẫn được thực thi!") x = x + 100 * dt end ``` ### Phím mũi tên bàn phím (Arrow keys) Hãy làm cho hình chữ nhật di chuyển dựa trên việc chúng ta giữ phím mũi tên phải. Để làm điều này, tôi sử dụng hàm ```love.keyboard.isDown``` ([wiki](https://www.love2d.org/wiki/love.keyboard.isDown)). Chú ý chữ D của ```Down``` là chữ hoa. Đây là cách viết mà tôi gọi là "lưng Lạc đà" ```camelCase```. Chúng ta bắt đầu từ đầu tiên bằng chữ thường và sau đó chúng ta nhập ký tự đầu tiên của mỗi từ tiếp theo bằng chữ hoa.  Cách viết này chúng ta sẽ sử dụng cho các biến của mình trong suốt hướng dẫn này. Chúng ta thêm chuỗi "right" làm đối số đầu tiên để kiểm tra xem phím mũi tên bên phải có bị hỏng hay không. ```lua if love.keyboard.isDown("right") then x = x + 100 * dt end ``` Bây giờ chỉ khi chúng ta giữ phím mũi tên phải thì hình chữ nhật của chúng ta mới di chuyển.  Chúng ta cũng có thể sử dụng ```else``` để yêu cầu trò chơi phải làm gì khi điều kiện là ```false```. Hãy làm cho hình chữ nhật của chúng ta di chuyển sang trái khi chúng ta không nhấn phím mũi tên bên phải. ```lua if love.keyboard.isDown("right") then x = x + 100 * dt else x = x - 100 * dt -- Chúng ta giảm giá trị của x end ``` Chúng ta cũng có thể kiểm tra xem một câu lệnh khác có đúng hay không, sau câu lệnh đầu tiên là sai, với ```elseif```. Chúng ta làm như sau khi kiểm tra xem phím mũi tên bên phải có bị hỏng hay không, chúng ta sẽ kiểm tra xem phím mũi tên bên trái có bị hỏng hay không. ```lua if love.keyboard.isDown("right") then x = x + 100 * dt elseif love.keyboard.isDown("left") then x = x - 100 * dt end ``` Bây giờ bạn tự cố gắng làm cho hình chữ nhật cũng di chuyển lên và xuống. ------ ### Và & hoặc (and & or) Với ```and``` chúng ta có thể kiểm tra xem nhiều câu lệnh có đúng hay không. ```lua if 5 < 9 and 14 > 7 then print("Cả hai câu đều đúng - true") end ``` Với ```or```, câu lệnh ```if``` sẽ thực thi nếu bất kỳ câu lệnh nào là đúng. ```lua if 20 < 9 or 14 > 7 or 5 == 10 then print("Một trong những tuyên bố này là đúng - true") end ``` ------ ### Một điều nữa Nói chính xác hơn, câu lệnh ```if``` kiểm tra xem câu lệnh đó không ```false``` hay ```nil``` (```nil``` được hiểu là "không có gì", khi biến có giá trị một số hay một chuỗi nào đó tức là ```not nil``` tôi gọi là "có gì đó"). ```lua if true then print(1) end --Được hiểu: "không sai" hoặc "có gì đó", thực thi (Not false or not nil, executes). if false then print(2) end --Được hiểu: "sai", không thực thi (False, doesn't execute). if nil then print(3) end --Được hiểu: "không có gì", không thực thi (Nil, doesn't execute). if 5 then print(4) end --Được hiểu: "không sai" hoặc "có gì đó", thực thi (Not false or not nil, executes). if "hello" then print(5) end --Được hiểu: "không sai" hoặc "có gì đó", thực thi (Not false or not nil, executes). --Output: 1, 4, 5 ``` ------ ### Bản tóm tắt Với câu lệnh ```if```, chúng ta có thể cho phép các đoạn mã chỉ được thực thi khi đáp ứng một điều kiện. Chúng ta có thể kiểm tra xem một số cao hơn, thấp hơn hay bằng một số hoặc giá trị khác. Một biến có thể đúng (true) hoặc sai (false). Loại biến này được chúng ta gọi là boolean. Chúng ta có thể sử dụng ```else``` để yêu cầu trò chơi của mình thực hiện điều gì khi câu lệnh sai (false) hoặc ```elseif``` để thực hiện một kiểm tra khác. ------ [Trước](/learn/detail?learnId=5) | [Mục lục](/learn/search?keyword=Lập%20trình%20games%20với%20Love2D) | [Kế tiếp](/learn/detail?learnId=7)
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