When the user taps a button (representing a grid cell), you pass the position (0-8) to the extension.
Why is it called horizon? Perhaps because the AI looks to the "horizon" of the game tree.
However, in a package like io.horizon.tictactoe.aix, we rarely use raw recursion. Tic-Tac-Toe has a small state space, but as games get complex (like Chess), checking every node is impossible. io.horizon.tictactoe.aix
Modern implementations often include optimizations like:
For Tic-Tac-Toe, aix likely utilizes full Alpha-Beta Pruning, resulting in an unbeatable opponent. You cannot win against it; the best you can hope for is a draw. When the user taps a button (representing a
You don't manage a 3x3 array. You just call InitializeBoard.
Since the MIT App Inventor case is most plausible, let’s examine the internals. unzip io
package io.horizon.tictactoe;import com.google.appinventor.components.annotations.; import com.google.appinventor.components.runtime.;
@DesignerComponent(version = 1, description = "A Tic Tac Toe game component", category = ComponentCategory.EXTENSION) @SimpleObject public class TicTacToe extends AndroidNonvisibleComponent // Game logic here
unzip io.horizon.tictactoe.aix -d extension_source/
cd extension_source/
jar xf classes.jar
javap -c io.horizon.tictactoe.TicTacToe # decompile bytecode