Darrylsh: Hurricane sounds awful. I hope everything gets back to normal soon.
My strategies:
1. since there where more locations I figured it would be the hardest to figure out
Likewise.
therefore if my bot had more than one of the cards requested, it would try not to show a location
I didn't go that far, but I did keep a record of which cards I had shown to whom, and showed them a card they had already seen if given a choice. If they hadn't seen any of the cards before, I tried to show a card I had shown to someone else before as opposed to a card no-one had yet seen. Hopefully this would minimise the info other players could pick up from the card I showed.
Also, my bot tried to figure out location last, hoping that it would had picked up enough "casual" info to eliminate some of the locations before trying to figure it out.
My bot took the opposite strategy, and tried to figure out the location first, thinking that by the time it knew the location it would probably already have a lot of info towards the suspect and weapon, which would make them a lot easier. It might already know them.
2. I tried to only ask for 1 card at a time that I needed
I decided against this strategy. My bot askes for the cards it is most likely to be given the info it has currently. I figured getting shown one card was as good as being shown any other card, given you've seen neither of them before.
If I know the suspect, I will ask for a suspect in my hand, to try fool the other players (or weapon, or location). The only time I ask for cards in my hand before I know something is when I am almost sure that I know the location (ie. I know all but one DON'T have that location), and I need to make sure. That case takes precedence over everything else, as the location is hardest to find.
Only downside to this is that I can never win before the 3rd turn by getting lucky
I have seen my player (VERY rarely) win on the first turn during my testing.
3. when a player makes a suggestion and another player showed a card... if you knew the whereabouts of two of the cards you could then know the card that player showed. For cases where I didn't know 2 of the cards, I saved the suggestion to history and would check later when I did know the other two cards.
This was a major part of my player too. I also got a lot of info when someone DIDN'T show any cards. I then know 3 cards that they definately don't have. One of the uses of this info is to make sensible suggestions. My bot didn't suggest randomly. It suggested the card that it knew the most people didn't have, as that is the card it is most likely to be, given current info.
4. Moving is the only area I think my bot needed improvement, because it didn't think ahead, for example if i couldn't reach a certain location in current move, my bot didn't try to figure out how to at least get closer so that next move it could. It instead just picks the "best" location out of available choices.
I did implement a simple movement algorithm (not as simple as I would have liked !!) so my player didn't move randomly when none of the choices was suitable. While analysing results before I did this I found that there were some occasions when my player was wasting 3 or 4 turns moving randomly around the wrong part of the board, so I wanted to minimise this. My algy does this reasonably, although it could probably be improved.
The last thing that I wanted to add to my player was a system for working out how much every other player knew. Then, if I thought someone was close to the answer, I could guess myself before their turn. If I was sure they knew everything, guessing, even if I was wrong, would be a better strategy that just letting them take their turn and win. I couldn't work out a reasonable way to do this however, so my player only makes an accusation if its sure its right.
I can't wait for the results.