Method
DeckBot's engine is implemented by using Alpha-beta pruning which is commonly used in computer Chess games. There are some augmented heuristics which are specific to MTG to speed up the process. The heuristics are needed because of the large search space in a Magic game.
The engine does not use a predefined set of 'rules' to determine the next move. Doing that will limit the engine to the skill of the programmer. Instead, it will try every possible combinations of actions possible to come up with the best strategy. As an example, I don't have to tell the engine that it can cast a Giant Growth on a small attacking creature to kill a bigger blocker. The engine can figure that out by itself because the outcome of that is more favorable then not attacking or attacking without using the Giant Growth.
I am currently experiementing with multi-core Minimax and see if the engine can scale.
Everything is written in C++.