Nhiều điều kiện

*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.

Các cấu trúc điều khiển có thể có nhiều hơn một điều kiện. Các từ khóa elseelseif có thể tạo ra các tình huống mới cho những gì nên xảy ra dưới một số điều kiện. Cấu trúc nhìn như:

Hiển thị ngữ cảnh cho else và else

if isGreen then
print("Go")
elseif isYellow then
print("Slow")
elseif isPedestrians then
print("Wait")
else
print("stop")
end

Trong dự án này, elseelseif được sử dụng để mã hóa một khóa học parkour nơi các nhà chạy nhận phần thưởng tùy thời gian kết thúc của họ.

Lập trình nhiều điều kiện

Đối với dự án này, bạn có thể viết một câu if độc đáo cho mỗi huy chương để trao cho người chơi, nhưng điều đó mất rất nhiều thời gian. Hãy, ví ví dụ / trường hợp, mã giả dưới đây.

Tất cả các if

if finishTime < 5 then
-- Nhận một huy chương vàng
end
if finishTime >= 5 and <= 10 then
-- Nhận huy chương bạc
end
if finishTime > 10 and <= 15 then
-- Nhận một huy chương bronze
end

Một cách đọc thông thái và hiệu quả hơn để code này là sử dụng một if statement và sử dụng từ khóa Alias để cung cấp các điều kiện alternatif để kiểm tra nếu các điều kiện trước không đúng.

Sử dụng else và else

if finishTime < 5 then
-- Nhận một huy chương vàng
elseif finishTime >= 5 and <= 10 then
-- Nhận huy chương bạc
elseif finishTime > 10 and <= 15 then
-- Nhận một huy chương bronze
end

Khi câu if/then được thực hiện, nó sẽ bắt đầu ở trên và chỉ chạy mã cho điều kiện đầu tiên mà nó tìm thấy.

Tùy chỉnh đường đua

Bắt đầu bằng cách đặt điểm xuất phát của khóa học và hàng đích, sau đó tạo một script để thời gian người chơi và trao các huy chương khác nhau.

  1. Tạo một phần khởi đầu có tên là FinishLine. Để làm cho kiểm tra nhanh hơn, hãy đặt khởi đầu và kết thúc gần nhau. Bạn có thể di chuyển dòng kết thúc sau khi hoàn thành script.

    Hoàn Thành Phần
    Toàn bộ khóa học
  2. Trong FinishLine, hãy thêm một script tên là RaceManager. Sau đó, thêm một biến đổi để lưu lượng thời gian đã chạy kể từ khi bắt đầu cuộc đua và một biến đổi thứ hai để tham chiếu FinishLine.


    local finishLine = script.Parent
    local timePassed = 0
  3. Tạo một chức năng tên là finish() .


    local timePassed = 0
    local finishLine = script.Parent
    local function finish()
    end
  4. Trên cá sở hữucủa bạn:

    • Lập một chức năng tên là partTouched() để chạy finish() khi một người chạm vào nó.
    • Kết nối phần dòng kết thúc đến partTouched() .
    • So sánh mã của bạn với ví dụ dưới đây.

    local function finish()
    print("touched the finish line")
    end
    local function partTouched(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    if humanoid then
    finish()
    end
    end
    finishLine.Touched:Connect(partTouched)
  5. Chơi thử và kiểm tra rằng finish() được gọi khi bạn chạm vào dòng chuẩn bị.

Giữ finish() khỏi lặp lại

Ngay bây giờ, mỗi khi một người chạm vào dòng chuẩn, finish() được gọi liên tục cho đến khi người chơi chạm vào phần.

Sử dụng một Boolean , một biến đổi lưu ý có thật hoặc không, để đảm bảo rằng fin() chỉ được gọi một lần.

  1. Tạo một biến mới có tên là raceActive và đặt nó thành true .


    local timePassed = 0
    local finishLine = script.Parent
    local raceActive = true
    -- Chạy mỗi khi người chơi chạm vào phần hàng xuất phát
    local function finish()
  2. Thêm một điều kiện thứ hai vào if để kiểm tra xem raceActive có đúng trước khi gọi finish() .


    local function partTouched(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    if humanoid and raceActive == true then
    finish()
    end
    end
  3. Để ngăn chặn finish() khỏi được gọi lại, hãy thiết lập raceActive để false .


    local function finish()
    print("touched the finish line")
    raceActive = false
    end
  4. Chơi test game của bạn để xem xét rằng bạn chỉ thấy tuyên bố in thử nghiệm của mình một lần.

Theo dõi thời gian

Giống như một if statement, một while loop cũng có thể sử dụng một điều kiện để xem nó nên chạy. Để thời gian người chơi, tạo một timer bằng cách sử dụng một while true do loop mà chỉ chạy khi raceActiveBoolean là đúng.

  1. Ở dưới cùng của script, nhập while raceActive == true do. Nhấn Enter để tự động hoàn thành và thêm end.


    finishLine.Touched:Connect(partTouched)
    while raceActive == true do
    end
  2. Để đếm người chơi, trong vòng lặp, thêm 1 đến biến timePassed mỗi giây. Bao gồm một câu chữ in để kiểm tra công việc của bạn.


    finishLine.Touched:Connect(partTouched)
    while raceActive == true do
    task.wait(1)
    timePassed += 1
    print(timePassed)
    end
  3. Chơi trò chơi và kiểm tra rằng bạn thấy mỗi giây được hiển thị trong Cửa sổ Ra mắt.

Đang trao Medals cho người chơi

Để kết thúc, hãy sử dụng một if statement với nhiều điều kiện để trao tặng người chơi một phần thưởng huy chương khác nhau dựa trên hiệu hiệu lựccủa họ. Sử dụng một if statement và hai if statement để kiểm tra thời gian kết thúc của người chơi và trao tặng họ phần thưởng đúng.

  1. Để xác nhận mỗi huy chương có thể được trao, hãy sử dụng các tuyên bố in.


    local function finish()
    raceActive = false
    print("You finished in " .. timePassed)
    end
  2. Để trao tặng một huy chương vàng, code một if statement that compares timePassed đến thời gian kết thúc mong muốn. This example checks if the người chơi's time was less than or equal to 10 seconds.


    local function finish()
    raceActive = false
    print("You finished in " .. timePassed)
    if timePassed <= 10 then
    print("You get a gold medal!")
    end
    end
  3. Thử nghiệm và xác nhận huy chương vàng có thể được trao.

Thêm Điều kiện Bổ sung

Bây giờ bạn đã thử cho huy chương vàng, điều kiện mã cho các huy chương khác bằng cách sử dụng từ khóa elseif .

  1. Đối với huy chương bạc, hãy sử dụng elseif và khoảng thời gian mục tiêu tiếp theo. Trong ví dụ này, khoảng thời gian là lớn hơn 10 giây nhưng nhỏ hơn hoặc bằng 20 giây.


    local function finish()
    raceActive = false
    print("You finished in " .. timePassed)
    if timePassed <= 10 then
    print("You get a gold medal!")
    elseif timePassed > 10 and timePassed <= 20 then
    print("You get a silver medal!")
    end
    end
  2. Sử dụng cùng một mẫu cho pha lê. Xem mẫu của bạn với ví dụ bên dưới.


    local function finish()
    raceActive = false
    print("You finished in " .. timePassed)
    if timePassed <= 10 then
    print("You get a gold medal!")
    elseif timePassed > 10 and timePassed <= 20 then
    print("You get a silver medal!")
    elseif timePassed > 20 and timePassed <= 30 then
    print("You get a bronze medal!")
    end
    end
  3. Thử nghiệm cho các huy chương bạc và đồng.

Mẹo dịch vụ

Nếu bạn không thấy các loại kim loại bạc và đồng xuất hiện, hãy thử một trong những lựa chọn dưới đây.

  • Mỗi elseif sau điều kiện của nó phải có một sau đó.
  • Trong partTouched() , hãy đảm bảo điều kiện thứ hai của if statement uses == , như in raceActive == true .
  • Kiểm tra mỗi elseif -number1 có phải là một elseif điều kiện hay không. Mỗi end điều kiện 1> if/then1> phải ở giữa dòng đầu tiên của if/then và nó kết thúc bằng dòng cuối cùng của if/then.

Thêm điều kiện Else

Nếu người chơi không nhận được bất kỳ trong số các huy chương, bạn nên khuyến khích họ thử lại. Trong trường hợp này, bạn có thể sử dụng một else tuyên bố, which runs if no other điều kiện là true, để hiển thị cho họ một tin nhắn.

  1. Dưới cái cuối cùng elseif và trên cái cuối cùng end, bắt đầu một dòng mới và nhập else . 1> không cần thêm1> thì. Dưới những khác, hãy sử dụng một lệnh in để kêu gọi họ thử lại.


    local function finish()
    raceActive = false
    print("You finished in " .. timePassed)
    if timePassed <= 10 then
    print("You get a gold medal!")
    elseif timePassed > 10 and timePassed <= 20 then
    print("You get a silver medal!")
    elseif timePassed > 20 and timePassed <= 30 then
    print("You get a bronze medal!")
    else
    print("Try again!")
    end
    end

2. Playtest để xem tin nhắn khác.

Tổng kết

Các cấu trúc điều khiển có thể có nhiều tình huống hơn một tình huống. Sử dụng nếu các tuyên bố để cài đặt tuyên bố ban đầu để kiểm tra, và sau đó thêm nhiều điều kiện elseif như cần thiết. Cuối cùng, sử dụng else để tuyên bố những

Bắt đầu ở trên, tất cả các điều kiện sẽ được kiểm tra, và chỉ có điều kiện đầu tiên thực sự mới có thể chạy mã. Các điều kiện còn lại sẽ không được kiểm tra và mã của họ cũng sẽ không chạy.

Sau khi kết thúc dự án, bạn có thể mở rộng trên script để thêm các thành phần mới bằng một vài cách thêm cách thức nữa.

  • Thêm mã để người chơi có thể lặp lại cuộc đua bằng cách chạm vào dòng xuất phát khi họ kết thúc.
  • Thiết kế cách hiển thị thời gian trong một cuộc đua. Bạn có thể hiển thị thời gian trên một bộ phận bằng cách sử dụng một Surface GUI, như trong hướng dẫn Tạo một cầu thời gian.
Completed script

local timePassed = 0
local finishLine = script.Parent
-- Được sử dụng để giữ cho việc kết thúc() và timer không lặp lại khi cuộc đua kết thúc
local raceActive = true
-- Chạy khi người chơi chạm đến hàng đích và hiển thị cho họ một giải thưởng
local function finish()
raceActive = false
print("You finished in " .. timePassed)
if timePassed <= 10 then
print("You get a gold medal!")
elseif timePassed > 10 and timePassed <= 20 then
print("You get a silver medal!")
elseif timePassed > 20 and timePassed <= 30 then
print("You get a bronze medal!")
else
print("Try again!")
end
end
-- Kiểm tra xem một người chạm vào bộ phận khi một cuộc đua đang diễn ra
local function partTouched(otherPart)
local character = otherPart.Parent
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
if humanoid and raceActive == true then
finish()
end
end
finishLine.Touched:Connect(partTouched)
-- Ghi nhận thời gian của cuộc đua khi cuộc đua đang diễn ra. Yêu cầu được ở dưới cùng của màn hình.
while raceActive == true do
task.wait(1)
timePassed += 1
print(timePassed)
end