Làm việc với Danh sách (List): chia đội, chọn ngẫu nhiên, xếp hạng
PC & MobileCập nhật 22/10/2026
Mục lục
Hễ có "nhiều" thứ — nhiều người chơi, nhiều đội, nhiều điểm hồi sinh — là bạn cần Danh sách. Nhiều API trả về danh sách sẵn, ví dụ GetAllPlayers() trả về List<entity<Player>>.
Các thao tác hay dùng nhất
func Length(target List<object>) int
func Append(target List<object>, value object)
func Remove(target List<object>, value object)
func RemoveAt(target List<object>, index int)
func Contain(target List<object>, value object) bool
func IndexOf(target List<object>, value object) int
func Shuffle(target List<object>)
func Clone(target List<object>) List<object>
func Clear(target List<object>)
- Chiều dài — đếm phần tử (VD: còn bao nhiêu người sống).
- Nối / Xóa / Xóa tại — thêm bớt phần tử.
Removexoá theo giá trị,RemoveAtxoá theo vị trí. - Chứa — kiểm tra một người có trong danh sách chưa, trước khi thêm để tránh trùng.
- Xáo trộn — đảo ngẫu nhiên thứ tự, nền tảng của mọi cơ chế "chọn ngẫu nhiên".
- Bản sao — tạo danh sách mới để xử lý mà không làm hỏng danh sách gốc.
Ví dụ 1: chia người chơi thành 2 đội ngẫu nhiên
// Minh hoạ theo chữ ký
var players = Clone(GetAllPlayers())
Shuffle(players)
var teams = GetAllTeams()
for i = 0 to Length(players) - 1
var team = teams[i % 2]
JoinTeam(players[i], team, out var status)
// kiểm tra status, LogError nếu thất bại
Vì sao Clone trước khi Shuffle? Để không thay đổi thứ tự của danh sách gốc nếu chỗ khác trong map cũng đang dùng nó.
Ví dụ 2: danh sách người còn sống
// Minh hoạ theo chữ ký
event OnPlayerQuit(player entity<Player>)
if Contain(alive, player)
Remove(alive, player)
if Length(alive) == 1
// còn 1 người → kết thúc giai đoạn
EndCurrentPhase()
Giá trị lớn nhất / nhỏ nhất
func Max(target List<object>, out var isSuccess bool, out var result Number)
func Min(target List<object>, out var isSuccess bool, out var result Number)
Hai hàm này trả kết quả qua out var kèm cờ isSuccess — sẽ thất bại nếu danh sách rỗng hoặc không phải số. Luôn kiểm tra isSuccess trước khi dùng result.
Danh sách đầy đủ: module Danh sách. Cần ánh xạ khoá → giá trị (VD: người chơi → điểm)? Xem module Từ điển.