Trang chủ Program Mô tả về Robocode WallE

Mô tả về Robocode WallE

bởi Tuyen Hoang Dinh

1. Giới thiệu về chiến thuật của robot

Chiến thuật được sử dụng ở đây là khóa một robot nhất định và di chuyển đến gần nó, khi đã tiếp cận được mục tiêu ở khoảng cách nhất định thì sẽ bắn mục tiêu đó. Khi mục tiêu đến quá gần với ta thì ta sẽ di chuyển vuông góc với mục tiêu để tránh mục tiêu

2. Giải thích về cách bắn và cách di chuyển

Đầu tiên chúng ta tìm thấy vận tốc bên (lateral velocity) của robot khác (tốc độ của robot khác đang di chuyển song song với ta) với công thức:

double absBearing=e.getBearingRadians()+getHeadingRadians(); // trục bắn của robot khác

double latVel=e.getVelocity() * Math.sin(e.getHeadingRadians()-absBearing);// vận tốc bên của robot khác

Để tìm độ lệch góc gần đúng,ta giả sử robot khác sẽ tiếp tục di chuyển song song với vận tốc bên cho đến khi viên đạn của ta chạm tới chúng, tạo cho ta một hình tam giác như thế này:

Hình ảnh này chưa có thuộc tính alt; tên tệp của nó là image.png

Ta sẽ quay nòng súng của ta theo mục tiêu dựa vào công thức:

gunTurnAmt = robocode.util.Utils.normalRelativeAngle(absBearing- getGunHeadingRadians()+latVel/22)

Và dự đoán hướng sẽ đi của mục tiêu để tiến đến đi đến theo công thức:

setTurnRightRadians(robocode.util.Utils.normalRelativeAngle(absBearing-getHeadingRadians()+latVel/getVelocity()))

Khi khoảng cách từ ta tới mục tiêu lớn hơn 150 thì ta đi thắng tới chỗ của mục tiêu đã được dự đoán:

setAhead((e.getDistance() – 140)*moveDirection); // đi thẳng

setTurnRightRadians(robocode.util.Utils.normalRelativeAngle(absBearing-getHeadingRadians()+latVel/getVelocity())); // lái xe về phía kẻ thù được dự đoán vị trí trong tương lai

Nếu khoảng cách từ ta tới mục tiêu mà nhỏ hơn 150 thì ta quay vuông góc với mục tiêu và di chuyển:

setTurnLeft(-90-e.getBearing()); // quay vuông góc với mục tiêu

Khi khoảng cách từ ta đến mục tiêu lớn hơn 150 thì ta sẽ bắn đạn có size là 3, còn khoảng cách nhỏ hơn 150 thì ta sẽ bắn đạn có size là 4

Khi đâm vào tường thì ta sẽ quay ngược hướng để tránh đâm tiếp vào tường

Nhấn để đánh giá bài viết!
[Số đánh giá: 2 Trung bình: 5]

Có thể bạn quan tâm

Để lại bình luận