ROBOCODE – Trò chơi dành cho người đam mê Java

apollo_1050

Member
2/6/11
129
2
18
Tuy tham gia congdongjava chưa lâu, nhưng mình rất thích diễn đàn này. Có điều mình nhận thấy rằng diễn đàn của chúng ta vẫn chưa được sôi nổi lắm.Vì vậy, hôm nay mình quyết giới thiệu đến mọi người một trò chơi vô cùng thú vị liên quan đến Java, hy vọng sẽ tạo được một phong trào mới giúp diễn đàn phát triển hơn.


Trò chơi có tên là:



Sơ lược về Robocode:

Đây là một trò chơi được viết chủ yếu trên nền Java (có cả phiên bản .NET, nhưng mình sẽ không bàn tới) và hiện đang được phát triển bởi cộng đồng mã nguồn mở.

Thoạt nhìn, trò chơi này khá giống với một trò bắn xe tăng thông thường. Mỗi người chơi sẽ có một chiếc xe tăng. Và khi những chiếc xe tăng này được đưa lên sàn thi đấu, mục tiêu duy nhất của chúng là sống sót và tiêu diệt hết các đấu thủ còn lại.


Vậy Robocode có gì đặc biệt?

Điểm đặc biệt nằm ở chính những chiếc xe tăng. Khi được đưa lên sàn đấu, người chơi hoàn toàn không điều khiển chúng. Thay vào đó, chúng tự hoạt động với trí thông minh nhân tạo đã được cài đặt trước bởi người chơi. Chính vì vậy, mỗi xe tăng sẽ có chiến thuật riêng để tấn công cũng như phòng thủ.

Có lẽ bạn sẽ thắc mắc làm thế nào để xe tăng của mình biết mục tiêu ở đâu mà tấn công. Tất nhiên, mỗi xe tăng sẽ được trang bị 1 radar để dò tìm xem kẻ thù ở đâu. Radar này không chỉ dùng với mục đích tấn công mà còn được dung để dự đoán hướng tấn công của quân địch, từ đó xác định chiến thuật né tránh, phòng thủ. Tuy vậy, Robocode cũng cung cấp cho bạn 1 loại xe tăng đặc biệt gọi là Droid. Loại tăng này không có radar nhưng bù lại nó được trang bị thêm 20% giáp.

Chưa hết, ngoài khả năng chiến đấu độc lập, những chiếc xe tăng trên cũng có thể tập hợp thành đội để cùng chống lại một nhóm xe tăng khác (tất nhiên, điều này cũng phải được lập trình bởi người chơi). Trong một đội, sẽ có 1 xe tăng làm đội trưởng (xe tăng này này được nhận 200 giáp thay vì 100 như thông thường, nếu đội trưởng là Droid, giáp của nó sẽ là 220).


Một trận chiến Robocode diễn ra như thế nào?

Theo thông lệ thi đấu quốc tế, Robocode có 4 kiểu thi đấu chính: 1 chọi 1, 2 chọi 2, 5 chọi 5, và hỗn chiến (10 robot độc lập tàn sát lẫn nhau). Trong mỗi kiểu thi đấu, các robot được chia thành 4 hạng cân dựa trên code size của chúng (chương trình để đo code size có thể down ở đây). Thông thường, các robot sẽ đấu khoảng 5-10 trận tính điểm để chọn ra người thắng cuộc.

Tuy nhiên, người chơi có thể chơi theo cách riêng của mình (ví dụ như 1 chọi 5 :D ) vì Robocode hoàn toàn có thể tùy biến theo ý của bạn.

Dưới đây là một trận thi đấu 1-1 điển hình:
[YOUTUBE]qzMHGFMAzK8[/YOUTUBE]​


Để tự lập trình cho mình 1 robot có khó không?

Hoàn toàn không khó (dù để có 1 robot hoàn hảo là rất khó) bởi Robocode đã cung cấp cho bạn một API đầy đủ. Với API này, việc điều khiển robot di chuyển và tấn công vô cùng dễ dàng. Thậm chí, bạn cũng không cần phải lo về hình hài (đồ họa) của con robot của mình vì Robocode đã làm sẵn cho bạn. Vì vậy, chỉ với khoảng 20 dòng code là bạn đã có thể có 1 robot đơn giản.

Việc cho các robot hỗ trợ nhau và thi đấu theo đội cũng không khó, mình sẽ hướng dẫn thêm về cách tạo một đội khi có thời gian.


Tổ chức đấu Robocode có khó không?

Ngoài API đã nói ở trên, Robocode cũng cung cấp sẵn một chương trình có chức năng như sàn thi đấu. Bạn chỉ việc dùng chương trình này load các file jar tương ứng với những robot mà bạn muốn chọn, tự động chúng sẽ xuất hiện trên sàn đấu. Chương trình này cho phép bạn tùy biến rất nhiều thứ như chọn kích thước sàn thi đấu, chỉnh frame rate… Ngoài ra, chương trình này cũng là một công cụ hỗ trợ bạn trong việc debug.

Điều vướng mắc hiện tại là Robocode chưa hỗ trợ thi đấu online. Tuy nhiên mình tin là có nhiều cách để khắc phục vấn đề này. Mặt khác, Robocode là chương trình mã nguồn mở, nên nếu có thời gian, mình nghĩ là cộng đồng của chúng ta có thể tự thêm vào chức năng này.


Robocode có dành cho bạn không?

Chắc chắn rồi! Mình nghĩ để tham gia trò chơi này, không cần bạn phải là người thật giỏi Java. Chỉ cần bạn biết Java cơ bản và có ham muốn nghiên cứu về trí tuệ nhân tạo là đủ.

Nếu trò chơi này được tổ chức trên diễn đàn của chúng ta thì mình nghĩ ban đầu chúng ta nên tổ chức thi đấu theo đội. Ai khá một chút thì đứng ra lập đội, ai cảm thấy mình còn yếu thì tham gia làm thành viên. Như vậy sẽ rất vui, và ai cũng có cơ hội tham gia, học hỏi, chia sẻ kinh nghiệm.


Nếu bạn cảm thấy thích và muốn tham gia trò chơi này...

Hãy để lại comment. Khi đủ số lượng, mình sẽ xin BQT lên kế hoạch tổ chức hướng dẫn và thi đấu. Biết đâu sẽ có dịp nào đó chúng ta được thi đấu offline với nhau. :D

Để xem thêm thông tin về Robocode, các bạn vui lòng vào đường link sau: Robocode
 

JackV

Administrator
Staff member
Ðề: ROBOCODE – Trò chơi dành cho người đam mê Java

apollo_1050 cảm ơn bạn đã giúp BQT hiện thực một phần nội dung trong buổi họp BQT vừa qua. Hi vọng mọi người có một niềm đam mê mới để nâng tầm tư duy.

Chúng ta đã từng có thi đấu đơn giản hơn về Text To Code Decryption http://congdongjava.com/forumdisplay.php?f=94
Khi có nhiều bạn quan tâm chúng ta sẽ xây dựng chuyên mục Cong dong java Thi đấu để hỗ trợ mọi người.
 

apollo_1050

Member
2/6/11
129
2
18
Ðề: ROBOCODE – Trò chơi dành cho người đam mê Java

Đúng như admin dự đoán, xem ra không có mấy người hứng thù với trò này. Nản thật!
 
10/12/10
286
10
18
Ðề: ROBOCODE – Trò chơi dành cho người đam mê Java

Chủ pic làm một cái demo cho anh em dễ tưởng tượng
 

JackV

Administrator
Staff member
Ðề: ROBOCODE – Trò chơi dành cho người đam mê Java

Chủ pic làm một cái demo cho anh em dễ tưởng tượng
Trong phần giới thiệu có video đó bạn. Bạn nào quan tâm để lại ý kiến để chủ pic biết và lên kế hoạch hướng dẫn cơ bản cho mọi người.
 

javafreak

New Member
20/6/11
34
2
0
Ðề: ROBOCODE – Trò chơi dành cho người đam mê Java

Cái này có vẻ hay đóa, nhưng phải để mình tìm hiểu thêm đã.
 
10/12/10
286
10
18
Ðề: ROBOCODE – Trò chơi dành cho người đam mê Java

Trong phần giới thiệu có video đó bạn. Bạn nào quan tâm để lại ý kiến để chủ pic biết và lên kế hoạch hướng dẫn cơ bản cho mọi người.
nguoi.tap.code đăng ký 1 slot :x
 

apollo_1050

Member
2/6/11
129
2
18
Ðề: ROBOCODE – Trò chơi dành cho người đam mê Java

Cái này có vẻ hay đóa, nhưng phải để mình tìm hiểu thêm đã.
Bạn cứ tham gia và rủ rê mọi người cùng tham gia đi. Tất nhiên là ai cũng cần nghiên cứu chút đỉnh trước khi muốn thi đấu thực sự, nhưng chuyện đó chỉ là chuyện nhỏ vì mọi người ở đây đều sẵn sàng chia sẻ kinh nghiệm mà. :D
 

@Q_Q@

Member
22/3/11
200
4
18
DaNang
Ðề: ROBOCODE – Trò chơi dành cho người đam mê Java

Mình chẳn biết tẹo nào về trí tuệ nhân tạo nhưng cái robocode này hay hay. Chủ topic có code demo cho anh em tham khảo đi.
 

apollo_1050

Member
2/6/11
129
2
18
Ðề: ROBOCODE – Trò chơi dành cho người đam mê Java

Tất nhiên, mình sẽ làm 1 demo khi có thời gian. Như mình đã mô tả trong bài, để code ra 1 robot rất đơn giản, biết Java căn bản là làm được. Cái khó là trí tuệ nhân tạo thôi.
:D
 

kency

Thành viên BQT
Staff member
22/5/10
885
9
18
Ðề: ROBOCODE – Trò chơi dành cho người đam mê Java

Sẽ cố gắng nghiên cứu để cùng viết tut cho bà con :D

Dạo này bận nhiều việc quá :P
 

Phan Quang

New Member
5/4/11
14
0
1
Ðề: ROBOCODE – Trò chơi dành cho người đam mê Java

Cài này hay quá, tks bạn.
MÌnh sẽ tìm hiểu :x
 

__CJ__

New Member
24/6/11
6
0
0
Ðề: ROBOCODE – Trò chơi dành cho người đam mê Java

cho mình chơi với
 
10/12/10
286
10
18
Ðề: ROBOCODE – Trò chơi dành cho người đam mê Java

Tất nhiên, mình sẽ làm 1 demo khi có thời gian. Như mình đã mô tả trong bài, để code ra 1 robot rất đơn giản, biết Java căn bản là làm được. Cái khó là trí tuệ nhân tạo thôi.
:D
Xôm ròi đấy, bác viết demo đi :>
 

apollo_1050

Member
2/6/11
129
2
18
Ðề: ROBOCODE – Trò chơi dành cho người đam mê Java

Bạn chạy thử robocode chưa, nó cung cấp nhiều ví dụ lắm, tham khảo trong đó nhé.
Đúng rồi! Các bạn lên trang của Robocode sẽ thấy có đầy đủ tài liệu tham khảo cả rồi. Nếu mình có viết hướng dẫn thì thực chất cũng là lấy bài ở đó dịch lại thôi. :D

Cái hay (cũng là cái khó) của Robocode là phần trí tuệ nhân tạo. Đó mới là phần phải bàn luận nhiều.

Dù sao đi nữa, mình sẽ cố gắng dịch lại một số hướng dẫn căn bản của Robocode để cho những người mới học dễ tiếp cận. Bạn nào có thời gian thì giúp mình với nhé!
 

thienncl

New Member
6/7/11
2
0
0
Ðề: ROBOCODE – Trò chơi dành cho người đam mê Java

bạn viết hướng dẫn có chú thích thì người mới học sẽ dễ hiểu hơn,ai giỏi rồi thì tìm tòi thêm trên web,nhìn video thấy thích thích :D mong bản hướng dẫn của bạn
 

ducthienweakt

New Member
16/7/11
2
0
0
Ðề: ROBOCODE – Trò chơi dành cho người đam mê Java

Cho xin 1 slot nào, đang code vài con nhưng chưa có chiến thuật :D