Skip to content

Getting Started

D.A.N_3002 edited this page Aug 8, 2022 · 12 revisions

1. Tải và cài đặt SDK.

Để cài đặt SDK, bạn sẽ cần tải file Jar của SDK tại phần Releases của repo. Hãy tải bản mới nhất của SDK và cài đặt vào Project của bạn. Mỗi một IDE sẽ có các cách khác nhau để thêm file Jar vào dự án, bạn có thể tham khảo một số tài liệu dưới dây:

2. Tạo mới 1 Hero.

Bạn sẽ sử dụng Class Hero để tạo người chơi cho game.

import io.socket.emitter.Emitter;
import jsclub.codefest.bot.constant.GameConfig;
import jsclub.codefest.sdk.model.Hero;
import jsclub.codefest.sdk.socket.data.GameInfo;
import jsclub.codefest.sdk.util.GameUtil;

import java.util.Random;

public class RandomPlayer {
    final static String SERVER_URL = "https://codefest.jsclub.me/";
    final static String PLAYER_ID = "player2-xxx";
    final static String GAME_ID = "da2d6f34-47a4-4470-9503-b134038e2247";

    public static void main(String[] args) {
        Hero randomPlayer = new Hero(PLAYER_ID, GAME_ID);
    }
}

Bạn sẽ truyền vào constructor của Hero hai tham số là

  • player_id
  • game_id

Các tham số này bạn sẽ được cung cấp sau khi tạo một Tranning Stage hoặc sẽ được BTC cung cấp khi các team thi đấu với nhau.

3. Kết nối Hero tới Server và phòng chơi.

Để kết nối Hero tới phòng chơi, bạn sẽ sử dụng hàm connectToServer() của Class Hero.

randomPlayer.connectToServer(SERVER_URL);

Bạn sẽ cần truyền vào hàm này tham số là server_url tương ứng với link của server thi đấu.

4. Lấy dữ liệu của Map.

Để bắt sự kiện mà Server gửi dữ liệu xuống cho người chơi, bạn sẽ cần tạo một Emitter.Listener như sau:

Emitter.Listener onTickTackListener = objects -> {

};

Bên trong Listener này, bạn sẽ viết các đoạn code để xử lý dữ liệu và di chuyển khi mà Server gửi tới người chơi. Để đọc được dữ liệu mà Server gửi đến, bạn sẽ cần sử dụng hàm GameUtil.getGameInfo như sau:

Emitter.Listener onTickTackListener = objects -> {
    GameInfo gameInfo = GameUtil.getGameInfo(objects);
};

Hàm này sẽ trả về dữ liệu ở dạng GameInfo, từ đó bạn có thể lấy ra các thông tin của toàn bộ bản đồ.

Sau khi khai báo xong Listener, bạn sẽ cần set Listener đó cho Hero bằng hàm setOnTickTackListener()

randomPlayer.setOnTickTackListener(onTickTackListener);

5. Di chuyển người chơi.

Để di chuyển người chơi trên bản đồ, bạn sẽ sử dụng hàm move của Class Hero

public class RandomPlayer {
    final static String SERVER_URL = "https://codefest.jsclub.me/";
    final static String PLAYER_ID = "player2-xxx";
    final static String GAME_ID = "da2d6f34-47a4-4470-9503-b134038e2247";

    public static String getRandomPath(int length) {
        Random rand = new Random();

        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < length; i++) {
            int random_integer = rand.nextInt(5);
            sb.append("1234b".charAt(random_integer));
        }

        return sb.toString();
    }

    public static void main(String[] args) {
        Hero randomPlayer = new Hero(PLAYER_ID, GAME_ID);
        Emitter.Listener onTickTackListener = objects -> {
            GameInfo gameInfo = GameUtil.getGameInfo(objects);
            randomPlayer.move(getRandomPath(10));
        };
        randomPlayer.setOnTickTackListener(onTickTackListener);
        randomPlayer.connectToServer(SERVER_URL);
    }
}

Hàm move này được truyền vào một tham số dưới dạng chuỗi bao gồm các hành động mà bạn muốn Hero thực hiện:

  • 1: Rẽ trái
  • 2: Rẽ phải
  • 3: Tiến
  • 4: Lùi
  • b: Đặt bom
  • x: Dừng