#include "tactique.h"


void CIBLE(int *i, int *j, grille * x)
// niveau 0 : au hasard! 
{
    *i = random() % DIMENSION;
    *j = random() % DIMENSION;
}


void optimise(int i, int j, grille * x, int r)
{				// Les cases ou il ne faut pas tirer sont
    // marquees OPT pour optimiser la strategie
    // de la grille x
    int k, h = 0, f = 0;
    if (r != TOUCHE && r != COULE)
	return;
    if (j > 0)
	if (x->adv[i][j - 1] == TOUCHE) {
	    for (k = j - 2; k <= j + 1; k++) {
		if (ok(i - 1, k))
		    x->adv[i - 1][k] = OPT;
		if (ok(i + 1, k))
		    x->adv[i + 1][k] = OPT;
	    }
	    h = 1;
	}
    if (j < DIMENSION - 1)
	if (x->adv[i][j + 1] == TOUCHE) {
	    for (k = j - 1; k <= j + 2; k++) {
		if (ok(i - 1, k))
		    x->adv[i - 1][k] = OPT;
		if (ok(i + 1, k))
		    x->adv[i + 1][k] = OPT;
	    }
	    h = 1;
	}
    if (i > 0)
	if (x->adv[i - 1][j] == TOUCHE)
	    for (k = i - 2; k <= i + 1; k++) {
		if (ok(k, j - 1))
		    x->adv[k][j - 1] = OPT;
		if (ok(k, j + 1))
		    x->adv[k][j + 1] = OPT;
	    }
    if (i < DIMENSION - 1)
	if (x->adv[i + 1][j] == TOUCHE)
	    for (k = i - 1; k <= i + 2; k++) {
		if (ok(k, j - 1))
		    x->adv[k][j - 1] = OPT;
		if (ok(k, j + 1))
		    x->adv[k][j + 1] = OPT;
	    }
    if (r == COULE) {
	if (h) {
	    for (k = j - 1; k > 0 && x->adv[i][k] == TOUCHE; k--) {
		x->adv[i][k] = COULE;
		f++;
	    }
	    if (ok(i, k))
		x->adv[i][k] = OPT;
	    for (k = j + 1; k < DIMENSION - 1 && x->adv[i][k] == TOUCHE; k++) {
		x->adv[i][k] = COULE;
		f++;
	    }
	    if (ok(i, k))
		x->adv[i][k] = OPT;
	} else {
	    for (k = i - 1; k > 0 && x->adv[k][j] == TOUCHE; k--) {
		x->adv[k][j] = COULE;
		f++;
	    }
	    if (ok(k, j))
		x->adv[k][j] = OPT;
	    for (k = i + 1; k < DIMENSION - 1 && x->adv[k][j] == TOUCHE; k++) {
		x->adv[k][j] = COULE;
		f++;
	    }
	    if (ok(k, j))
		x->adv[k][j] = OPT;
	}
    }
}
