From 97c4694bc2b82f4f2274b277f8bce22aaf348a22 Mon Sep 17 00:00:00 2001 From: Will Robertson Date: Sun, 5 Aug 2007 09:20:20 +0000 Subject: FS#7536 - Make the superdom score calculation more elegant - thanks to Johnathon Mihalop git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14188 a1c6a512-1295-4272-9138-f99709370657 --- apps/plugins/superdom.c | 133 ++++++++++-------------------------------------- 1 file changed, 27 insertions(+), 106 deletions(-) diff --git a/apps/plugins/superdom.c b/apps/plugins/superdom.c index b39b00a6a3..f963d7f828 100644 --- a/apps/plugins/superdom.c +++ b/apps/plugins/superdom.c @@ -350,112 +350,33 @@ void draw_board(void) { } int calc_strength(bool colour, int x, int y) { - /* Yes, I know. Please, if you know how, fix it. */ - int score=0; - if(board[x][y].colour == colour) { - score+=10; - } - if(board[x+1][y].colour == colour) { - score+=10; - } - if(board[x][y+1].colour == colour) { - score+=10; - } - if(board[x-1][y].colour == colour) { - score+=10; - } - if(board[x][y-1].colour == colour) { - score+=10; - } - if((board[x][y].colour == colour) && board[x][y].tank) { - score+=30; - } - if((board[x+1][y].colour == colour) && board[x+1][y].tank) { - score+=30; - } - if((board[x][y+1].colour == colour) && board[x][y+1].tank) { - score+=30; - } - if((board[x-1][y].colour == colour) && board[x-1][y].tank) { - score+=30; - } - if((board[x][y-1].colour == colour) && board[x][y-1].tank) { - score+=30; - } - if((board[x][y].colour == colour) && board[x][y].plane) { - score+=40; - } - if((board[x+1][y].colour == colour) && board[x+1][y].plane) { - score+=40; - } - if((board[x][y+1].colour == colour) && board[x][y+1].plane) { - score+=40; - } - if((board[x-1][y].colour == colour) && board[x-1][y].plane) { - score+=40; - } - if((board[x][y-1].colour == colour) && board[x][y-1].plane) { - score+=40; - } - if((board[x][y].colour == colour) && board[x][y].ind) { - score+=40; - } - if((board[x+1][y].colour == colour) && board[x+1][y].ind) { - score+=40; - } - if((board[x][y+1].colour == colour) && board[x][y+1].ind) { - score+=40; - } - if((board[x-1][y].colour == colour) && board[x-1][y].ind) { - score+=40; - } - if((board[x][y-1].colour == colour) && board[x][y-1].ind) { - score+=40; - } - if((board[x][y].colour == colour) && board[x][y].farm) { - score+=30; - } - if((board[x+1][y].colour == colour) && board[x+1][y].farm) { - score+=30; - } - if((board[x][y+1].colour == colour) && board[x][y+1].farm) { - score+=30; - } - if((board[x-1][y].colour == colour) && board[x-1][y].farm) { - score+=30; - } - if((board[x][y-1].colour == colour) && board[x][y-1].farm) { - score+=30; - } - if((board[x][y].colour == colour) && board[x][y].nuke) { - score+=20; - } - if((board[x+1][y].colour == colour) && board[x+1][y].nuke) { - score+=20; - } - if((board[x][y+1].colour == colour) && board[x][y+1].nuke) { - score+=20; - } - if((board[x-1][y].colour == colour) && board[x-1][y].nuke) { - score+=20; - } - if((board[x][y-1].colour == colour) && board[x][y-1].nuke) { - score+=20; - } - if((board[x][y].colour == colour) && board[x][y].men) { - score+=(board[x][y].men*133/1000); - } - if((board[x+1][y].colour == colour) && board[x+1][y].men) { - score+=(board[x+1][y].men*133/1000); - } - if((board[x][y+1].colour == colour) && board[x][y+1].men) { - score+=(board[x][y+1].men*133/1000); - } - if((board[x-1][y].colour == colour) && board[x-1][y].men) { - score+=(board[x-1][y].men*133/1000); - } - if((board[x][y-1].colour == colour) && board[x][y-1].men) { - score+=(board[x][y-1].men*133/1000); + int a, b, score=0; + for (a = -1; a < 2; a++){ + for (b = -1; b < 2; b++){ + if (b == 0){ + if(board[x + a][y].colour == colour) + score+=10; + if(((board[x + a][y].colour == colour) && board[x + a][y].tank) || ((board[x + a][y].colour == colour) && board[x + a][y].farm)) + score+=30; + if(((board[x + a][y].colour == colour) && board[x + a][y].plane) || ((board[x + a][y].colour == colour) && board[x + a][y].ind)) + score+=40; + if((board[x + a][y].colour == colour) && board[x + a][y].nuke) + score+=20; + if((board[x + a][y].colour == colour) && board[x + a][y].men) + score+=(board[x + a][y].men*133/1000); + } else if (a == 0){ + if(board[x][y + b].colour == colour) + score+=10; + if(((board[x][y + b].colour == colour) && board[x][y + b].tank) || ((board[x][y + b].colour == colour) && board[x][y + b].farm)) + score+=30; + if(((board[x][y + b].colour == colour) && board[x][y + b].plane) || ((board[x][y + b].colour == colour) && board[x][y + b].ind)) + score+=40; + if((board[x][y + b].colour == colour) && board[x][y + b].nuke) + score+=20; + if((board[x][y + b].colour == colour) && board[x][y + b].men) + score+=(board[x][y + b].men*133/1000); + } + } } return score; } -- cgit v1.2.3