3.7 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 stepshift
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 test your ai locally. For that, create a folder and give it a name. Inside the folder you created, insert this file index.html.
- After that, create a simple web server by running the following command:
$ &>/dev/null python3 -m http.server &
Now open your browser at the specified port. You'll use an appropriate command for your system:
- Linux:
xdg-open
- macOS:
open
- Windows:
start
xdg-open 'http://localhost:8000'
-
You can set a seed by adding the variable
seed
to the url params. -
You can add up to two AI's by adding the variable
ai
to the url params. The AI's will be separated by a+
- You can add a local file by specifying the relative path.
- You can add a online raw file by specifying the url to that file.
A example of a url with local files using the default AI random.js
against the AI hard.js
would be localhost:8000/?seed=1636444665&ai=random.js+hard.js
.
A example of a url with online files would be localhost:8000/?seed=1636444665&ai=https://dev.01-edu.org/git/root/public/raw/branch/master/subjects/tron/ai/hard.js+https://dev.01-edu.org/git/root/public/raw/branch/master/subjects/tron/ai/random.js
.
Note: You can test a local AI against and online one.
- 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.