Guys can you help me i want to make this minimax algorithm to alphabeta
can you show me or tell me what i am going to do for this or can you edit this code for me......i tried it heres the code.......thank you so much
import java.util.*;
public class MinMaxPlayer implements Player {
    private int[] loc;
    private State current_state;
    private int lookahead = 4;
 
    private int MinimaxDecision(State s){
        //System.out.println("MiniMax started...");
        int v = 0;
        //System.out.println(s.next_player);
        if (s.next_player == 1)
            v= MaxValue(s);
        else v = MinValue(s);
        //System.out.print("MiniMax Search Completed. H:");
        //System.out.println(v);
 
        //System.out.println("MiniMax finished.");
 
        for (int i=0;i<s.suc.size();i++)
        {
            State cell = (State) s.suc.get(i);
            if (cell.v==v) return cell.action;
        }
        //System.out.println("I don't know...");
        return (int) (Math.random()*7);
    }
 
    private int MaxValue(State s){
        //System.out.println("MaxValue get called! State: "+s.movelist);
        if (TerminalTest(s))
        {
          //  System.out.println("MaxValue: Calling Utility");
            int u = Utility(s);
           // System.out.print("MaxValue: The utility of state "+s.movelist+" is ");
           // System.out.println(s.v);
            return u;
        }
        s.v = -500;
        Vector suc=s.suc;
        for (int i =0; i< suc.size(); i++){
            State cell=(State) suc.get(i);
            int temp = MinValue(cell);
            if (temp>s.v)  {s.v=temp;}
        }
        /*
        System.out.print("MaxValue: ");
        for (int i=0;i<suc.size(); i++){
            State cell=(State) suc.get(i);
 
            System.out.print(cell.v);
            System.out.print(" ");
        }
        System.out.println();*/
        return s.v;
    }
    private int MinValue(State s){
        //System.out.println("MinValue get called! State: "+s.movelist);
        if (TerminalTest(s))
        {
          //  System.out.println("MinValue: Calling Utility");
            int u = Utility(s);
            //System.out.print("MinValue: The utility of state "+s.movelist+" is ");
            //System.out.println(s.v);
            return u;
        }
        s.v = 500;
        Vector suc = s.suc;
        for (int i = 0; i< suc.size(); i++){
            State cell=(State) suc.get(i);
            int temp = MaxValue(cell);
 
            if (temp < s.v) s.v = temp;
        }
        /*
         System.out.print("MinValue: ");
        for (int i=0;i<suc.size(); i++){
            State cell=(State) suc.get(i);
            System.out.print(cell.v);
            System.out.print(" ");
        }
        */
        //System.out.println("min of max: "+s.v );
        return s.v;
    }
 
    public boolean TerminalTest(State s){
        //System.out.println("Termininal Testing.  State:"+s.movelist);
        if ((s.depth == lookahead) || (s.over()))
            return true;
        return false;
    }
 
    public int Utility(State s){
        //System.out.println("Utility of State "+s.movelist);
        int me= current_state.next_player;
        int oppo = 3- me;
        if (s.over()){
            if (s.winner == me)
            {
                s.v=100;
 
                return s.v;
            }
            if (s.winner == oppo)
            {
                s.v=-100;
                return s.v;
            }
            if (s.winner == 0)
            {
                s.v=0;
                return 0;
            }
        }
 
 
 
 
        int h=0;
        int row = s.m_x;
        int col = s.m_y;
 
        if ((col>=3)
        && (s.loc[row][col-1] == me)
        && (s.loc[row][col-2] == me)
        && (s.loc[row][col-3] == me))
            h=h+16;
        //right
        if ((col<=3)
        && (s.loc[row][col+1] == me)
        && (s.loc[row][col+2] == me)
        && (s.loc[row][col+3] == me))
            h=h+16;
        //check y direction
        if ((row<=2)
        && (s.loc[row+1][col] == me)
        && (s.loc[row+2][col] == me)
        && (s.loc[row+3][col] == me))
            h=h+16;
        //check left diagonal
        if ((col>=3) && (row<=2)
        && (s.loc[row+1][col-1] == me)
        && (s.loc[row+2][col-2] == me)
        && (s.loc[row+3][col-3] == me))
            h=h+16;
 
        if ((col<=3) && (row<=2)
        && (s.loc[row+1][col+1] == me)
        && (s.loc[row+2][col+2] == me)
        && (s.loc[row+3][col+3] == me))
            h=h+16;
 
        if ((col>=3) && (row>=3)
        && (s.loc[row-1][col-1] == me)
        && (s.loc[row-2][col-2] == me)
        && (s.loc[row-3][col-3] == me))
            h=h+16;
 
        if ((col<=3) && (row>=3)
        && (s.loc[row-1][col+1] == me)
        && (s.loc[row-2][col+2] == me)
        && (s.loc[row-3][col+3] == me))
            h=h+16;
 
        if ((col>=2)
        && (s.loc[row][col-1] == me)
        && (s.loc[row][col-2] == me))
            h=h+4;
        //right
        if ((col<=4)
        && (s.loc[row][col+1] == me)
        && (s.loc[row][col+2] == me))
            h=h+4;
        //check y direction
        if ((row<=3)
        && (s.loc[row+1][col] == me)
        && (s.loc[row+2][col] == me))
            h=h+4;
        //check left diagonal
        if ((col>=2) && (row<=3)
        && (s.loc[row+1][col-1] == me)
        && (s.loc[row+2][col-2] == me))
            h=h+4;
 
        if ((col<=4) && (row<=3)
        && (s.loc[row+1][col+1] == me)
        && (s.loc[row+2][col+2] == me))
            h=h+4;
 
        if ((col>=2) && (row>=2)
        && (s.loc[row-1][col-1] == me)
        && (s.loc[row-2][col-2] == me))
            h=h+4;
 
        if ((col<=4) && (row>=2)
        && (s.loc[row-1][col+1] == me)
        && (s.loc[row-2][col+2] == me))
            h=h+4;
 
        if ((col>=1)
        && (s.loc[row][col-1] == me))
            h=h+2;
        //right
 
        if ((col<=5)
        && (s.loc[row][col+1] == me))
            h=h+2;
        //check y direction
        if ((row<=4)
        && (s.loc[row+1][col] == me))
            h=h+2;
        //check left diagonal
        if ((col>=1) && (row<=4)
        && (s.loc[row+1][col-1] == me))
            h=h+2;
 
        if ((col<=5) && (row<=4)
        && (s.loc[row+1][col+1] == me))
            h=h+2;
 
        if ((col>=1) && (row>=1)
        && (s.loc[row-1][col-1] == me))
            h=h+2;
 
        if ((col<=5) && (row>=1)
        && (s.loc[row-1][col+1] == me))
            h=h+2;
 
        //check x direction.
        //left
        if ((col>=3)
        && (s.loc[row][col-1] == oppo)
        && (s.loc[row][col-2] == oppo)
        && (s.loc[row][col-3] == oppo))
            h=h+8;
        //right
        if ((col<=3)
        && (s.loc[row][col+1] == oppo)
        && (s.loc[row][col+2] == oppo)
        && (s.loc[row][col+3] == oppo))
            h=h+8;
        //check y direction
        if ((row<=2)
        && (s.loc[row+1][col] == oppo)
        && (s.loc[row+2][col] == oppo)
        && (s.loc[row+3][col] == oppo))
            h=h+8;
        //check left diagonal
        if ((col>=3) && (row<=2)
        && (s.loc[row+1][col-1] == oppo)
        && (s.loc[row+2][col-2] == oppo)
        && (s.loc[row+3][col-3] == oppo))
            h=h+8;
 
        if ((col<=3) && (row<=2)
        && (s.loc[row+1][col+1] == oppo)
        && (s.loc[row+2][col+2] == oppo)
        && (s.loc[row+3][col+3] == oppo))
            h=h+8;
 
        if ((col>=3) && (row>=3)
        && (s.loc[row-1][col-1] == oppo)
        && (s.loc[row-2][col-2] == oppo)
        && (s.loc[row-3][col-3] == oppo))
            h=h+8;
 
        if ((col<=3) && (row>=3)
        && (s.loc[row-1][col+1] == oppo)
        && (s.loc[row-2][col+2] == oppo)
        && (s.loc[row-3][col+3] == oppo))
            h=h+8;
 
        if ((col>=2)
        && (s.loc[row][col-1] == oppo)
        && (s.loc[row][col-2] == oppo))
            h=h+4;
        //right
        if ((col<=4)
        && (s.loc[row][col+1] == oppo)
        && (s.loc[row][col+2] == oppo))
            h=h+4;
        //check y direction
        if ((row<=3)
        && (s.loc[row+1][col] == oppo)
        && (s.loc[row+2][col] == oppo))
            h=h+4;
        //check left diagonal
        if ((col>=2) && (row<=3)
        && (s.loc[row+1][col-1] == oppo)
        && (s.loc[row+2][col-2] == oppo))
            h=h+4;
 
        if ((col<=4) && (row<=3)
        && (s.loc[row+1][col+1] == oppo)
        && (s.loc[row+2][col+2] == oppo))
            h=h+4;
 
        if ((col>=2) && (row>=2)
        && (s.loc[row-1][col-1] == oppo)
        && (s.loc[row-2][col-2] == oppo))
            h=h+4;
 
        if ((col<=4) && (row>=2)
        && (s.loc[row-1][col+1] == oppo)
        && (s.loc[row-2][col+2] == oppo))
            h=h+4;
 
        if ((col>=1)
        && (s.loc[row][col-1] == oppo))
            h=h+2;
        //right
 
        if ((col<=5)
        && (s.loc[row][col+1] == oppo))
            h=h+2;
        //check y direction
        if ((row<=4)
        && (s.loc[row+1][col] == oppo))
            h=h+2;
        //check left diagonal
        if ((col>=1) && (row<=4)
        && (s.loc[row+1][col-1] == oppo))
            h=h+2;
 
        if ((col<=5) && (row<=4)
        && (s.loc[row+1][col+1] == oppo))
            h=h+2;
 
        if ((col>=1) && (row>=1)
        && (s.loc[row-1][col-1] == oppo))
            h=h+2;
 
        if ((col<=5) && (row>=1)
        && (s.loc[row-1][col+1] == oppo))
            h=h+2;       
 
        s.v = h;
        return h;
    }
 
    /** Creates a new instance of MinMaxPlayer */
    public MinMaxPlayer() {
        System.out.println("MinMaxPlayer Initialized.");
        current_state = new State();
    }
 
    public int getType() {
        return 4;
    }
 
    public void go(SimpleBoard b) {
        State current_state = new State();
 
        current_state.ParseMove(b.movelist);
        //System.out.println("MinMaxPlayer thinking...");
        create_suc(current_state);
        int m = MinimaxDecision(current_state);
        //System.out.println(m);
        b.Move(m);
 
    }
 
    public void setMove(int col) {
    }
 
    public void display_tree(){
 
    }
    private void create_suc(State s){
        //System.out.print("Generate Successors down to level ");
        //System.out.println(lookahead);
        Vector chd = new Vector();
        for (int i=0; i<7; i++) {
            State temp = new State();
            temp.ParseMove(s.movelist);
            if (temp.cols[i]!=6){
                temp.Move(i);
                temp.depth = s.depth+1;
                temp.action = i;
                temp.out=false;
                chd.add(temp);
                if (temp.depth<lookahead) create_suc(temp);            
            }
        }
        s.suc=chd;
    }
 
}
 
class State extends SimpleBoard{
    public int v = -1;
    public int depth = 0;
    public int action =0;
    public boolean out = false;
    public Vector suc=new Vector();
    State(){
        action = -1;
        v=0;depth=0;clear();
        suc = new Vector();
        out = false;
    }
 
}