_ Yêu cầu:
- Robocode, .NET plug-in cho Robocode và Java phải được cài đặt trước. Nếu chưa cài bạn có thể tham khảo tại đây.
- Visual Studio 2005 trở lên (ở đây tôi dùng Visual Studio 2010).
_ Tạo solution cho robot của bạn:
Mở Visual Studio và tạo mới 1 project (File -> New -> Project).
Chọn ngôn ngữ C#, kiểu project là Class Library, nhập tên project và solution, chỉ định đường dẫn rồi bấm OK (Chú ý, Robocode chỉ load được .NET robot bằng file .dll, nên hãy chắc chắn rằng bạn chọn kiểu project là Class Library nhé).
_ Cài đặt Project References
Để có thể cài đặt được robocode, bạn phải add thư viện robocode vào project của mình. Trong cửa sổ Solution Explorer, click chuột phải vào mục References chọn Add Reference..
Chuyển qua tab Browse, tìm đến file robocode.dll trong thư mục libs theo đường dẫn: …/robocode/libs/robocode.dll. Dấu … được thay bằng đường dẫn bạn chỉ đến khi cài đặt Robocode (Mặc định là C:/robocode/libs/robocode.dll).
Bấm chọn file robocode.dll rồi OK. Nếu cài thành công, ‘robocode’ sẽ xuất hiện trong mục Reference (Nếu không tìm thấy file robocode.dll trong thư mục libs, rất có thể bạn chưa cài .NET plug-in cho Robococe hoặc cài 2 gói này không đúng vị trí. Bạn có thể tham khảo cách cài tại đây).
_ Tạo robot class:
Bây giờ thì bạn đã sẵn sàng tạo robot đầu tiên của mình rồi. Trước tiên hãy xóa file Class1.cs đi, vì nó chẳng có ích gì cả. Sau đó click chuột phải vào project, chọn Add -> New Item (hoặc bấm Ctrl + Shift + A), chọn Class trong cửa sổ vừa hiện ra, nhập tên cho nó rồi bấm OK.
Để sử dụng thư viện Robocode, bạn cần thêm vào câu lệnh sau:
using Robocode;
Tiếp theo, để tiện cho việc quản lý robot sau này, bạn nên thay đổi namespace của project bằng tên, nickname … của mình cho dễ nhớ (namespace này sẽ xuất hiện khi bạn thêm robot vào trận chiến). Tên assembly cũng là tên của robot, để robot của mình là duy nhất và không bị trùng tên, bạn nên đặt tên theo chuẩn sau:
<tên bạn(viết tắt)>.<tên robot>_<phiên bản>
Click chuột phải vào project, chọn Properties. Nhập tên robot theo chuẩn trên vào mục Assembly name, mục namespace là tên của mình (viết tắt).
Đồng thời bạn cũng đổi namespace trong class giống với namespace mà bạn vừa thay đổi.
Sau đó hãy chỉ ra bạn sẽ sử dụng loại robot nào bằng cách kế thừa từ lớp robot đó. Có các lớp robot như Robot, AdvancedRobot, JuniorRobot… Ở đây tôi sẽ kế thừa từ lớp Robot.
class MyFirstRobot: Robot
OK giờ code cho robot hoạt động thôi. Việc di chuyển của robot sẽ dựa vào phương thức Run(), nếu muốn tùy biến theo ý thích của mình, bạn sẽ cài đặt lại phương thức này. Phương thức này là phương thức chính của robot, có thể gọi các phương thức khác như Ahead(), TurnLeft() … (Chú ý các hoạt động của phương thức này nên được đặt trong vòng lặp vô hạn, vì bạn sẽ không muốn robot của mình đứng im cho đối phương bắn đến chết trong trận chiến đâu)
public override void Run()
{
//Khởi tạo ban đầu robot sẽdi chuyển sang phải
TurnLeft(Heading – 90);
//Quay súng sang phải 90 độ (so với mặt robot)
TurnGunRight(90);
while (true)
{
// Các câu lệnh trong này sẽ lặp vô tận
// Đi thẳng 5000 pixel (đi cho đến khi đụng khung)
Ahead(5000);
// Sau khi đụng thì quay phải 90 độ
TurnRight(90);
// Con robot này sẽ di chuyển quanh viền liên tục cho đến khi kết thúc trận đấu
// hoặc bị bắn chết 😀
}
}
Đó là cách thức di chuyển của robot, các bạn hãy tùy biến cho robot của mình di chuyển thông minh nhất có thế để dò tìm cũng như né tránh các đòn tấn công của đối phương.
Bây giờ chúng ta sẽ đến với phần quan trong không kém, kill someone :D. Khi di chuyển robot có thể quét được có ai trong tầm ngắm của mình hay không sử dụng phương thức OnScannedRobot(). Để thực hiện các công việc cần thiết khi quét được một ai đó chúng ta sẽ viết lại phương thức này. Giả sử khi quét được 1 robot khác thì chúng ta sẽ bắn ra 1 viên đạn. Code như sau:
public override void OnScannedRobot(ScannedRobotEvent evnt)
{
// Bắn ra 1 viên đạn có sức mạnh = 1
Fire(1);
}
Và đây là toàn bộ code:
_Biên dịch:
Click Build Solution từ menu Build hoặc bấm phím F7. Để ý ở cửa sổ Output xuất hiện chữ Build Succeeded như bên dưới thì OK.
_Thêm Robot vào battle
Chạy file Robocode lên (mặc định là ở Desktop). Chọn menu Options – > Preferences
Trong hộp thoại vừa xuất hiện, chọn tap Development Options, bấm vào nút Add, chỉ định đường dẫn đến project của bạn như sau: …<tên solution>\<tên project>\bin\Debug\ rồi bấm Open. Ví dụ đường dẫn của tôi là D:\Study\MyRobotSolution\MyProject\bin\Debug.
Sau khi add chúng ta sẽ có kết quả như sau:
Bấm Finish.
_Thử tạo trận chiến (battle) mới
Từ menu Batlle -> New hoặc (Ctrl + N).
Nếu bạn add thành công, robot của bạn sẽ xuất hiện như sau:
Cột bên trái là cột Packages, là tên namespace của bạn, cột giữa là các robot trong namespace đó, và bên phải là cột robot đã chọn vào trận chiến. Bạn bấm chọn robot mình muốn đưa vào trận chiến, rồi bấm Add ->. Ở đây mình chọn thêm 1 con Fire vào nữa.
Nếu muốn chỉnh các thông số như số vòng đấu, kích thước màn hình … thì bấm Next. Không thì bấm Start Battle để bắt đầu.
Và đây là kết quả
Chúc các bạn tạo được cho mình con robot thật thông minh và bất bại 😀 Good luck!