Fox-and-Hounds Game

In a forest, there is a fox and four hounds. The goal of the hounds is to trap the fox. In order to do this they must either surround the fox on all four sides, trap him in a corner or against the edge of the forest. When the fox can no longer move it is trapped.

The forest is a rectangular grid containing no obstacles. I have worked with two forest sizes: 50 by 25 and 75 by 30. The size is mostly dictated by the visualization tool being used because 30 rows is all that can be seen on the screen. The forest is controlled by a configuration file that sets the original placement of the fox and the hounds as well as the size of the forest.

The fox can only move in four directions: up, down, left, and right. The hounds can move in eight directions by allowing diagonal moves as well. This makes the hounds a little faster than the fox.

The fox has two modes: normal and evasion. In normal mode the fox moves randomly, just wandering around the forest. The fox looks before every move. In normal mode, its viewing area starts at two squares in each direction so the total area that can be seen is a five by five square in the grid. Once the fox has spotted a hound it goes into evasion mode and can now see all the hounds. It plans its escape accordingly. Once the hounds are out of its viewing area it returns to normal mode.

The hounds have a larger viewing area of five squares in each direction for an eleven by eleven square. This allows a hound to see the fox before the fox can see the hound. A smart hound can stay out of the fox's sight range.

Both the hounds and the fox have smaller sensing areas as they tire. The fox's sensing area will diminish depending on how many times it has gone into evasion mode. The hound's sensing area depends on the number of moves it has made and the number of messages it has sent.

The hounds can communicate with each other but only indirectly. They send a message to the forest and the forest passes it on to the other hound or hounds. The size and number of messages is limited by the forest.

The forest operates in cycles. In each cycle the hound can look, send messages and make one move. The forest process all messages, sends them to the appropriate parties, updates the counts of moves and message information, and records the moves of the fox and the hounds. This process is repeated every cycle. The forest also records the activities in a log file.

The original forest was noiseless, lossless, and without delay in regards to the passing of messages. I have introduced mechanisms into the forest that create disturbances in the message passing cycle. These values can be set through the forest configuration file that sets up the forest at the beginning of each game.

There are three flags that can be set LOSS, NOISE, and DELAY. The range of allowed values for each of these flags is 0 - 5. If a value outside this range is entered, the flag will be set to 0.

The LOSS flag controls how many messages between hounds are lost. The forest counts how many messages are sent between any of the hounds. Every ten messages the forest calculates randomly which messages will be lost. For example if the LOSS flag is set at 2, the forest will select two random messages out of every ten messages sent. These messages will not be relayed to the hounds.

The NOISE flag controls what the hound sees. When this flag is set to a value greater than zero, the hounds will receive innacurate coordinates for the fox's location. The forest counts the number of looks that any of the hounds make. Every ten looks the forest calculates randomly which look will receive a distorted value. For example if the LOSS flag is set at 3, the forest will select three random looks out of every ten looks that are requested. If the hound can see the fox during the selected look, the forest will give inaccurate coordinates. The inaccuracy is also random. A random number is generated to determine which of the eight directions from the fox's actual position will be reported to the hound. The distortion can be just in the x-direction, just in the y-direction, or both.

The DELAY flag controls if messages between hounds will be delayed. For every message that is sent through the forest, a random number between zero and the flag value will be generated. If this number is greater than zero, the message will not be processed during that cycle. The forest decrements the delay value of that particular message and goes on to look at the next message.