import java.awt.Color; import java.awt.Graphics; import java.util.ArrayList; public class Board { private static final int rows=6; private static final int cols=7; private int cellSize; private Piece [][] grid; public Board(){ grid = new Piece[rows][cols]; setCellSize(100); } public static int getRows() { return rows; } public static int getCols() { return cols; } public Piece [][] getGrid() { return grid; } /** * columnTop returns the index of the row of the * next available cell of the column * or -1 if the column is full * @param c the column to check * @return the row index of the columnTop */ public int columnTop(int c){ if (grid[0][c]!=null) return -1; int result=rows-1; //start at the bottom index while(grid [result][c]!=null && result>0) result--; return result; } /** * legalMoves * @return ArrayList of open columns */ public ArrayList legalMoves(){ ArrayList moves = new ArrayList(); for(int i=0;i-1) moves.add(i); return moves; } /** * added a peice to the board * @param p the Peice * @return if sucessful */ public boolean add(Piece p){ int r=p.getRow(); int c=p.getCol(); if (r<0 || c<0 ) return false; if (grid[r][c]!=null) return false; grid[r][c]=p; return true; } public void draw(Graphics g, int left, int top){ g.setColor(Color.BLACK); for (int r=0; rresult) result=count; count=1; } } if (count>result) result=count; } return result; } public int vMax(){ int result=0; for (int col=0;colresult) result=count; count=1; } } if (count>result) result=count; } return result; } public Piece getGrid(int hash){ int r=hash/7; int c=hash%7; return grid[r][c]; } public int dMax(){ int result=0; for (int n=1;n<6;n++){ int count=1; for (int i=n;iresult) result=count; count=1; } } if (count>result) result=count; } for (int n=36;n<41;n++){ int count=1; for (int i=n;i>(n-35)*7;i-=6){ Piece left=getGrid(i); Piece right=getGrid(i-6); if (left !=null && right!=null && left.equals(right)){ count++; }else{ if (count>result) result=count; count=1; } } if (count>result) result=count; } for (int n=1;n<6;n++){ int count=1; for (int i=n;i<48-n*7;i+=8){ Piece left=getGrid(i); Piece right=getGrid(i+8); if (left !=null && right!=null && left.equals(right)){ count++; }else{ if (count>result) result=count; count=1; } } if (count>result) result=count; } for (int n=36;n<40;n++){ int count=1; for (int i=n;i>(40-n)*7;i-=8){ Piece left=getGrid(i); Piece right=getGrid(i-8); if (left !=null && right!=null && left.equals(right)){ count++; }else{ if (count>result) result=count; count=1; } } if (count>result) result=count; } return result; } }