SlideShare una empresa de Scribd logo
1 de 11
Descargar para leer sin conexión
CODEVS4.0
1.M ctiêuc a game:ụ ủ
Mục tiêu của game này là điều khiển quân của mình tấn công, hạ gục thành trì của đối
phương. Bạn cần tạo lập một chương trình (AI) quyết định chiến thuật sinh quân, di chuyển
quân mình trong game một cách hợp lý để giành chiến thắng.
2. Cácthu t ng c s d ngtronggameậ ữ đượ ử ụ
2.1. Bản đồ
Bản đồ là một lưới ô vuông 100x100. Ô trên cùng có tọa độ (x,y) = (0,0). Trục ngang là trục X,
trục dọc là trục Y.
Các ô trong bản đồ được quy định 2 trạng thái như sau:
+ Ô đồng bằng: Là ô bình thường, không có tác dụng gì đặc biệt. Bạn có thể thao tác tự do đối
với những ô này.
+ Ô tài nguyên: Được bố trí ở các vị trí khác nhau trên bản đồ. Khi một worker đi vào ô tài
nguyên, số lượng tài nguyên của quân mình sẽ được tăng lên. Không có việc cạn kiệt tài
nguyên ở ô tài nguyên (ô tài nguyên không biến mất trong suốt quá trình game diễn ra).
2.2. Các nhân vật
- Worker: Có khả năng di chuyển. Nhiệm vụ: thu thập tài nguyên, xây dựng căn cứ quân đội,
xây dựng làng.
- Knight, Fighter, Assassin: Là 3 loại quân dùng để chiến đấu trong game, có khả năng di
chuyển. Đặc tính cụ thể của mỗi loại quân như sau:
+ Knight: mạnh khi đối đầu với Assassin, yếu khi đối đầu với Fighter
+ Fighter: Mạnh khi đối đầu với Knight, yếu khi đối đầu với Assassin
+ Assassin: Mạnh khi đối đầu với Fighter, yếu khi đối đầu với Knight
2.3. Các kiến trúc
- Castle (Lâu đài)
Mỗi bên sẽ có một lâu đài được đặt ở 2 phía trên bản đồ (cụ thể về vị trí đặt lâu đài được giải
thích ở phần sau). Người chơi giành chiến thắng là người chơi phá hủy được lâu đài của đối
phương. Lâu đài cũng là nơi sản sinh ra worker (mỗi lần sinh một worker sẽ tốn một lượng tài
nguyên nhất định).
- Village (làng)
Nơi sản sinh worker
- Base (căn cứ)
Nơi sản sinh ra các loại quân phục vụ chiến đâu: Knight, Fighter, Assassin
2.4. Unit
Mỗi một nhân vật hoặc một kiến trúc trong game được xem như 1 unit.
3. Gameflow
Người chơi sẽ sử dụng AI của mình để chiến đấu với AI của đối phương (Enemy AI). Một game
sẽ có 24 stage. Có 8 loại Enemy AI được chuẩn bị. Người chơi sẽ phải chiến đấu với mỗi
Enemy AI, theo thứ tự ngẫu nhiên, mỗi Enemy AI chiến đấu 3 lần.
3.1. Stage
Mỗi stage được tiến hành theo các turn. Một stage có tối đa 1000 turn. Việc chuyển đến stage
tiếp theo không phụ thuộc vào kết quả của stage trước.
3.2. Turn
1 turn sẽ các Phase như sau:
- Phase chỉ thị
- Phase di chuyển và sinh quân
- Phase chiến đấu
- Phase loại bỏ unit
- Phase thu thập tài nguyên
- Phase kết thúc
3.3. Giải thích về các Phase
3.3.1. Phase chỉ thị
Các unit sẽ nhận chỉ thị hành đồng từ player. Trong lúc chờ đợi chỉ thị có tác dụng thì game sẽ
chuyển sang phase tiếp theo. Cụ thể về input format sẽ được giải thích ở phía dưới.
3.3.2. Phase di chuyển và sinh sản
Mỗi unit thì có 3 loại hành động dưới đây:
1. Di chuyển
2. Sinh quân
3. Không làm gì cả
Mỗi loại unit sẽ có quy định về quyền hạn thực hiện hành động. (Bảng 1)
Di chuyển:
Các nhân vật có thể di chuyển theo hướng trên dưới trái phải. Khoảng cách cho mỗi lần di
chuyển là 1 ô trên bản đồ. Nhân vật không thể di chuyển ra ngoài bản đồ. Nếu nhân vật nhận
được lệnh di chuyển đến khu vực ở ngoài bản đồ thì lệnh đó không được thực hiên và nhân vật
giữ nguyên vị trí hiện tại.
Sinh quân:
Tùy vào mỗi loại unit mà có khả năng sinh ra các unit khác. Unit vừa được sinh ra không thể di
chuyển ngay trong turn tiếp theo. Cụ thể được mô tả ở phần 4.2
Không làm gì cả:
Trong trường hợp player không chỉ thị hành động cho unit, thì unit đó không thực hiện hành
động gì cả mà chỉ đứng im tại vị trí hiện tại.
Bảng 1: Khả năng hành động của các unit
Unit Kh năng di chuy nả ể Kh năng sinh quânả
Worker ○ ○ (Làng, căn cứ quân sự)
Knight ○ x
Fighter ○ x
Assasin ○ x
Lâu đài x ○ (Worker)
Làng x ○ (Worker)
Căn cứ x ○ (Knight, Fighter, Assassin)
3.3.3. Phase chiến đấu
Khi quân của mình và quân của đối phương đi vào khu vực giao chiến thì cuộc chiến được tự
động thực hiện. Mỗi unit sẽ được quy định một mức HP. Cách tính toán damage được mô tả ở
mục 4.4. Ngoài ra, những unit được sinh ra tại phase di chuyển và sinh quân cũng có thể
tham gia chiến đấu.
3.3.4. Phase loại bỏ unit
Tất cả những unit sau khi tham chiến sẽ được đánh giá xem có bị loại bỏ hay không. Những
unit có HP < 0 sẽ bị loại bỏ ra khỏi bản đồ.
3.3.5. Phase thu thập tài nguyên
Việc thu thập tài nguyên được diễn ra ở phase này. Chi tiết về thu thập tài nguyên mời các
bạn tham khảo ở mục 4.5.
3.3.6. Phase kết thúc
Sau khi tất cả các xử lí được hoàn thành thì sẽ xem xét thực hiện phase kết thúc. Điều kiện để
kết thúc được ghi chi tiết ở phần sau. Nếu không đủ điều kiện để kết thúc thì sẽ chuyển sang
turn tiếp theo, bắt đầu thực hiện lại từ phase chỉ thị.
3.4. Điều kiện kết thúc
Tại phase kết thúc, nếu 1 trong 2 điều kiện dưới đây thỏa mãn thì stage sẽ kết thúc
• HP của lâu đài về 0, lâu đài bị remove khỏi bản đồ tại phase loại bỏ unit.
•Số lượng turn vượt MAX turn cho phép.
3.5. Phân định thắng thua
Người chơi sẽ được phân định thắng, thua hoặc hòa dựa vào các điều kiện như sau:
Thắng:
• HP lâu đài của đối phương về 0
Thua:
• HP lâu đài của mình về 0
Draw:
• HP lâu đài của mình và đối phương đều > 1 nhưng stage đã vượt quá 1000 turn
• HP lâu đài của mình và đối phương về 0 trong cùng 1 turn
4. Chiti t n i dungGameế ộ
4.1 Trạng thái đầu tiên của game
Khi bắt đầu mỗi màn chơi, mỗi người chơi sẽ có 1 lâu đài và 5 worker. Lâu đài của bên mình
sẽ được sinh ở một vị trí ngẫu nhiên trong khoảng 40 x 40 tính từ gốc bản đồ vị trí (0, 0). Lâu
đài của Enemy AI cũng sẽ được sinh ra ở một vị trí ngẫu nhiên trong khoảng 40 x 40 tính từ vị
trí (99, 99).
Các ô tài nguyên cũng sẽ được sinh ra ở các vị trí ngẫu nhiên. Chia nửa bản đồ thì mỗi bên
sẽ có 10 ô tài nguyên. Với những ô tài nguyên thì không được đăt thêm unit nào vào đó (xem
hình vẽ bên dưới).
4.2 Sinh Unit
Khi muốn sinh unit thì phải chỉ ra unit muốn sinh thuộc loai nào. Vị trí của unit mới sinh sẽ
trùng với vị trí của unit sinh ra unit đó. Trong 1 turn thì chỉ được sinh 1 unit (làng, quân,
worker ....)., không giới han địa điểm sinh unit và trong cùng 1 ô có thể sinh nhiều unit (trừ ô
tài nguyên không được sinh unit vào đó). Và đặc biệt phải chú ý là vì kiến trúc (làng, căn cứ
quân sự, lâu đài) cũng là 1 unit nên 1 ô có thể sinh được nhiều kiến trúc. Ngoài ra, trong 1 ô
có thể đặt đươc cả kiến trúc của mình và của AI (Làng và căn cứ quân sự vẫn có thể xin được
worker, quân như bình thường).
Việc sinh unit sẽ tốn tài nguyên. Nếu tài nguyên không đủ thì viêc sinh unit sẽ thất bại. Lượng
tài nguyên sử dụng để sinh unit hiển thị trong bảng số 2. Unit đã đươc sinh ở turn trước vẫn có
thể sinh được ở turn sau (2 turn liên tiếp có thể sinh cùng loại unit). Trong 1 stage, với mỗi
unit được sinh ra (không phân biệt là của bên mình hay AI) sẽ được đánh số tuần tự từ 1 đến
20000 và gán là id của unit đó.
4.3 Chỉ số của unit
Mỗi một unit sẽ có các chỉ số sau: máu (HP), attack range (tầm tấn công), vision range (tầm
nhìn) và attack damage (khả năng tấn công)
4.3.1 HP (máu)
Mỗi khi bị tần công thì máu của unit sẽ giảm xuống. Khi mà máu của unit về 0 thì phase loại
bỏ unit sẽ diễn ra và unit đó sẽ bị xóa khỏi bản đồ. Lượng máu tối đa cũng mỗi unit cũng khác
nhau và được hiển thị trong bảng 2 dưới đây. Unit sẽ đầy máu ở thời điểm mới sinh ra và khi
bắt đầu trận đấu. Khi mà unit bị mất máu thì không thể phục hồi HP được.
4.3.2 Attack range (tầm tấn công)
Các unit sẽ tự động đánh unit của đối phương nếu trong tầm tần công của nó. Tầm tấn công
của các unit được hiển thị trong bảng 2.
4.3.3 Visible range (tầm nhìn)
Giống như trong đế chế (ko mở bản đồ) thì vị trí của quân địch cũng như vị trí của các mỏ tài
nguyên sẽ không được hiển thị, chúng chỉ được nhìn thấy nếu như trong tầm nhìn của unit
bên mình. Dù chiếm được ô tài nguyên thì cũng không có tầm nhìn của vùng xung quanh ô tài
nguyên đó. Tầm nhìn của các unit được hiện thị trong bảng 2 dưới đây.
Bảng 2: Visible range của các unit
HP
Worker 2000 2 4 40
Knight 5000 2 4 20
Fighter 5000 2 4 40
5000 2 4 60
Castle 50000 2 4 0
Village 20000 2 10 100
Base 20000 2 4 500
Loại unit Attack Range (ô) Visible Range (ô) Tài nguyên cần để xin
Assasin
Attack range
Visible range
4.3.4 Attack damage
Attack damage sẽ trừ vào máu đối phương. Attack damage của từng unit được hiển thị ở bảng
sau
Bảng 3: Attack damage
4.4 Hướng dẫn về tấn công
Lượng damage gây ra và damage nhận vào khi tấn công và bị tấn công các loại unit khác
nhau sẽ khác nhau và được hiển thị ở bảng 3 . Ngoài ra lượng damage gây ra còn phụ thuộc
vào số lượng unit địch trong phạm vi tấn công. Ví dụ damage của unit a tác động lên unit đối
phương b là m, và trong phạm vi tấn công của unit a có k unit của đối phương thì damage mà
a tác động lên b sẽ là m/k. Tuy nhiên nếu tồn tại một ô mà có số lượng unit đôi phương trong ô
đó lớn hơn 10 thì sẽ chỉ tính là 10 unit đối phương trong ô đô.
Ví dụ trong trường hợp 1 vs 1:
1. Worker tấn công Fighter thì Fighter nhận 100 damage
2. Fighter tấn công Worker thì Worker nhận 500 damage
Ví cho đoan code cho phase tấn công và phase xóa lính khỏi bản đồ đó
#Phase tấn công
foreach (toàn bộ unit trên bản đồ)
k = 0
foreach( ô trong phạm vi tấn công của unit đó)
k += min(10, số unit đối phương trong ô)
foreach ( unit đối phương trong pham vi tấn công)
HP của unit đối phương -= (damage gây ra theo bảng 3) / k
#Phase xóa lính
foreach (toàn bộ unit trên bản đồ)
if HP <= 0
#code để xóa unit khỏi bản đồ
Unit nhận damage
Worker Knight Fighter Assasin Castle Village Base
Worker 100 100 100 100 100 100 100
Knight 100 500 200 200 200 200 200
Fighter 500 1600 500 200 200 200 200
Assasin 1000 500 1000 500 200 200 200
Castle 100 100 100 100 100 100 100
Village 100 100 100 100 100 100 100
Base 100 100 100 100 100 100 100
Unit gây
Damage
4.5 Khai thác tài nguyên
Vị trí của các ô tài nguyên sẽ được set random khi bắt dầu trận đấu. Và giống như AOE thì
nếu không có tầm nhìn của ô tài nguyên thì sẽ không có thông tin về ô tài nguyên đó.
Khi mà trong ô tài nguyên có Worker của bên mình đi vào ô tài nguyên thì trong mỗi 1 Phase
khai thác tài nguyên 1 Worker sẽ khai thác được 1 tài nguyên. Tuy nhiên trong 1 turn chơi thì
1 ô tài nguyên chỉ khai thác được tối đa 5 tài nguyên. Dù trong ô tài nguyên đó có 6 worker thì
1 turn cũng chỉ khai thác được 5 tài nguyên từ ô tài nguyên đó.
Ngoài số lượng tài nguyên khai thác được từ Worker thì ở mỗi turn, người chơi sẽ được +10 tài
nguyên vào kho.
5. Formatxu t vành p d li uấ ậ ữ ệ
5.1 Nhập dữ liệu
Mỗi turn thì dữ liệu nhập vào có dạng như sau
[Thời gian còn lại (ms)]
[Stage hiện tại (0 - indexed) ]
[Turn hiện tại (0 -indexed)]
[Số lượng tài nguyên]
[Số lượng unit của mình]
(Tiếp theo sẽ là các dòng như format dưới đây sẽ hiển thị thông tin quân bên minh)
[Id của unit] [tọa độ y] [tọa độ x] [lượng HP] [Loại Unit]
[Số lượng unit đối phương trong tầm nhìn bên mình]
(Tiếp theo sẽ là các dòng như format dưới đây sẽ hiển thị thông tin quân bên địch trong tầm
nhìn)
[Id của unit] [tọa độ y] [tọa độ x] [lượng HP] [Loại Unit]
[Số lượng tài nguyên trong tầm nhìn]
(Tiếp theo sẽ là các dòng như format dưới đây sẽ hiển thị thông tin vị trí ô tài nguyên)
[Tọa độ y] [Tọa độ x]
End
Loại Unit tham khảo trong bảng 4 dưới đây
Bảng 4: Loại unit
Unit
Worker 0
Knight 1
Fighter 2
3
Castle 4
Village 5
Base 6
Loại unit
Assasin
Ví dụ về input:
3598517
0
27
29
13
0 7 16 50000 4
1 16 23 2000 0
2 16 23 2000 0
3 16 23 2000 0
4 7 43 2000 0
5 16 23 2000 0
12 20 9 2000 0
14 16 23 2000 0
16 13 24 2000 0
18 16 17 2000 0
20 5 12 2000 0
22 9 17 2000 0
24 7 16 2000 0
0
1
16 23
END
5.2 Xuất dữ liệu
Dòng đầu tiên của output bắt buộc phải là tên người chơi. Tên này không cần phải giống tên
đăng nhập. Tên của player là chữ số tiếng anh, kí tự đặc biệt thì chỉ chấp nhận các kí tự [ - ],
[ _ ], [ @ ]. Sau khi đã nhận được dữ liệu đầu vào tư client thì sẽ dữ liệu đầu ra có format như
sau
[Số lượng mệnh lệnh cho unit]
(Tiếp theo sẽ là các dòng như format dưới đây để ra lệnh cho unit)
[Unit ID] [Mệnh lệnh]
Mệnh lệnh có 2 loại gồm di chuyển và sinh unit. Mệnh lệnh di chuyển thì sử dụng các chứ cái
tùy theo hướng di chuyển bao gồm: U (up), D (down), L (left), R (right). Mệnh lệnh sinh unit thì
phải chỉ rõ loại unit được sinh ra là gì. Cụ thể về các mệnh lệnh cũng như khả năng thực hiện
mệnh lệnh của mõi unit được thể hiện trong bảng 5.
Nếu trong 1 forrmat xuất mệnh lệnh mà 1 unit nhận được nhiều mệnh lệnh thì mệnh lệnh đầu
tiên sẽ được thực hiện.Nếu format mệnh lệnh bị sai hoặc unit đó không thể thực hiện được
mệnh lệnh được giao, thì mệnh lệnh đó sẽ không thể thực hiện. Ngoài ra, không nhất thiết
phải giao mệnh lệnh cho tất cả các unit.
Bảng 5
Ví dụ output
testAI
14
12 R
16 R
22 D
24 R
25 R
27 R
29 D
32 D
20 D
30 R
34 R
35 R
37 D
0 0
Khả năng thực hiện mênh lệnh
Mệnh lệnh Kết quả Worker Knight Fighter Assasin Castle Village Base
U Di chuyển lên trên O O O O X X X
D Di chuyển xuống dưới O O O O X X X
L DI chuyển sang trái O O O O X X X
R Di chuyển sang phải O O O O X X X
0 Xin Worker X X X X O O x
1 Xin Knight X X X X X X O
2 Xin Fighter X X X X X X O
3 Xin Assasin X X X X X X O
5 Xin Village O X X X X X X
6 Xin Base O X X X X X X
6. T ch c cu c thiổ ứ ộ
6.1 Tham gia và cách thức thi
Thành viên đăng kí sẽ nhận được 1 client từ Web của cuộc thi, sau đó sẽ thiết kế AI, nộp kết
quả mà AI xử lý lên server.
Client sử dụng name và token được phát để đăng nhập vào server. Sau khi đăng nhập thì phải
nhập đoạn code để chạy AI trên client. Và khi bắt đầu cuộc thi thì phải chạy đoạn code đã
nhập. AI sẽ nhận được thông tin đầu vào của game theo như format. Sau đó AI xử lý thông tin,
đưa ra mệnh lệnh theo như format ở bên trên.
Trong thời gian tham gia cuộc thi thì có thể chơi game với số lần tùy thích. Sẽ có 1 chương
trình chạy trên server để kiểm tra kết quả đã nộp là đúng hay sai. Chương trình này sẽ kiểm
tra tất cả các hành động như là sửa param, thay đổi kết quả hoặc các hành động bất chính
khác. Nếu chương trình kiểm tra kết quả đúng và không có cheat, kết quả nhận được sẽ được
đánh giá và xếp hạng.
6.2. Ngôn ngữ, môi trường
Không có giới hạn về ngôn ngữ được sử dụng.

Más contenido relacionado

Destacado

Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Applitools
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at WorkGetSmarter
 

Destacado (20)

Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 

Rule cuộc thi CodeVS 4.0

  • 1. CODEVS4.0 1.M ctiêuc a game:ụ ủ Mục tiêu của game này là điều khiển quân của mình tấn công, hạ gục thành trì của đối phương. Bạn cần tạo lập một chương trình (AI) quyết định chiến thuật sinh quân, di chuyển quân mình trong game một cách hợp lý để giành chiến thắng. 2. Cácthu t ng c s d ngtronggameậ ữ đượ ử ụ 2.1. Bản đồ Bản đồ là một lưới ô vuông 100x100. Ô trên cùng có tọa độ (x,y) = (0,0). Trục ngang là trục X, trục dọc là trục Y. Các ô trong bản đồ được quy định 2 trạng thái như sau: + Ô đồng bằng: Là ô bình thường, không có tác dụng gì đặc biệt. Bạn có thể thao tác tự do đối với những ô này. + Ô tài nguyên: Được bố trí ở các vị trí khác nhau trên bản đồ. Khi một worker đi vào ô tài nguyên, số lượng tài nguyên của quân mình sẽ được tăng lên. Không có việc cạn kiệt tài nguyên ở ô tài nguyên (ô tài nguyên không biến mất trong suốt quá trình game diễn ra). 2.2. Các nhân vật - Worker: Có khả năng di chuyển. Nhiệm vụ: thu thập tài nguyên, xây dựng căn cứ quân đội, xây dựng làng. - Knight, Fighter, Assassin: Là 3 loại quân dùng để chiến đấu trong game, có khả năng di chuyển. Đặc tính cụ thể của mỗi loại quân như sau: + Knight: mạnh khi đối đầu với Assassin, yếu khi đối đầu với Fighter + Fighter: Mạnh khi đối đầu với Knight, yếu khi đối đầu với Assassin + Assassin: Mạnh khi đối đầu với Fighter, yếu khi đối đầu với Knight 2.3. Các kiến trúc - Castle (Lâu đài) Mỗi bên sẽ có một lâu đài được đặt ở 2 phía trên bản đồ (cụ thể về vị trí đặt lâu đài được giải thích ở phần sau). Người chơi giành chiến thắng là người chơi phá hủy được lâu đài của đối phương. Lâu đài cũng là nơi sản sinh ra worker (mỗi lần sinh một worker sẽ tốn một lượng tài nguyên nhất định). - Village (làng) Nơi sản sinh worker
  • 2. - Base (căn cứ) Nơi sản sinh ra các loại quân phục vụ chiến đâu: Knight, Fighter, Assassin 2.4. Unit Mỗi một nhân vật hoặc một kiến trúc trong game được xem như 1 unit. 3. Gameflow Người chơi sẽ sử dụng AI của mình để chiến đấu với AI của đối phương (Enemy AI). Một game sẽ có 24 stage. Có 8 loại Enemy AI được chuẩn bị. Người chơi sẽ phải chiến đấu với mỗi Enemy AI, theo thứ tự ngẫu nhiên, mỗi Enemy AI chiến đấu 3 lần. 3.1. Stage Mỗi stage được tiến hành theo các turn. Một stage có tối đa 1000 turn. Việc chuyển đến stage tiếp theo không phụ thuộc vào kết quả của stage trước. 3.2. Turn 1 turn sẽ các Phase như sau: - Phase chỉ thị - Phase di chuyển và sinh quân - Phase chiến đấu - Phase loại bỏ unit - Phase thu thập tài nguyên - Phase kết thúc 3.3. Giải thích về các Phase 3.3.1. Phase chỉ thị Các unit sẽ nhận chỉ thị hành đồng từ player. Trong lúc chờ đợi chỉ thị có tác dụng thì game sẽ chuyển sang phase tiếp theo. Cụ thể về input format sẽ được giải thích ở phía dưới. 3.3.2. Phase di chuyển và sinh sản Mỗi unit thì có 3 loại hành động dưới đây: 1. Di chuyển 2. Sinh quân 3. Không làm gì cả Mỗi loại unit sẽ có quy định về quyền hạn thực hiện hành động. (Bảng 1)
  • 3. Di chuyển: Các nhân vật có thể di chuyển theo hướng trên dưới trái phải. Khoảng cách cho mỗi lần di chuyển là 1 ô trên bản đồ. Nhân vật không thể di chuyển ra ngoài bản đồ. Nếu nhân vật nhận được lệnh di chuyển đến khu vực ở ngoài bản đồ thì lệnh đó không được thực hiên và nhân vật giữ nguyên vị trí hiện tại. Sinh quân: Tùy vào mỗi loại unit mà có khả năng sinh ra các unit khác. Unit vừa được sinh ra không thể di chuyển ngay trong turn tiếp theo. Cụ thể được mô tả ở phần 4.2 Không làm gì cả: Trong trường hợp player không chỉ thị hành động cho unit, thì unit đó không thực hiện hành động gì cả mà chỉ đứng im tại vị trí hiện tại. Bảng 1: Khả năng hành động của các unit Unit Kh năng di chuy nả ể Kh năng sinh quânả Worker ○ ○ (Làng, căn cứ quân sự) Knight ○ x Fighter ○ x Assasin ○ x Lâu đài x ○ (Worker) Làng x ○ (Worker) Căn cứ x ○ (Knight, Fighter, Assassin) 3.3.3. Phase chiến đấu Khi quân của mình và quân của đối phương đi vào khu vực giao chiến thì cuộc chiến được tự động thực hiện. Mỗi unit sẽ được quy định một mức HP. Cách tính toán damage được mô tả ở mục 4.4. Ngoài ra, những unit được sinh ra tại phase di chuyển và sinh quân cũng có thể tham gia chiến đấu. 3.3.4. Phase loại bỏ unit Tất cả những unit sau khi tham chiến sẽ được đánh giá xem có bị loại bỏ hay không. Những unit có HP < 0 sẽ bị loại bỏ ra khỏi bản đồ.
  • 4. 3.3.5. Phase thu thập tài nguyên Việc thu thập tài nguyên được diễn ra ở phase này. Chi tiết về thu thập tài nguyên mời các bạn tham khảo ở mục 4.5. 3.3.6. Phase kết thúc Sau khi tất cả các xử lí được hoàn thành thì sẽ xem xét thực hiện phase kết thúc. Điều kiện để kết thúc được ghi chi tiết ở phần sau. Nếu không đủ điều kiện để kết thúc thì sẽ chuyển sang turn tiếp theo, bắt đầu thực hiện lại từ phase chỉ thị. 3.4. Điều kiện kết thúc Tại phase kết thúc, nếu 1 trong 2 điều kiện dưới đây thỏa mãn thì stage sẽ kết thúc • HP của lâu đài về 0, lâu đài bị remove khỏi bản đồ tại phase loại bỏ unit. •Số lượng turn vượt MAX turn cho phép. 3.5. Phân định thắng thua Người chơi sẽ được phân định thắng, thua hoặc hòa dựa vào các điều kiện như sau: Thắng: • HP lâu đài của đối phương về 0 Thua: • HP lâu đài của mình về 0 Draw: • HP lâu đài của mình và đối phương đều > 1 nhưng stage đã vượt quá 1000 turn • HP lâu đài của mình và đối phương về 0 trong cùng 1 turn 4. Chiti t n i dungGameế ộ 4.1 Trạng thái đầu tiên của game Khi bắt đầu mỗi màn chơi, mỗi người chơi sẽ có 1 lâu đài và 5 worker. Lâu đài của bên mình sẽ được sinh ở một vị trí ngẫu nhiên trong khoảng 40 x 40 tính từ gốc bản đồ vị trí (0, 0). Lâu đài của Enemy AI cũng sẽ được sinh ra ở một vị trí ngẫu nhiên trong khoảng 40 x 40 tính từ vị trí (99, 99). Các ô tài nguyên cũng sẽ được sinh ra ở các vị trí ngẫu nhiên. Chia nửa bản đồ thì mỗi bên sẽ có 10 ô tài nguyên. Với những ô tài nguyên thì không được đăt thêm unit nào vào đó (xem hình vẽ bên dưới).
  • 5. 4.2 Sinh Unit Khi muốn sinh unit thì phải chỉ ra unit muốn sinh thuộc loai nào. Vị trí của unit mới sinh sẽ trùng với vị trí của unit sinh ra unit đó. Trong 1 turn thì chỉ được sinh 1 unit (làng, quân, worker ....)., không giới han địa điểm sinh unit và trong cùng 1 ô có thể sinh nhiều unit (trừ ô tài nguyên không được sinh unit vào đó). Và đặc biệt phải chú ý là vì kiến trúc (làng, căn cứ quân sự, lâu đài) cũng là 1 unit nên 1 ô có thể sinh được nhiều kiến trúc. Ngoài ra, trong 1 ô có thể đặt đươc cả kiến trúc của mình và của AI (Làng và căn cứ quân sự vẫn có thể xin được worker, quân như bình thường). Việc sinh unit sẽ tốn tài nguyên. Nếu tài nguyên không đủ thì viêc sinh unit sẽ thất bại. Lượng tài nguyên sử dụng để sinh unit hiển thị trong bảng số 2. Unit đã đươc sinh ở turn trước vẫn có thể sinh được ở turn sau (2 turn liên tiếp có thể sinh cùng loại unit). Trong 1 stage, với mỗi unit được sinh ra (không phân biệt là của bên mình hay AI) sẽ được đánh số tuần tự từ 1 đến 20000 và gán là id của unit đó.
  • 6. 4.3 Chỉ số của unit Mỗi một unit sẽ có các chỉ số sau: máu (HP), attack range (tầm tấn công), vision range (tầm nhìn) và attack damage (khả năng tấn công) 4.3.1 HP (máu) Mỗi khi bị tần công thì máu của unit sẽ giảm xuống. Khi mà máu của unit về 0 thì phase loại bỏ unit sẽ diễn ra và unit đó sẽ bị xóa khỏi bản đồ. Lượng máu tối đa cũng mỗi unit cũng khác nhau và được hiển thị trong bảng 2 dưới đây. Unit sẽ đầy máu ở thời điểm mới sinh ra và khi bắt đầu trận đấu. Khi mà unit bị mất máu thì không thể phục hồi HP được. 4.3.2 Attack range (tầm tấn công) Các unit sẽ tự động đánh unit của đối phương nếu trong tầm tần công của nó. Tầm tấn công của các unit được hiển thị trong bảng 2. 4.3.3 Visible range (tầm nhìn) Giống như trong đế chế (ko mở bản đồ) thì vị trí của quân địch cũng như vị trí của các mỏ tài nguyên sẽ không được hiển thị, chúng chỉ được nhìn thấy nếu như trong tầm nhìn của unit bên mình. Dù chiếm được ô tài nguyên thì cũng không có tầm nhìn của vùng xung quanh ô tài nguyên đó. Tầm nhìn của các unit được hiện thị trong bảng 2 dưới đây. Bảng 2: Visible range của các unit HP Worker 2000 2 4 40 Knight 5000 2 4 20 Fighter 5000 2 4 40 5000 2 4 60 Castle 50000 2 4 0 Village 20000 2 10 100 Base 20000 2 4 500 Loại unit Attack Range (ô) Visible Range (ô) Tài nguyên cần để xin Assasin Attack range Visible range
  • 7. 4.3.4 Attack damage Attack damage sẽ trừ vào máu đối phương. Attack damage của từng unit được hiển thị ở bảng sau Bảng 3: Attack damage 4.4 Hướng dẫn về tấn công Lượng damage gây ra và damage nhận vào khi tấn công và bị tấn công các loại unit khác nhau sẽ khác nhau và được hiển thị ở bảng 3 . Ngoài ra lượng damage gây ra còn phụ thuộc vào số lượng unit địch trong phạm vi tấn công. Ví dụ damage của unit a tác động lên unit đối phương b là m, và trong phạm vi tấn công của unit a có k unit của đối phương thì damage mà a tác động lên b sẽ là m/k. Tuy nhiên nếu tồn tại một ô mà có số lượng unit đôi phương trong ô đó lớn hơn 10 thì sẽ chỉ tính là 10 unit đối phương trong ô đô. Ví dụ trong trường hợp 1 vs 1: 1. Worker tấn công Fighter thì Fighter nhận 100 damage 2. Fighter tấn công Worker thì Worker nhận 500 damage Ví cho đoan code cho phase tấn công và phase xóa lính khỏi bản đồ đó #Phase tấn công foreach (toàn bộ unit trên bản đồ) k = 0 foreach( ô trong phạm vi tấn công của unit đó) k += min(10, số unit đối phương trong ô) foreach ( unit đối phương trong pham vi tấn công) HP của unit đối phương -= (damage gây ra theo bảng 3) / k #Phase xóa lính foreach (toàn bộ unit trên bản đồ) if HP <= 0 #code để xóa unit khỏi bản đồ Unit nhận damage Worker Knight Fighter Assasin Castle Village Base Worker 100 100 100 100 100 100 100 Knight 100 500 200 200 200 200 200 Fighter 500 1600 500 200 200 200 200 Assasin 1000 500 1000 500 200 200 200 Castle 100 100 100 100 100 100 100 Village 100 100 100 100 100 100 100 Base 100 100 100 100 100 100 100 Unit gây Damage
  • 8. 4.5 Khai thác tài nguyên Vị trí của các ô tài nguyên sẽ được set random khi bắt dầu trận đấu. Và giống như AOE thì nếu không có tầm nhìn của ô tài nguyên thì sẽ không có thông tin về ô tài nguyên đó. Khi mà trong ô tài nguyên có Worker của bên mình đi vào ô tài nguyên thì trong mỗi 1 Phase khai thác tài nguyên 1 Worker sẽ khai thác được 1 tài nguyên. Tuy nhiên trong 1 turn chơi thì 1 ô tài nguyên chỉ khai thác được tối đa 5 tài nguyên. Dù trong ô tài nguyên đó có 6 worker thì 1 turn cũng chỉ khai thác được 5 tài nguyên từ ô tài nguyên đó. Ngoài số lượng tài nguyên khai thác được từ Worker thì ở mỗi turn, người chơi sẽ được +10 tài nguyên vào kho. 5. Formatxu t vành p d li uấ ậ ữ ệ 5.1 Nhập dữ liệu Mỗi turn thì dữ liệu nhập vào có dạng như sau [Thời gian còn lại (ms)] [Stage hiện tại (0 - indexed) ] [Turn hiện tại (0 -indexed)] [Số lượng tài nguyên] [Số lượng unit của mình] (Tiếp theo sẽ là các dòng như format dưới đây sẽ hiển thị thông tin quân bên minh) [Id của unit] [tọa độ y] [tọa độ x] [lượng HP] [Loại Unit] [Số lượng unit đối phương trong tầm nhìn bên mình] (Tiếp theo sẽ là các dòng như format dưới đây sẽ hiển thị thông tin quân bên địch trong tầm nhìn) [Id của unit] [tọa độ y] [tọa độ x] [lượng HP] [Loại Unit] [Số lượng tài nguyên trong tầm nhìn] (Tiếp theo sẽ là các dòng như format dưới đây sẽ hiển thị thông tin vị trí ô tài nguyên) [Tọa độ y] [Tọa độ x] End Loại Unit tham khảo trong bảng 4 dưới đây Bảng 4: Loại unit Unit Worker 0 Knight 1 Fighter 2 3 Castle 4 Village 5 Base 6 Loại unit Assasin
  • 9. Ví dụ về input: 3598517 0 27 29 13 0 7 16 50000 4 1 16 23 2000 0 2 16 23 2000 0 3 16 23 2000 0 4 7 43 2000 0 5 16 23 2000 0 12 20 9 2000 0 14 16 23 2000 0 16 13 24 2000 0 18 16 17 2000 0 20 5 12 2000 0 22 9 17 2000 0 24 7 16 2000 0 0 1 16 23 END 5.2 Xuất dữ liệu Dòng đầu tiên của output bắt buộc phải là tên người chơi. Tên này không cần phải giống tên đăng nhập. Tên của player là chữ số tiếng anh, kí tự đặc biệt thì chỉ chấp nhận các kí tự [ - ], [ _ ], [ @ ]. Sau khi đã nhận được dữ liệu đầu vào tư client thì sẽ dữ liệu đầu ra có format như sau [Số lượng mệnh lệnh cho unit] (Tiếp theo sẽ là các dòng như format dưới đây để ra lệnh cho unit) [Unit ID] [Mệnh lệnh]
  • 10. Mệnh lệnh có 2 loại gồm di chuyển và sinh unit. Mệnh lệnh di chuyển thì sử dụng các chứ cái tùy theo hướng di chuyển bao gồm: U (up), D (down), L (left), R (right). Mệnh lệnh sinh unit thì phải chỉ rõ loại unit được sinh ra là gì. Cụ thể về các mệnh lệnh cũng như khả năng thực hiện mệnh lệnh của mõi unit được thể hiện trong bảng 5. Nếu trong 1 forrmat xuất mệnh lệnh mà 1 unit nhận được nhiều mệnh lệnh thì mệnh lệnh đầu tiên sẽ được thực hiện.Nếu format mệnh lệnh bị sai hoặc unit đó không thể thực hiện được mệnh lệnh được giao, thì mệnh lệnh đó sẽ không thể thực hiện. Ngoài ra, không nhất thiết phải giao mệnh lệnh cho tất cả các unit. Bảng 5 Ví dụ output testAI 14 12 R 16 R 22 D 24 R 25 R 27 R 29 D 32 D 20 D 30 R 34 R 35 R 37 D 0 0 Khả năng thực hiện mênh lệnh Mệnh lệnh Kết quả Worker Knight Fighter Assasin Castle Village Base U Di chuyển lên trên O O O O X X X D Di chuyển xuống dưới O O O O X X X L DI chuyển sang trái O O O O X X X R Di chuyển sang phải O O O O X X X 0 Xin Worker X X X X O O x 1 Xin Knight X X X X X X O 2 Xin Fighter X X X X X X O 3 Xin Assasin X X X X X X O 5 Xin Village O X X X X X X 6 Xin Base O X X X X X X
  • 11. 6. T ch c cu c thiổ ứ ộ 6.1 Tham gia và cách thức thi Thành viên đăng kí sẽ nhận được 1 client từ Web của cuộc thi, sau đó sẽ thiết kế AI, nộp kết quả mà AI xử lý lên server. Client sử dụng name và token được phát để đăng nhập vào server. Sau khi đăng nhập thì phải nhập đoạn code để chạy AI trên client. Và khi bắt đầu cuộc thi thì phải chạy đoạn code đã nhập. AI sẽ nhận được thông tin đầu vào của game theo như format. Sau đó AI xử lý thông tin, đưa ra mệnh lệnh theo như format ở bên trên. Trong thời gian tham gia cuộc thi thì có thể chơi game với số lần tùy thích. Sẽ có 1 chương trình chạy trên server để kiểm tra kết quả đã nộp là đúng hay sai. Chương trình này sẽ kiểm tra tất cả các hành động như là sửa param, thay đổi kết quả hoặc các hành động bất chính khác. Nếu chương trình kiểm tra kết quả đúng và không có cheat, kết quả nhận được sẽ được đánh giá và xếp hạng. 6.2. Ngôn ngữ, môi trường Không có giới hạn về ngôn ngữ được sử dụng.