## 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` or `scroll` to move step by step - `shift` 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 its `right`. *(Moving `backward` 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](https://raw.githubusercontent.com/01-edu/public/master/subjects/tron/ai/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](/public/subjects/tron/?ai=&seed=1653547275), 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](/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](/public/subjects/tron?ai=Frenchris@master+/random.js) - 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: ```js const available = coordsInBound.filter(isFree) // And I return a random available coord return pickRandom(available) ``` ...with this line: ```js // 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.