Android Open Source - Toe Strategy Item






From Project

Back to project page Toe.

License

The source code is released under:

GNU General Public License

If you think the Android project Toe listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/**
 * @author John Piser developer@earthblood.com
 *//from   ww w  .ja v a 2s . co m
 * Copyright (C) 2014 EARTHBLOOD, LLC
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
 */
package com.earthblood.tictactoe.strategy;

import android.util.Log;

import com.earthblood.tictactoe.application.Toe;
import com.earthblood.tictactoe.util.GameSymbol;

import org.apache.commons.lang3.ArrayUtils;

import java.util.Random;

public class StrategyItem {

    public static final int[] ALL_BOXES = {1,2,3,4,5,6,7,8,9};
    public static final int[] DEFAULT_ZEROS = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
    public static final int NOT_FOUND = -1;
    public static final int MIDDLE_BOX_POSITION = 5;

    private StrategyItem successor;
    protected int[] currentlySelectedBoxes;
    protected int[] availableBoxes;

    protected Random random = new Random();

    public int getRandom(int min, int max){
        return random.nextInt(max - min + 1) + min;
    }
    public Random getRandomObject(){
        return this.random;
    }

    protected int getBoxId(int[] selectedXBoxIds, int[] selectedOBoxIds, GameSymbol androidSymbol){
        return NOT_FOUND;
    }

    public int execute(int[] selectedXBoxIds, int[] selectedOBoxIds, GameSymbol androidSymbol){
        Log.i(Toe.TAG, "Inside: " + getClass().getName());

        currentlySelectedBoxes = ArrayUtils.addAll(selectedXBoxIds, selectedOBoxIds);
        currentlySelectedBoxes = ArrayUtils.removeElements(currentlySelectedBoxes, DEFAULT_ZEROS);
        availableBoxes = ArrayUtils.removeElements(ALL_BOXES, currentlySelectedBoxes);


        int boxId = getBoxId(selectedXBoxIds, selectedOBoxIds, androidSymbol);
        if(ArrayUtils.contains(ALL_BOXES, boxId)){
            Log.i(Toe.TAG, "Found: " + boxId);
            return boxId;
        }
        else if(successor != null){
            return successor.execute(selectedXBoxIds, selectedOBoxIds, androidSymbol);
        }
        else{
            return NOT_FOUND;
        }
    }


    protected StrategyItem getSuccessor() {
        return successor;
    }

    protected void setSuccessor(StrategyItem successor) {
        this.successor = successor;
    }
}




Java Source Code List

com.earthblood.tictactoe.activity.GameActivity.java
com.earthblood.tictactoe.activity.MainActivity.java
com.earthblood.tictactoe.application.Toe.java
com.earthblood.tictactoe.contentprovider.GameContentProvider.java
com.earthblood.tictactoe.engine.ToeGame.java
com.earthblood.tictactoe.guice.ToeRoboModule.java
com.earthblood.tictactoe.helper.CoinTossHelper.java
com.earthblood.tictactoe.helper.GameDatabaseHelper.java
com.earthblood.tictactoe.helper.HapticFeedbackHelper.java
com.earthblood.tictactoe.helper.HtmlHelper.java
com.earthblood.tictactoe.helper.PreferenceHelperImpl.java
com.earthblood.tictactoe.helper.PreferenceHelper.java
com.earthblood.tictactoe.strategy.StrategyItemPatternDetector.java
com.earthblood.tictactoe.strategy.StrategyItemPickMiddleBox.java
com.earthblood.tictactoe.strategy.StrategyItemPickRandomBox.java
com.earthblood.tictactoe.strategy.StrategyItem.java
com.earthblood.tictactoe.strategy.ToeStrategyBase.java
com.earthblood.tictactoe.strategy.ToeStrategyEasy.java
com.earthblood.tictactoe.strategy.ToeStrategyExplicit.java
com.earthblood.tictactoe.strategy.ToeStrategyHard.java
com.earthblood.tictactoe.strategy.ToeStrategyNormal.java
com.earthblood.tictactoe.strategy.ToeStrategyVeryHard.java
com.earthblood.tictactoe.strategy.ToeStrategy.java
com.earthblood.tictactoe.util.GameBox.java
com.earthblood.tictactoe.util.GamePreference.java
com.earthblood.tictactoe.util.GameStatus.java
com.earthblood.tictactoe.util.GameSymbol.java
com.earthblood.tictactoe.util.GameWinPattern.java
com.earthblood.tictactoe.util.Skill.java