Skip to content

Instantly share code, notes, and snippets.

@rorosaurus
Last active December 14, 2015 07:59
Show Gist options
  • Save rorosaurus/5054535 to your computer and use it in GitHub Desktop.
Save rorosaurus/5054535 to your computer and use it in GitHub Desktop.
A short snippet of part of our AI.java file for Botnet.
// if you own that virus
if(viruses[i].getOwner() == playerID())
{
//if tile is captured but not occupied
if(viruses[i].getX() > 0 && !intersectBase(viruses[i].getX()-1, viruses[i].getY(), bases) && getTileAtLocation(viruses[i].getX()-1, viruses[i].getY()).getOwner() == enemyID) {
viruses[i].move(viruses[i].getX()-1, viruses[i].getY());
} else if(viruses[i].getX() < width()-1 && !intersectBase(viruses[i].getX()+1, viruses[i].getY(), bases) && getTileAtLocation(viruses[i].getX()+1, viruses[i].getY()).getOwner() == enemyID) {
viruses[i].move(viruses[i].getX()+1, viruses[i].getY());
} else if(viruses[i].getY() > 0 && !intersectBase(viruses[i].getX(), viruses[i].getY()-1, bases) && getTileAtLocation(viruses[i].getX(), viruses[i].getY()-1).getOwner() == enemyID) {
viruses[i].move(viruses[i].getX(), viruses[i].getY()-1);
} else if(viruses[i].getY() < height()-1 && !intersectBase(viruses[i].getX(), viruses[i].getY()+1, bases) && getTileAtLocation(viruses[i].getX(), viruses[i].getY()+1).getOwner() == enemyID) {
viruses[i].move(viruses[i].getX(), viruses[i].getY()+1);
}
if(viruses[i].getX() > 0 && getTileAtLocation(viruses[i].getX()-1, viruses[i].getY()).getOwner() == 2) {
if(viruses[i].getX() > 1 && getTileAtLocation(viruses[i].getX()-2, viruses[i].getY()).getOwner() == playerID()) {
viruses[i].move(viruses[i].getX()-1,viruses[i].getY());
} else if(viruses[i].getY() > 0 && getTileAtLocation(viruses[i].getX()-1, viruses[i].getY()-1).getOwner() == playerID()) {
viruses[i].move(viruses[i].getX()-1, viruses[i].getY());
} else if(viruses[i].getY() < height()-1 && getTileAtLocation(viruses[i].getX()-1,viruses[i].getY()+1).getOwner() == playerID()) {
viruses[i].move(viruses[i].getX()-1, viruses[i].getY());
}
} else if(viruses[i].getX() < width()-1 && getTileAtLocation(viruses[i].getX()+1, viruses[i].getY()).getOwner() == 2) {
if(viruses[i].getX() < width()-2 && getTileAtLocation(viruses[i].getX()+2, viruses[i].getY()).getOwner() == playerID()) {
viruses[i].move(viruses[i].getX()+1, viruses[i].getY());
} else if(viruses[i].getY() > 0 && getTileAtLocation(viruses[i].getX()+1, viruses[i].getY()-1).getOwner() == playerID()) {
viruses[i].move(viruses[i].getX()+1, viruses[i].getY());
} else if(viruses[i].getY() < height()-1 && getTileAtLocation(viruses[i].getX()-1,viruses[i].getY()+1).getOwner() == playerID()) {
viruses[i].move(viruses[i].getX()+1, viruses[i].getY());
}
} else if(viruses[i].getY() > 0 && getTileAtLocation(viruses[i].getX(), viruses[i].getY()-1).getOwner() == 2) {
if(viruses[i].getY() > 1 && getTileAtLocation(viruses[i].getX(),viruses[i].getY()-2).getOwner() == playerID()) {
viruses[i].move(viruses[i].getX(), viruses[i].getY()-1);
} else if(viruses[i].getX() > 0 && getTileAtLocation(viruses[i].getX()-1, viruses[i].getY()-1).getOwner() == playerID()) {
viruses[i].move(viruses[i].getX(), viruses[i].getY()-1);
} else if(viruses[i].getX() < width()-1 && getTileAtLocation(viruses[i].getX()+1,viruses[i].getY()-1).getOwner() == playerID()) {
viruses[i].move(viruses[i].getX(), viruses[i].getY()-1);
}
} else if(viruses[i].getY() < height()-1 && getTileAtLocation(viruses[i].getX(), viruses[i].getY()+1).getOwner() == 2) {
if(viruses[i].getY() < height()-2 && getTileAtLocation(viruses[i].getX(), viruses[i].getY()+2).getOwner() == playerID()) {
viruses[i].move(viruses[i].getX(),viruses[i].getY()+1);
} else if(viruses[i].getX() > 0 && getTileAtLocation(viruses[i].getX()-1,viruses[i].getY()+1).getOwner() == playerID()) {
viruses[i].move(viruses[i].getX(), viruses[i].getY()+1);
} else if(viruses[i].getX() < height() && getTileAtLocation(viruses[i].getX()+1, viruses[i].getY()+1).getOwner() == playerID()) {
viruses[i].move(viruses[i].getX(), viruses[i].getY()+1);
}
}
}
}
//other move checks
for(int i = 0; i < viruses.length; i++) {
//if tile is not owned by anyone
if(viruses[i].getOwner() == playerID()) {
if(viruses[i].getX() > 0 && getTileAtLocation(viruses[i].getX()-1, viruses[i].getY()).getOwner() == 2) {
viruses[i].move((viruses[i].getX()-1), viruses[i].getY());
} else if(viruses[i].getX() < width()-1 && getTileAtLocation(viruses[i].getX()+1, viruses[i].getY()).getOwner() == 2) {
viruses[i].move(viruses[i].getX()+1, viruses[i].getY());
} else if(viruses[i].getY() > 0 && getTileAtLocation(viruses[i].getX(), viruses[i].getY()-1).getOwner() == 2) {
viruses[i].move(viruses[i].getX(), viruses[i].getY()-1);
} else if(viruses[i].getY() < height()-1 && getTileAtLocation(viruses[i].getX(), viruses[i].getY()+1).getOwner() == 2) {
viruses[i].move(viruses[i].getX(), viruses[i].getY()+1);
}
// if the tile you want to move to is NOT a wall
else if(viruses[i].getX() > 0 && getTileAtLocation(viruses[i].getX()-1, viruses[i].getY()).getOwner() != 3) {
viruses[i].move((viruses[i].getX()-1), viruses[i].getY());
} else if(viruses[i].getX() < width() && getTileAtLocation(viruses[i].getX()+1, viruses[i].getY()).getOwner() != 3) {
// move the virus
viruses[i].move(viruses[i].getX()+1, viruses[i].getY());
} else if(viruses[i].getY() > 0 && getTileAtLocation(viruses[i].getX(), viruses[i].getY()-1).getOwner() != 3) {
viruses[i].move(viruses[i].getX(), viruses[i].getY()-1);
} else if(viruses[i].getY() < height() && getTileAtLocation(viruses[i].getX(), viruses[i].getY()+1).getOwner() != 3) {
viruses[i].move(viruses[i].getX(), viruses[i].getY()+1);
}
}
}
@rorosaurus
Copy link
Author

Congratulations on making it to the bottom of this Gist with your sanity!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment