From 8b2d6287903ccfb2c91b74a55496c1122d853c75 Mon Sep 17 00:00:00 2001
From: Henri Montjoie <henri.montjoie@insa-rennes.fr>
Date: Mon, 16 May 2016 21:57:07 +0200
Subject: [PATCH] optimisation : la fonction deplacement_unitaire_possible
 n'est pluas appelee que 900 000 fois et non 655 millions

---
 src/deplacements.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/src/deplacements.c b/src/deplacements.c
index 8e1fbe5..3b64b81 100644
--- a/src/deplacements.c
+++ b/src/deplacements.c
@@ -113,9 +113,10 @@ boolean deplacement_unitaire_possible(Case* depart,Case* destination){
 boolean deplacement_possible(Personnage* perso, Case* c, Carte_Jeu* carte){
     int pts_mvt = perso->points_deplacement;
     Case* depart=perso->position;
+    if(depart->coord_x>c->coord_x+pts_mvt||depart->coord_x<c->coord_x-pts_mvt||depart->coord_y>c->coord_y+pts_mvt||depart->coord_y<c->coord_y-pts_mvt) return faux;
     int x,y;
-    for(x=0;x<LARG_MAX_CARTE;x++){
-        for(y=0;y<HAUT_MAX_CARTE;y++){
+    for(x=depart->coord_x-pts_mvt;x<LARG_MAX_CARTE&&x<=depart->coord_x+pts_mvt;x++){
+        for(y=depart->coord_y-pts_mvt;y<HAUT_MAX_CARTE&&y<=depart->coord_y+pts_mvt;y++){
             if(deplacement_unitaire_possible(depart,&carte->Tab_Cases[x][y])==vrai){
                 if(deplacement_possible_recursif(&carte->Tab_Cases[x][y],c, carte,pts_mvt-carte->Tab_Cases[x][y].terrain->PD_requis)==vrai){
                     return vrai;
@@ -137,8 +138,8 @@ boolean deplacement_possible_recursif(Case* dep, Case* dest, Carte_Jeu* carte, i
     int x,y;
     if(dep==dest) return vrai;
     if(pts_restants<1) return faux;
-    for(x=0;x<LARG_MAX_CARTE;x++){
-            for(y=0;y<HAUT_MAX_CARTE;y++){
+    for(x=dep->coord_x-pts_restants;x<LARG_MAX_CARTE&&x<=dep->coord_x+pts_restants;x++){
+        for(y=dep->coord_y-pts_restants;y<HAUT_MAX_CARTE&&y<=dep->coord_y+pts_restants;y++){
                 if(deplacement_unitaire_possible(dep,&carte->Tab_Cases[x][y])==vrai){
                     if(deplacement_possible_recursif(&carte->Tab_Cases[x][y],dest, carte,pts_restants-carte->Tab_Cases[x][y].terrain->PD_requis)==vrai){
                         return vrai;
-- 
GitLab