// remplir la case du joueur privatefunction remplirCase(b : Sprite) : Void {
b.x = Std.int(P % C)* T;
b.y = Std.int(P / C)* T;
b.mouseEnabled = false;
addChild(b);
stock[P] = J;
libre.splice(Lambda.indexOf(libre, P), 1);
checkGagne(); }
// vérifie si un joueur gagne privatefunction checkGagne() : Void { var fields = Reflect.fields(valid); var c:Array<Dynamic>; for(field in fields) {
c = Reflect.getProperty(valid, field);
var w : Bool = true;
var fields2 = Reflect.fields(c); var i:Int; for(field2 in fields2) {
i = Reflect.getProperty(c, field2);
// temps de latence avant réponse de l'ordi privatefunction latenceAI() : Void {
grille.removeEventListener(MouseEvent.CLICK, remplir); var timer : Timer = new Timer(500, 1);
timer.addEventListener( TimerEvent.TIMER_COMPLETE, choisiCase );
timer.start(); }
// l'ordi choisi une case privatefunction choisiCase(e : TimerEvent) : Void {
grille.addEventListener(MouseEvent.CLICK, remplir); vartab : Array<Dynamic> = stock.copy(); var i : String; for(i in Reflect.fields(libre)) { if(verifieCase(tab, 2, Reflect.field(libre, i))) { return; } } for(i in Reflect.fields(libre)) { if(verifieCase(tab, 1, Reflect.field(libre, i))) { return; } }
remplirOrdi(libre[Std.int(Math.random()* libre.length)]); }
// l'ordi vérifie si la case est gagnante privatefunction verifieCase(tab : Array<Dynamic>, id : Int, b : Int) : Bool { tab[b] = id;
var fields = Reflect.fields(valid); var c:Array<Dynamic>; for(field in fields) {
c = Reflect.getProperty(valid, field);
var w : Bool = true;
var fields2 = Reflect.fields(c); var i:Int; for(field2 in fields2) {
i = Reflect.getProperty(c, field2);
w = w &&tab[i] == id; } if(w) {
remplirOrdi(b); returntrue; } } tab[b] = 0; returnfalse; }
// l'ordi joue son coup privatefunction remplirOrdi(p : Int) : Void {
P = p;
remplir(null); } }