Board makeBoard(Group* group, Move move){ // Make Board from Group and Move Board board; int x,y; for(x=0;x<3;x++){ for(y=0;y<4;y++){ board.tile[x][y].x = x; board.tile[x][y].y = y; board.tile[x][y].occupied = getTile(x,y,*group); board.tile[x][y].enemyNum = 0; board.tile[x][y].myNum = 0; // Initialize Board with Group info } } if(move.dirc==PLACE){ board.tile[move.prevX][move.prevY].occupied = move.type; group->animal[group->num] = newAnimal(move.type, move.prevX, move.prevY); group->num++; // Apply Placement }else{ x = moveX(move.prevX,move.dirc); y = moveY(move.prevY,move.dirc); *group = moveGroup(*group, move.prevX, move.prevY, x, y); board.tile[move.prevX][move.prevY].occupied = 'o'; board.tile[x][y].occupied = move.type; // Apply Movement } return board; }
int placeDanger(Board board, Group enemyHand){ int x,y,i,danger = 0; for(x=0; x<3; x++){ for(y=0; y<4; y++){ if(board.tile[x][y].occupied != 'o') continue; if(board.tile[x][y].enemyNum < board.tile[x][y].myNum) continue; for(i=0; i<enemyHand.num; i++){ Animal enemy = newAnimal(x,y,enemyHand.animal[i].type); danger += getPlaceDanger(board,enemy); } } } if(danger == 0) return 0; else return -danger; }
int main(int argc, char *argv[]) { Animal animal; Bird bird, mutantBird; Cat cat; Crow crow; newAnimal(&animal); animal.setName(&animal, animalName); newBird(&bird); ((Animal *) &bird)->setName((Animal *) &bird, birdName); newBird(&mutantBird); ((Animal *) &mutantBird)->setName((Animal *) &mutantBird, mutantBirdName); ((Animal *) &mutantBird)->setLegs((Animal *) &mutantBird, 3); newCat(&cat); ((Animal *) &cat)->setName((Animal *) &cat, catsName); newCrow(&crow); ((Animal *) &crow)->setName((Animal *) &crow, crowName); test_animal(&animal); test_animal((Animal *) &bird); test_animal((Animal *) &mutantBird); test_animal((Animal *) &cat); test_animal((Animal *) &crow); test_cat(&cat); test_bird(&bird); test_bird((Bird *) &mutantBird); test_bird((Bird *) &crow); test_crow(&crow); return 0; }