C'est quoi le moyen le plus simple de faire un programme qui "automatise" le jeu ?
C'est de lire le code source =)
Si tu regardes les sources, tu vois que tu as
game_manager.js qui va globalement se charger de faire apparaitre des tuiles, de les merger...
keyboard_input_manager.js qui va détecter qu'on a appuyé sur une touche, et demander à game_manager de bouger/merger les tuiles en conséquences.
De fait, tu peux simplement réutiliser ce qui a été fait (au lieu de simuler des éléments clavier, tu peux directement demander à game_manager de bouger les tuiles).
Par exemple:
Pour aller vers le haut
game_manager.js
- Code: Tout sélectionner
// Move tiles on the grid in the specified direction
GameManager.prototype.move = function (direction) {
// 0: up, 1: right, 2:down, 3: left
var self = this;
Tu as qu'à appeler game.move(0); pour aller vers le haut.
Pour connaitre la situation tu as qu'à regarder comment game_manager update la grille, et tu vois this.grid.
tu as donc qu'à utiliser
game.grid.cells
game.grid.cells[0] donnant la première colonne à gauche (de haut en bas)
game.grid.cells[0][3] donnant donc la case coin bas gauche
Pour récupérer game, tu as
application.js
- Code: Tout sélectionner
// Wait till the browser is ready to render the game (avoids glitches)
window.requestAnimationFrame(function () {
var game = new GameManager(4, KeyboardInputManager, HTMLActuator, LocalScoreManager);
//un ajout
new IA(game);//on passe, game pour avoir accès au jeu..
});
et tu te doutes que dans IA, tu vas implémenter une méthode qui à chaque fois qu'elle a joué, va regarder le nouvel état de la grille, et rejouer...
Un fichier IA.js que tu crèes et insères dans la page html (2048.html)
- Code: Tout sélectionner
//ton fichier créé..
- Code: Tout sélectionner
var COUNT=0;//juste pour pas boucler à l'infini...
function IA(game){
this.game=game;
var that=this;
window.requestAnimationFrame(this.doMove.bind(this));
}
IA.prototype.doMove=function (){
if(!this.game.isGameTerminated() && COUNT++<100){
var direction = this.selectDirection(); //on analyse la grille
this.game.move(direction) //et on dit à game la direction dans laquelle on joue
requestAnimationFrame(this.doMove.bind(this));
}
}
/*
Algorithm is following:
Init
we try to put the highest number at the top
we try to put the highest number on the left
blabla
*/
IA.prototype.selectDirection=function (){
var direction=3;//left
if(this.canGoUp()){
return 0;
}
if(this.canGoLeft()){
return 3;
}
return 1;
}
IA.prototype.canGoLeft=function(x){
return this.game.grid.cells[x];//implem stupide juste pour montrer comment accéder aux tuiles
}
Bien entendu pour enregistrer le jeu, tu vas sur la page, et tu fais fichier enregistrer sous... :lol3: