File: SCORE.C | Size: 1,407 bytes | Download file | Back to directory listing | BWPOW's homepage
#include "sachy.h"
 
// vypocita materialne score pre obe strany a urobi rozdiel
// TODO: potom doplni score za napr. volneho pesiaka, pesiakove centrum
// odpocita napr. za izolovaneho pesiaka atd. zleho strelca, dvojpesca atd.
float score(int side)
{
  float score[2];
  int a,x,y;
  float center_battle[8][8]=
  {{0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00},
   {0.01,0.02,0.03,0.04,0.04,0.03,0.02,0.01},
   {0.02,0.03,0.04,0.05,0.05,0.04,0.03,0.02},
   {0.03,0.04,0.05,0.06,0.06,0.05,0.04,0.03},
   {0.03,0.04,0.05,0.06,0.06,0.05,0.04,0.03},
   {0.02,0.03,0.04,0.05,0.05,0.04,0.03,0.02},
   {0.01,0.02,0.03,0.04,0.04,0.03,0.02,0.01},
   {0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00}};
  score[0] = 0;
  score[1] = 0;
 
  for (y=0;y<=7;y++)
    for (x=0;x<=7;x++)
    {
      a = sachovnica[x][y].farba;
      switch (sachovnica[x][y].figurka){
        case pesiak: score[a]+=1; break;
        case jazdec:
        case strelec: score[a]+=3; break;
        case veza: score[a]+=5; break;
        case dama: score[a]+=9; break;
      }
      score[a]+=center_battle[x][y];
    }
 
  if (side == 0)
    score[0] = score[0]-score[1];
  else
    score[0] = score[1]-score[0];
 
  // rosadovy status
  score[0] -= flags[0+(side*3)]*0.1;
  score[0] -= flags[1+(side*3)]*0.05;
  score[0] -= flags[2+(side*3)]*0.05;
  score[0] += castled[side]*0.5;
 
 
  return score[0];
}