HOW IT WORKS - BRIEF GUIDE TO THIS ENGINE
contents: introduction, inputs and outputs page 1/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

summary



switch language:

ENGLISH
CESKY

go to page:
pixoria main


This HTML document relates to C++ source code attached to im007 and should provide a better understanding.
Both the installation file (pixoria_plugin_im007.exe) and the main application (Pixoria) are available for download at: pixoria.eu
After installing im007, the source code can be found in:
Pixoria/plugins/iM007/source_im007/sampleEngine.cpp

The im007 Engine is a subroutine of the main application called Pixoria (pixoria.eu).
The engine's task is to, based on input data, give Pixoria an answer to a simple question: Which free square on the board should become occupied by the engine's symbol?

The engine analyzes input data on different levels and creates a set of possible answers (free squares). It will assign a value to each of the answers (free squares), based on its decision. It tries to find pre-defined structures or patterns in input data and evaluating the next possible moves depends on the pattern hierarchy. Finally, it will pick one of the highest valued answers and send it back to Pixoria ( dMove ).

Pixoria provides info on current status of the game board

char board[]

which contains 361 characters. This is the only source information from Pixoria, that the engine uses. The game board in Pixoria is a square field made of 19 x 19 = 361 squares. Only 3 characters are present in squares on the game board (example):

... N N N O N X X O N ...
N - marks an empty square (none).
X - marks a square occupied by the first player.
O - marks a square occupied by the second player.
Because the game board is a two-dimensional array, the engine will rewrite the input one-dimensional array [361] into an array of arrays (2D array) [19][19]:

char matRCboard[][]

This is to get a better view of the input data.
Meanwhile the engine counts all unoccupied squares on the board (
N ). This is how the engine determines which player it is. In Pixoria, the game always begins by the move of player ( X ). The board has 19 * 19 = 361 squares. This is an odd number. That means, it the count of ( N ) is odd, you're player ( X ), otherwise you're the second player ( O ).

who = empty % 2; //1 = X (you are X), 0 = O ...

The output is sent to Pixoria using the variable dMove:
return dMove
This is a number in interval [0..360], which marks the position of some N symbol in the input array board .

Pixoria provides the information about which player (X, O) should move now, in the variable
char square
However, the engine does not use it. The engine also cannot handle a change in game board dimensions.



back to top independent Machines development lab (2013) page 1/12