2.9 KiB
Tron
Objectives
In this project you will have to create your own Tron AI snake
Getting started
You will need to create a public repository with the name tron
. Next you need to create a file named ai.js
. It must respect the instructions given
Controls
arrows
orscroll
to move step by stemshift
will make it fast- you can click anywhere on the progress bar to seek into the history
Rules
- Your AI has to move every turn (it can not stay still)
- Every time the AI moves somewhere the AI leaves a color trail.
- the AI can only move to a blank tile.
- the AI can not move out of the map (100 x 100)
- the AI can only move to its
left
,forward
or itsright
. (Movingbackward
is suicide as it would hit its own trail !) - If too much CPU power is required to decide where to go, the AI dies.
- If two AIs moved to the same spot, both of them die.
- The AI has to survive as long as it can.
The game ends
- Once no players can make a move the player with the biggest score wins
How to write your AI
- Copy the code on the file random.js to your file,
ai.js
- You may now edit the
update
function which is called each turn
⚠️ Do not rename the
update
function ⚠️
as it's the function that the worker will try to run to test your AI.
How to test your AI
- You may use this link tron, to test your AI
- You need to add your AI as a user in that link
Example:
- if your git login is Frenchris and you want to test against LEEDASILVA the link becomes:
/public/subjects/tron?AI=Frenchris@master+LEEDASILVA@master
- if you want to test against the default
/random.js
AI the link becomes:/public/subjects/tron?AI=Frenchris@master+/random.js
- if your git login is Frenchris and you want to test against LEEDASILVA the link becomes:
- Open the inspector of the browser used and disable the cache
- let's change the update function so that your AI only goes forward.
Replace this line just before the return
of the update function:
const available = coordsInBound.filter(isFree)
// And I return a random available coord
return pickRandom(available)
...with this line:
// always return the first free coordinates
return coordsInBound.filter(isFree)[0]
-
save the file, push the changes and re-run the game in the browser. If the cache was correctly disabled, you have changed your AI behaviour from a random pick of available moves to only going forward.
-
To understand better the way of controlling your AI, read the comments inside the AI file and do a lot of testing.
-
When peer-corrected, you AI will be competing against other AIs. Be aware that there will be the possibility for the peer-correcter to use his or her own AI.
May the best tron win :)
Have fun and good luck.