eonarheim / AntAICompetition

Simple Ant Hill AI Competition Simulation Server
4 stars 1 forks source link

Food spawns where ants are already present #23

Closed jkoelndorfer closed 9 years ago

jkoelndorfer commented 9 years ago

I found out while doing some testing that food can spawn in tiles that ants are moving to. This behavior seems counterintuitive to me - shouldn't the ants be immediately picking the food up if it spawns in a tile they are moving onto?

Here is a game where the condition was triggered. On turn 42, my ant was located at (2, 3). My ant moved toward (3, 3). Then, in turn 43, food spawned in (3, 3) where my ant was located.

{'Turn': 42, 'EnemyAnts': [{'Owner': 'Demo Agent', 'Y': 4, 'Id': 2322, 'X': 25}, {'Owner': 'Demo Agent', 'Y': 26, 'Id': 2384, 'X': 26}, {'Owner': 'Demo Agent', 'Y': 26, 'Id': 2386, 'X': 27}, {'Owner': 'Demo Agent', 'Y': 27, 'Id': 2388, 'X': 27}], 'FogOfWar': 10, 'GameId': 1 0, 'VisibleFood': [{'Y': 1, 'X': 8}, {'Y': 2, 'X': 10}, {'Y': 2, 'X': 27}, {'Y': 3, 'X': 9}, {'Y': 3, 'X': 11}, {'Y': 3, 'X': 29}, {'Y': 5, 'X': 5}, {'Y': 7, 'X': 8}, {'Y': 7, 'X': 29}, {'Y': 8, 'X': 7}, {'Y': 8, 'X': 10}, {'Y': 12, 'X': 1}, {'Y': 23, 'X': 2}, {'Y': 25, 'X' : 26}, {'Y': 26, 'X': 1}, {'Y': 27, 'X': 5}, {'Y': 29, 'X': 4}], 'Width': 30, 'EnemyHills': [{'Owner': 'Demo Agent', 'Y': 27, 'X': 27}], 'Hill': {'Owner': 'JohnK', 'Y': 3, 'X': 3}, 'Walls': [{'Ant': None, 'Y': 0, 'Type': 'Wall', 'X': 0}, {'Ant': None, 'Y': 0, 'Type': 'Wall' , 'X': 1}, {'Ant': None, 'Y': 0, 'Type': 'Wall', 'X': 2}, {'Ant': None, 'Y': 0, 'Type': 'Wall', 'X': 27}, {'Ant': None, 'Y': 0, 'Type': 'Wall', 'X': 28}, {'Ant': None, 'Y': 0, 'Type': 'Wall', 'X': 29}, {'Ant': None, 'Y': 1, 'Type': 'Wall', 'X': 0}, {'Ant': None, 'Y': 1, 'Ty pe': 'Wall', 'X': 29}, {'Ant': None, 'Y': 2, 'Type': 'Wall', 'X': 0}, {'Ant': None, 'Y': 2, 'Type': 'Wall', 'X': 29}, {'Ant': None, 'Y': 27, 'Type': 'Wall', 'X': 0}, {'Ant': None, 'Y': 27, 'Type': 'Wall', 'X': 29}, {'Ant': None, 'Y': 28, 'Type': 'Wall', 'X': 0}, {'Ant': Non e, 'Y': 28, 'Type': 'Wall', 'X': 29}, {'Ant': None, 'Y': 29, 'Type': 'Wall', 'X': 0}, {'Ant': None, 'Y': 29, 'Type': 'Wall', 'X': 1}, {'Ant': None, 'Y': 29, 'Type': 'Wall', 'X': 2}, {'Ant': None, 'Y': 29, 'Type': 'Wall', 'X': 27}, {'Ant': None, 'Y': 29, 'Type': 'Wall', 'X': 28}, {'Ant': None, 'Y': 29, 'Type': 'Wall', 'X': 29}], 'IsGameOver': False, 'MillisecondsUntilNextTurn': 1921, 'TotalFood': 0, 'Height': 30, 'Status': None, 'FriendlyAnts': [{'Owner': 'JohnK', 'Y': 3, 'Id': 2377, 'X': 2}]}

{'Turn': 43, 'EnemyAnts': [{'Owner': 'Demo Agent', 'Y': 3, 'Id': 2322, 'X': 25}, {'Owner': 'Demo Agent', 'Y': 25, 'Id': 2386, 'X': 27}, {'Owner': 'Demo Agent', 'Y': 26, 'Id': 2388, 'X': 27}, {'Owner': 'Demo Agent', 'Y': 27, 'Id': 2390, 'X': 27}], 'FogOfWar': 10, 'GameId': 1 0, 'VisibleFood': [{'Y': 1, 'X': 8}, {'Y': 2, 'X': 10}, {'Y': 2, 'X': 27}, {'Y': 3, 'X': 3}, {'Y': 3, 'X': 9}, {'Y': 3, 'X': 11}, {'Y': 3, 'X': 29}, {'Y': 5, 'X': 5}, {'Y': 5, 'X': 12}, {'Y': 7, 'X': 8}, {'Y': 7, 'X': 29}, {'Y': 8, 'X': 7}, {'Y': 8, 'X': 10}, {'Y': 11, 'X': 9}, {'Y': 12, 'X': 1}, {'Y': 26, 'X': 1}, {'Y': 27, 'X': 5}, {'Y': 29, 'X': 4}], 'Width': 30, 'EnemyHills': [{'Owner': 'Demo Agent', 'Y': 27, 'X': 27}], 'Hill': {'Owner': 'JohnK', 'Y': 3, 'X': 3}, 'Walls': [{'Ant': None, 'Y': 0, 'Type': 'Wall', 'X': 0}, {'Ant': None, 'Y': 0, 'Type': 'Wall', 'X': 1}, {'Ant': None, 'Y': 0, 'Type': 'Wall', 'X': 2}, {'Ant': None, 'Y': 0, 'Type': 'Wall', 'X': 27}, {'Ant': None, 'Y': 0, 'Type': 'Wall', 'X': 28}, {'Ant': None, 'Y': 0, 'Type': 'Wall', 'X': 29}, {'Ant': None, 'Y': 1, 'Type': 'Wall', 'X': 0}, {'Ant': None, 'Y': 1, 'Type': 'Wall', 'X': 29}, {'Ant': None, 'Y': 2, 'Type': 'Wall', 'X': 0}, {'Ant': None, 'Y': 2, 'Type': 'Wall', 'X': 29}, {'Ant': None, 'Y': 27, 'Type': 'Wall', 'X': 0}, {'Ant': None, 'Y': 27, 'Type': 'Wall', 'X': 29}, {'Ant': None, 'Y': 28, 'Type': 'Wall', 'X' : 0}, {'Ant': None, 'Y': 28, 'Type': 'Wall', 'X': 29}, {'Ant': None, 'Y': 29, 'Type': 'Wall', 'X': 0}, {'Ant': None, 'Y': 29, 'Type': 'Wall', 'X': 1}, {'Ant': None, 'Y': 29, 'Type': 'Wall', 'X': 2}, {'Ant': None, 'Y': 29, 'Type': 'Wall', 'X': 27}, {'Ant': None, 'Y': 29, 'Ty pe': 'Wall', 'X': 28}, {'Ant': None, 'Y': 29, 'Type': 'Wall', 'X': 29}], 'IsGameOver': False, 'MillisecondsUntilNextTurn': 1872, 'TotalFood': 0, 'Height': 30, 'Status': None, 'FriendlyAnts': [{'Owner': 'JohnK', 'Y': 3, 'Id': 2377, 'X': 3}]}
eonarheim commented 9 years ago

Indeed that is true, this should be a pretty easy fix. We already have code to prevent food from spawning on walls, we just need to extend that to ants.

andrewnguyen42 commented 9 years ago

ad35d8e750220f957c73cdcb10eca3e71c13e1a7

Should fix this