summaryrefslogtreecommitdiff
path: root/apps/plugins
diff options
context:
space:
mode:
authorWill Robertson <aliask@rockbox.org>2007-08-05 09:20:20 +0000
committerWill Robertson <aliask@rockbox.org>2007-08-05 09:20:20 +0000
commit97c4694bc2b82f4f2274b277f8bce22aaf348a22 (patch)
tree2d005c7b3a43d580795d89478511d59ad06584e6 /apps/plugins
parent739f0ecd9490d2b59f29c27df520269968a3b956 (diff)
downloadrockbox-97c4694bc2b82f4f2274b277f8bce22aaf348a22.zip
rockbox-97c4694bc2b82f4f2274b277f8bce22aaf348a22.tar.gz
rockbox-97c4694bc2b82f4f2274b277f8bce22aaf348a22.tar.bz2
rockbox-97c4694bc2b82f4f2274b277f8bce22aaf348a22.tar.xz
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
Diffstat (limited to 'apps/plugins')
-rw-r--r--apps/plugins/superdom.c133
1 files changed, 27 insertions, 106 deletions
diff --git a/apps/plugins/superdom.c b/apps/plugins/superdom.c
index b39b00a..f963d7f 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;
}