Quản lý / Tổng quan
Kết quả ván đấu
Kết quả ván đã được ghi nhận
Tỷ số 0-0
Đang chuẩn bị ván tiếp theo
BẮT ĐẦU LẬP TRÌNH
Tạo chiến thuật, kiểm tra trong sandbox và lưu phiên bản để tham gia giải đấu.
OTT Code Arena dùng Strategy SDK 1.0.0. Mỗi lượt, hệ thống truyền trạng thái hiện tại và danh sách nước đi hợp lệ vào hàm chiến thuật. Bot chỉ cần chọn và trả về một phần tử trong danh sách đó.
Bạn không cần viết main, đọc JSON, xử lý stdin/stdout, Docker hoặc vòng lặp trận đấu. Hệ thống quản lý toàn bộ phần giao tiếp và kiểm tra nước đi.
using namespace std;
Move chooseMove(const GameState& state,
const vector<Move>& legalMoves) {
return legalMoves.front();
}from ott_strategy_sdk import Move, GameState
def choose_move(state: GameState, legal_moves: list[Move]) -> Move:
return legal_moves[0]| Dữ liệu | C++17 | Python 3 |
|---|---|---|
| Trạng thái | GameState | GameState |
| Nước đi | Move | Move |
| Quân cờ | Piece | Piece |
| Danh sách nước hợp lệ | vector<Move> | list[Move] |
GameState: protocol_version, match_id, turn (bắt đầu từ 1), player (A/B), board_size (9), pieces.
Piece: id, type (dam/la/keo), player, pos dạng a1–i9. Move C++: piece_id, from, to, captures, has_capture. Move Python: piece_id, from_position, to, captures.
Nước không ăn quân có has_capture == false ở C++ và captures is None ở Python. Khi có ăn quân, captures là ID quân bị ăn.
a đến i, hàng 1 đến 9.dam (Búa), la (Bao), keo (Kéo).dam bắt keo, keo bắt la, la bắt dam. Không bắt được quân cùng loại, quân của mình hoặc quân không khắc chế.i9; người chơi B hướng tới a1. Đưa quân tới ô đích sẽ thắng.legalMoves/legal_moves đã được hệ thống tạo theo đúng luật và không nên tự sửa thứ tự.// C++17: chọn nước đầu tiên
return legalMoves.front();
// C++17: ưu tiên nước ăn quân
for (const Move& move : legalMoves) {
if (move.has_capture) return move;
}
return legalMoves.front();
# Python 3: ưu tiên nước ăn quân
for move in legal_moves:
if move.captures is not None:
return move
return legal_moves[0]
Bạn có thể duyệt state.pieces để biết vị trí, loại và người sở hữu từng quân; sau đó chọn nước phù hợp trong danh sách hợp lệ.
chooseMove (C++) hoặc choose_move (Python).null, None hoặc tự tạo nước đi không hợp lệ.Quy trình nên dùng: viết mã nguồn → Chạy thử → sửa lỗi → lưu phiên bản → chọn phiên bản đó khi đăng ký giải đấu. Phiên bản đã ghim sẽ không thay đổi khi bạn chỉnh sửa mã nguồn sau này.
chooseMove, Python phải là choose_move.Trong Không gian mã nguồn, nhập hoặc sửa mã rồi chọn Chạy thử. Hệ thống chạy Bot hiện tại đấu với Bot hệ thống cố định trong môi trường sandbox. Khi chạy xong, bạn được chuyển sang trang Xem lại trận đấu để xem bàn cờ, nước đi và kết quả.
Trận thử không lưu kết quả vào giải đấu và không tạo thay đổi cho phiên bản đã lưu.
Chọn Tạo Bot cho Bot mới hoặc Lưu phiên bản để tạo phiên bản bất biến mới. Mỗi phiên bản giữ nguyên mã nguồn, môi trường chạy và thông tin SDK tại thời điểm lưu.
Khi đăng ký giải đấu, hệ thống ghim đúng Bot ID và phiên bản bạn chọn. Nếu sau đó lưu R2, phiên bản R1 đã đăng ký vẫn giữ nguyên và không tự chuyển sang R2.
Kiểm tra chiến thuật trong Docker sandbox trước khi tham gia giải đấu.
Chưa chọn phiên bản
Sẵn sàng đấu với Bot hệ thống.
—
Bạn có chắc muốn xóa Bot «»?
Chỉ Bot chưa có phiên bản mã nguồn bất biến và chưa được giải đấu tham chiếu mới có thể bị xóa. Các Bot đã có phiên bản cần được giữ lại để bảo toàn lịch sử và kết quả thi đấu.
Bạn có chắc muốn xóa phiên bản «»?
Phiên bản đã xóa không thể khôi phục. Nếu đây là phiên bản đang chọn, hệ thống sẽ chuyển sang phiên bản khác trước khi xóa.
Thiết lập giải đấu để đăng ký Bot và tổ chức các trận đấu.
Chọn một Bot của bạn và đặt tên hiển thị cho người tham gia trong giải đấu.
Đang tải danh sách Bot…
Giải đấu đang chọn
Hãy tạo Bot trước khi đăng ký tham gia giải đấu.
Hãy thử lại trước khi đăng ký tham gia giải đấu.
Chưa chọn Bot và revision
Tên này được hiển thị trong danh sách và kết quả của giải đấu.Đang đưa revision vào hàng đợi kiểm tra.