obsah: brief content summary of this HTML document: page 12/12

inputs and outputs
first moves
basic analysis
RCboard rules
first 2 layers
flag rules (1D)
flag combination (2D)
LM moves
three structure
delay rules
last analysis


go to page:
pixoria main

The engine reads input data and:

Determines if it's player one or player two.
If it's player one, it moves in the center of the board.
If it's player two and the first player put their move on the edge, the engine moves to the center as well.
It counts sequences of symbols X and O in eight directions and writes results at positions of free squares next to those sequences, into array xRCboard and oRCboard.

This is already enough to make a simple functioning engine. But engine 007 goes on further:

It looks for character sequences in eight directions according to RCboard rules and updates move values in arrays xRCboard and oRCboard.
It looks for character sequences (structures) in eight directions according to flag rules and writes results to arrays flagx and flago, values from different lines add up. Some sequences are also saved in arrays delayx and delayo.
Later, according to values in flag arrays, it updates values of RCboard arrays, while considering its current status: the updated values also depend on whether the engine is player one or player two.
It looks for char sequences in eight directions according to LM rules and writes results to lastMx and lastMo arrays. This info can be later used in an emergency.
It looks for 'three' structures and anything that breaks the symmetry in the area (RCboard array update).
It looks for such char sequences in eight directions, that contain forces moves and at the same time allow the player to create a winning series of moves. To that end, it uses data from the delay array. When it does find a suitable combination, it updates move values in RCboard array. Delay combinations allow the player to switch to a successful offensive.
When looking for sequences, values and structures according to vaious rules, the engine will update the pertinent counters.

The engine searches its newly created data and:

According to best move values of both players, it finds how it's doing. If it finds itself in a dangerous defensive situation, it still has several options to turn the situation around.
If the current situation allows it, the engine can use preventive defensive moves.

The engine searches both arrays with move values (xRCboard a oRCboard) and sends the coordinates of best move to the main application.

go top independent Machines develop lab (2013) page 12/12