Advertisement
Guest User

Untitled

a guest
Oct 25th, 2016
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 29.58 KB | None | 0 0
  1. /*
  2.  * To change this license header, choose License Headers in Project Properties.
  3.  * To change this template file, choose Tools | Templates
  4.  * and open the template in the editor.
  5.  */
  6. package core;
  7.  
  8. import java.awt.Color;
  9. import java.util.ArrayList;
  10. import javax.swing.JFrame;
  11. import javax.swing.JOptionPane;
  12.  
  13. /**
  14.  *
  15.  * @author adang
  16.  */
  17. public class Board
  18. {
  19.     private Disc[][]board;
  20.     private int darkCount;
  21.     private int lightCount;
  22.     private ArrayList<Player> players;
  23.    
  24.     public Board()
  25.     {
  26.         initObjects();
  27.     }
  28.  
  29.     private void initObjects()
  30.     {
  31.         //declare the size of the array
  32.         board = new Disc[Constants.ROWS][Constants.COLUMNS];
  33.        
  34.         //initialize each object in the array
  35.         for(int row = 0; row < Constants.ROWS; row++)
  36.         {
  37.             for(int col = 0; col < Constants.COLUMNS; col++)
  38.             {
  39.                 //something goes here -- calling no argument constructor for class Disc
  40.                 board[row][col] = new Disc();
  41.             }
  42.         }
  43.          
  44.         //initial setup of the board
  45.         board[3][3].setDiscColor(Constants.LIGHT);
  46.         board[3][4].setDiscColor(Constants.DARK);
  47.         board[4][3].setDiscColor(Constants.DARK);
  48.         board[4][4].setDiscColor(Constants.LIGHT);
  49.     }
  50.  
  51.     /**
  52.      * @return the board
  53.      */
  54.     public Disc[][] getBoard()
  55.     {
  56.         return board;
  57.     }
  58.  
  59.     /**
  60.      * @param board the board to set
  61.      */
  62.     public void setBoard(Disc[][] board)
  63.     {
  64.         this.board = board;
  65.     }
  66.    
  67.     public void calculateScore()
  68.     {
  69.         darkCount = 0;
  70.         lightCount = 0;
  71.         for(int row = 0; row < Constants.ROWS; row++)
  72.         {
  73.             for(int col = 0; col <Constants.COLUMNS; col++)
  74.             {
  75.                 if (board[row][col].getDiscColor() == Constants.DARK)
  76.                     darkCount++;
  77.                 else if(board[row][col].getDiscColor() == Constants.LIGHT)
  78.                     lightCount++;
  79.             }
  80.         }
  81.         players.get(Constants.PLAYER_ONE).setScore(darkCount);
  82.         players.get(Constants.PLAYER_TWO).setScore(lightCount);
  83.        
  84.  
  85.     }
  86.    
  87.     public boolean gameOver()
  88.     {
  89.        JFrame frame = new JFrame("Game Over");
  90.        boolean gameIsOver = false;
  91.        int filledSquares = 0;
  92.        int emptySquares = 0; // doesn't affect anything
  93.        int playerOneScore = players.get(Constants.PLAYER_ONE).getScore();
  94.        int playerTwoScore = players.get(Constants.PLAYER_TWO).getScore();
  95.        
  96.        //this checks the board to see if all of the squares are populated
  97.        for(int row = 0; row < Constants.ROWS; row++)
  98.        {
  99.             for(int col = 0; col <Constants.COLUMNS; col++)
  100.             {
  101.                 if (board[row][col].getDiscColor() != Constants.EMPTY)
  102.                     filledSquares++;
  103.                 else if(board[row][col].getDiscColor() == Constants.EMPTY)
  104.                     emptySquares++;
  105.             }
  106.        }
  107.        
  108.        if (filledSquares == Constants.MAX_DISCS)
  109.        {
  110.            if (playerOneScore > playerTwoScore )
  111.            {
  112.                JOptionPane.showMessageDialog(frame, "Game Over! Player One wins!");
  113.                //System.exit(0);
  114.            }
  115.            else if (playerTwoScore > playerOneScore)
  116.            {
  117.                JOptionPane.showMessageDialog(frame, "Game Over! Player Two wins!");
  118.                //System.exit(0);
  119.            }
  120.            else
  121.            {
  122.                JOptionPane.showMessageDialog(frame, "Game Over! It is a tie!");
  123.                //System.exit(0);
  124.            }
  125.            
  126.          
  127.        }
  128.        
  129.        //checks to see if neither player can make a valid move.
  130.        
  131.        boolean anyValidMoves = false;
  132.        Color color;
  133.        
  134.        
  135.        for(int row = 0; row < Constants.ROWS; row++)
  136.        {
  137.             for(int col = 0; col <Constants.COLUMNS; col++)
  138.          
  139.             {
  140.                 color = players.get(Constants.PLAYER_ONE).getDiscColor();
  141.                 if(checkUpValid(row, col, color))
  142.                 {
  143.                    anyValidMoves = true;
  144.                 }
  145.                 if(checkUpLeftValid(row, col, color))
  146.                 {
  147.                    anyValidMoves = true;
  148.                 }
  149.                 if(checkLeftValid(row, col, color))
  150.                 {
  151.                    anyValidMoves = true;
  152.                 }
  153.                 if(checkLeftDownValid(row, col, color))
  154.                 {
  155.                    anyValidMoves = true;
  156.                 }
  157.                 if(checkDownValid(row, col, color))
  158.                 {
  159.                    anyValidMoves = true;
  160.                 }
  161.                 if(checkDownRightValid(row, col, color))
  162.                 {
  163.                    anyValidMoves = true;
  164.                 }
  165.                 if(checkRightValid(row, col, color))
  166.                 {
  167.                    anyValidMoves = true;
  168.                 }
  169.                 if(checkUpRightValid(row, col, color))
  170.                 {
  171.                    anyValidMoves = true;
  172.                 }
  173.             }
  174.         }
  175.        
  176.        if (anyValidMoves == false)
  177.        {
  178.            if (playerOneScore > playerTwoScore )
  179.            {
  180.                JOptionPane.showMessageDialog(frame, "No available moves! Game Over! Player One wins!");
  181.                //System.exit(0);
  182.            }
  183.            else if (playerTwoScore > playerOneScore)
  184.            {
  185.                JOptionPane.showMessageDialog(frame, "No available moves! Game Over! Player Two wins!");
  186.                //System.exit(0);
  187.            }
  188.            else
  189.            {
  190.                JOptionPane.showMessageDialog(frame, "Now available moves! Game Over! It is a tie!");
  191.                //System.exit(0);
  192.            }
  193.          
  194.        }
  195.  
  196.        
  197.        for(int row = 0; row < Constants.ROWS; row++)
  198.        {
  199.             for(int col = 0; col <Constants.COLUMNS; col++)
  200.             {
  201.                 color = players.get(Constants.PLAYER_TWO).getDiscColor();
  202.                
  203.                 if(checkUpValid(row, col, color))
  204.                 {
  205.                    anyValidMoves = true;
  206.                 }
  207.                 if(checkUpLeftValid(row, col, color))
  208.                 {
  209.                    anyValidMoves = true;
  210.                 }
  211.                 if(checkLeftValid(row, col, color))
  212.                 {
  213.                    anyValidMoves = true;
  214.                 }
  215.                 if(checkLeftDownValid(row, col, color))
  216.                 {
  217.                    anyValidMoves = true;
  218.                 }
  219.                 if(checkDownValid(row, col, color))
  220.                 {
  221.                    anyValidMoves = true;
  222.                 }
  223.                 if(checkDownRightValid(row, col, color))
  224.                 {
  225.                    anyValidMoves = true;
  226.                 }
  227.                 if(checkRightValid(row, col, color))
  228.                 {
  229.                    anyValidMoves = true;
  230.                 }
  231.                 if(checkUpRightValid(row, col, color))
  232.                 {
  233.                    anyValidMoves = true;
  234.                 }
  235.             }
  236.         }
  237.        if (anyValidMoves == false)
  238.        {
  239.            if (players.get(Constants.PLAYER_ONE).getScore() > players.get(Constants.PLAYER_TWO).getScore() )
  240.            {
  241.                JOptionPane.showMessageDialog(frame, "Game Over! Player One wins!");
  242.                return gameIsOver;
  243.            }
  244.            else if (players.get(Constants.PLAYER_TWO).getScore() > players.get(Constants.PLAYER_ONE).getScore())
  245.            {
  246.                JOptionPane.showMessageDialog(frame, "Game Over! Player Two wins!");
  247.                return gameIsOver;
  248.            }
  249.            else
  250.            {
  251.                JOptionPane.showMessageDialog(frame, "Game Over! It is a tie!");
  252.                return gameIsOver;
  253.            }
  254.            
  255.          
  256.        }
  257.        
  258.     return gameIsOver;
  259.     }
  260.    
  261.     // color is the current player's disc color
  262.     public boolean isValidMove(int row, int col, Color color)
  263.     {
  264.         boolean valid = false;
  265.        
  266.         // checks all directions to see if discs can be flipped
  267.         if(checkUp(row, col, color))
  268.         {
  269.             valid = true;
  270.         }
  271.         if(checkUpLeft(row, col, color))
  272.         {
  273.             valid = true;
  274.         }
  275.         if(checkLeft(row, col, color))
  276.         {
  277.             valid = true;
  278.         }
  279.         if(checkLeftDown(row, col, color))
  280.         {
  281.             valid = true;
  282.         }
  283.         if(checkDown(row, col, color))
  284.         {
  285.             valid = true;
  286.         }
  287.         if(checkDownRight(row, col, color))
  288.         {
  289.             valid = true;
  290.         }
  291.         if(checkRight(row, col, color))
  292.         {
  293.             valid = true;
  294.         }
  295.         if(checkUpRight(row, col, color))
  296.         {
  297.             valid = true;
  298.         }
  299.        
  300.         if(valid)
  301.         {
  302.             board[row][col].setDiscColor(color);
  303.             calculateScore();
  304.             gameOver();
  305.         }
  306.         return valid;
  307.     }
  308.    
  309.  
  310.    
  311.     // row is the cliked row
  312.     // col is the clicked column
  313.     // color is the current player's disc color
  314.     private boolean checkUp (int row, int col, Color color)
  315.     {
  316.         int flipSquares = 0;
  317.         int checkCol = col;
  318.         int checkRow = row - 1;
  319.         boolean matchFound = false;
  320.         boolean validMove = false;
  321.        
  322.         while (checkRow >= 0 && !matchFound)
  323.         {
  324.             if(board[checkRow][checkCol].getDiscColor() == Constants.EMPTY)
  325.             {
  326.                 validMove = false;
  327.                 return validMove;
  328.  
  329.             }
  330.             else if(board[row][col].getDiscColor() != Constants.EMPTY) //this is to ensure that there isn't already a disc in the grid
  331.             {
  332.                 validMove = false;
  333.             }
  334.             else if (board[checkRow][checkCol].getDiscColor() != color)
  335.             {
  336.                 flipSquares++;
  337.             }
  338.             else
  339.             {
  340.                 matchFound = true;
  341.             }
  342.            
  343.             checkRow--;
  344.         }
  345.         if (matchFound && flipSquares > 0)
  346.         {
  347.             do
  348.             {
  349.                 row--;
  350.                 flipSquares--;
  351.                 board[row][col].setDiscColor(color);
  352.             } while(flipSquares > 0);
  353.            
  354.             validMove = true;
  355.         }
  356.         else
  357.         {
  358.             validMove = false;
  359.         }
  360.        
  361.        
  362.         return validMove;
  363.     }
  364.    
  365.      private boolean checkUpLeft (int row, int col, Color color)
  366.     {
  367.         int flipSquares = 0;
  368.         int checkRow = row - 1;
  369.         int checkCol = col - 1;
  370.         boolean matchFound = false;
  371.         boolean validMove = false;
  372.        
  373.         while (checkRow >= 0 && checkCol >=0 && !matchFound)
  374.         {
  375.             if(board[checkRow][checkCol].getDiscColor() == Constants.EMPTY)
  376.             {
  377.                 validMove = false;
  378.                 return validMove;
  379.  
  380.             }
  381.             else if(board[row][col].getDiscColor() != Constants.EMPTY)
  382.             {
  383.                 validMove = false;
  384.             }
  385.             else if (board[checkRow][checkCol].getDiscColor() != color)
  386.             {
  387.                 flipSquares++;
  388.             }
  389.             else
  390.             {
  391.                 matchFound = true;
  392.             }
  393.            
  394.             checkRow--;
  395.             checkCol--;
  396.         }
  397.         if (matchFound && flipSquares > 0)
  398.         {
  399.             do
  400.             {
  401.                 row--;
  402.                 col--;
  403.                 flipSquares--;
  404.                 board[row][col].setDiscColor(color);
  405.             } while(flipSquares > 0);
  406.            
  407.             validMove = true;
  408.         }
  409.         else
  410.         {
  411.             validMove = false;
  412.         }
  413.         return validMove;
  414.     }
  415.    
  416.     private boolean checkLeft (int row, int col, Color color)
  417.     {
  418.         int flipSquares = 0;
  419.         int checkRow = row;
  420.         int checkCol = col - 1;
  421.         boolean matchFound = false;
  422.         boolean validMove = false;
  423.        
  424.         while (checkCol >=0 && !matchFound)
  425.         {
  426.             if(board[checkRow][checkCol].getDiscColor() == Constants.EMPTY)
  427.             {
  428.                 validMove = false;
  429.                 return validMove;
  430.             }
  431.             else if(board[row][col].getDiscColor() != Constants.EMPTY)
  432.             {
  433.                 validMove = false;
  434.             }
  435.             else if (board[checkRow][checkCol].getDiscColor() != color)
  436.             {
  437.                 flipSquares++;
  438.             }
  439.             else
  440.             {
  441.                 matchFound = true;
  442.             }
  443.             checkCol--;
  444.         }
  445.         if (matchFound && flipSquares > 0)
  446.         {
  447.             do
  448.             {
  449.                 col--;
  450.                 flipSquares--;
  451.                 board[row][col].setDiscColor(color);
  452.             } while(flipSquares > 0);
  453.            
  454.             validMove = true;
  455.         }
  456.         else
  457.         {
  458.             validMove = false;
  459.         }
  460.         return validMove;
  461.     }
  462.    
  463.     private boolean checkLeftDown (int row, int col, Color color)
  464.     {
  465.         int flipSquares = 0;
  466.         int checkRow = row + 1;
  467.         int checkCol = col - 1;
  468.         boolean matchFound = false;
  469.         boolean validMove = false;
  470.        
  471.         while (checkRow < Constants.ROWS && checkCol >=0 && !matchFound)
  472.         {
  473.             if(board[checkRow][checkCol].getDiscColor() == Constants.EMPTY)
  474.             {
  475.                 validMove = false;
  476.                 return validMove;
  477.             }
  478.             else if(board[row][col].getDiscColor() != Constants.EMPTY)
  479.             {
  480.                 validMove = false;
  481.             }
  482.             else if (board[checkRow][checkCol].getDiscColor() != color)
  483.             {
  484.                 flipSquares++;
  485.             }
  486.             else
  487.             {
  488.                 matchFound = true;
  489.             }
  490.             checkCol--;
  491.             checkRow++;
  492.         }
  493.         if (matchFound && flipSquares > 0)
  494.         {
  495.             do
  496.             {
  497.                 col--;
  498.                 row++;
  499.                 flipSquares--;
  500.                 board[row][col].setDiscColor(color);
  501.             } while(flipSquares > 0);
  502.            
  503.             validMove = true;
  504.         }
  505.         else
  506.         {
  507.             validMove = false;
  508.         }
  509.         return validMove;
  510.     }
  511.    
  512.     private boolean checkDown (int row, int col, Color color)
  513.     {
  514.         int flipSquares = 0;
  515.         int checkCol = col;
  516.         int checkRow = row + 1;
  517.         boolean matchFound = false;
  518.         boolean validMove = false;
  519.        
  520.         while (checkRow < Constants.ROWS && !matchFound)
  521.         {
  522.             if(board[checkRow][checkCol].getDiscColor() == Constants.EMPTY)
  523.             {
  524.                 validMove = false;
  525.                 return validMove;
  526.             }
  527.             else if(board[row][col].getDiscColor() != Constants.EMPTY)
  528.             {
  529.                 validMove = false;
  530.             }
  531.             else if (board[checkRow][checkCol].getDiscColor() != color)
  532.             {
  533.                 flipSquares++;
  534.             }
  535.             else
  536.             {
  537.                 matchFound = true;
  538.             }
  539.            
  540.             checkRow++;
  541.         }
  542.         if (matchFound && flipSquares > 0)
  543.         {
  544.             do
  545.             {
  546.                 row++;
  547.                 flipSquares--;
  548.                 board[row][col].setDiscColor(color);
  549.             } while(flipSquares > 0);
  550.             validMove = true;
  551.         }
  552.         else
  553.         {
  554.             validMove = false;
  555.         }
  556.         return validMove;
  557.     }
  558.    
  559.     private boolean checkDownRight (int row, int col, Color color)
  560.     {
  561.         int flipSquares = 0;
  562.         int checkRow = row + 1;
  563.         int checkCol = col + 1;
  564.         boolean matchFound = false;
  565.         boolean validMove = false;
  566.        
  567.         while (checkRow < Constants.ROWS && checkCol < Constants.COLUMNS && !matchFound)
  568.         {
  569.             if(board[checkRow][checkCol].getDiscColor() == Constants.EMPTY)
  570.             {
  571.                 validMove = false;
  572.                 return validMove;
  573.             }
  574.             else if(board[row][col].getDiscColor() != Constants.EMPTY)
  575.             {
  576.                 validMove = false;
  577.             }
  578.             else if (board[checkRow][checkCol].getDiscColor() != color)
  579.             {
  580.                 flipSquares++;
  581.             }
  582.             else
  583.             {
  584.                 matchFound = true;
  585.             }
  586.             checkCol++;
  587.             checkRow++;
  588.         }
  589.         if (matchFound && flipSquares > 0)
  590.         {
  591.             do
  592.             {
  593.                 row++;
  594.                 col++;
  595.                 flipSquares--;
  596.                 board[row][col].setDiscColor(color);
  597.             } while(flipSquares > 0);
  598.            
  599.             validMove = true;
  600.         }
  601.         else
  602.         {
  603.             validMove = false;
  604.         }
  605.         return validMove;
  606.     }
  607.    
  608.     private boolean checkRight (int row, int col, Color color)
  609.     {
  610.         int flipSquares = 0;
  611.         int checkRow = row;
  612.         int checkCol = col + 1;
  613.         boolean matchFound = false;
  614.         boolean validMove = false;
  615.        
  616.         while (checkCol < Constants.COLUMNS && !matchFound)
  617.         {
  618.             if(board[checkRow][checkCol].getDiscColor() == Constants.EMPTY)
  619.             {
  620.                 validMove = false;
  621.                 return validMove;
  622.             }
  623.             else if(board[row][col].getDiscColor() != Constants.EMPTY)
  624.             {
  625.                 validMove = false;
  626.             }
  627.             else if (board[checkRow][checkCol].getDiscColor() != color)
  628.             {
  629.                 flipSquares++;
  630.             }
  631.             else
  632.             {
  633.                 matchFound = true;
  634.             }
  635.             checkCol++;
  636.         }
  637.         if (matchFound && flipSquares > 0)
  638.         {
  639.             do
  640.             {
  641.                 col++;
  642.                 flipSquares--;
  643.                 board[row][col].setDiscColor(color);
  644.             } while(flipSquares > 0);
  645.            
  646.             validMove = true;
  647.         }
  648.         else
  649.         {
  650.             validMove = false;
  651.         }
  652.         return validMove;
  653.     }
  654.      
  655.     private boolean checkUpRight (int row, int col, Color color)
  656.     {
  657.         int flipSquares = 0;
  658.         int checkRow = row - 1;
  659.         int checkCol = col + 1;
  660.         boolean matchFound = false;
  661.         boolean validMove = false;
  662.        
  663.         while (checkRow >= 0 && checkCol < Constants.COLUMNS && !matchFound)
  664.         {
  665.             if(board[checkRow][checkCol].getDiscColor() == Constants.EMPTY)
  666.             {
  667.                 validMove = false;
  668.                
  669.             }
  670.             else if(board[row][col].getDiscColor() != Constants.EMPTY)
  671.             {
  672.                 validMove = false;
  673.             }
  674.             else if (board[checkRow][checkCol].getDiscColor() != color)
  675.             {
  676.                 flipSquares++;
  677.             }
  678.             else
  679.             {
  680.                 matchFound = true;
  681.             }
  682.            
  683.             checkRow--;
  684.             checkCol++;
  685.         }
  686.         if (matchFound && flipSquares > 0)
  687.         {
  688.             do
  689.             {
  690.                 row--;
  691.                 col++;
  692.                 flipSquares--;
  693.                 board[row][col].setDiscColor(color);
  694.             } while(flipSquares > 0);
  695.            
  696.             validMove = true;
  697.         }
  698.         else
  699.         {
  700.             validMove = false;
  701.         }
  702.         return validMove;
  703.     }
  704.    
  705.     // CHECK FOR VALID WITHOUT CHANGING THE BOARD
  706.     /////
  707.    
  708.     //
  709.    
  710.    
  711.    
  712.    
  713.    
  714.     private boolean checkUpValid (int row, int col, Color color)
  715.     {
  716.         int flipSquares = 0;
  717.         int checkCol = col;
  718.         int checkRow = row - 1;
  719.         boolean matchFound = false;
  720.         boolean validMove = false;
  721.        
  722.         while (checkRow >= 0 && !matchFound)
  723.         {
  724.             if(board[checkRow][checkCol].getDiscColor() == Constants.EMPTY)
  725.             {
  726.                 validMove = false;
  727.                 return validMove;
  728.             }
  729.             else if(board[row][col].getDiscColor() != Constants.EMPTY) //this is to ensure that there isn't already a disc in the grid
  730.             {
  731.                 validMove = false;
  732.             }
  733.             else if (board[checkRow][checkCol].getDiscColor() != color)
  734.             {
  735.                 flipSquares++;
  736.             }
  737.             else
  738.             {
  739.                 matchFound = true;
  740.             }
  741.            
  742.             checkRow--;
  743.         }
  744.         if (matchFound && flipSquares > 0)
  745.         {
  746.             validMove = true;
  747.         }
  748.         else
  749.         {
  750.             validMove = false;
  751.         }
  752.         return validMove;
  753.     }
  754.    
  755.      private boolean checkUpLeftValid (int row, int col, Color color)
  756.     {
  757.         int flipSquares = 0;
  758.         int checkRow = row - 1;
  759.         int checkCol = col - 1;
  760.         boolean matchFound = false;
  761.         boolean validMove = false;
  762.        
  763.         while (checkRow >= 0 && checkCol >=0 && !matchFound)
  764.         {
  765.             if(board[checkRow][checkCol].getDiscColor() == Constants.EMPTY)
  766.             {
  767.                 validMove = false;
  768.                 return validMove;
  769.             }
  770.             else if(board[row][col].getDiscColor() != Constants.EMPTY)
  771.             {
  772.                 validMove = false;
  773.                 return validMove;
  774.             }
  775.             else if (board[checkRow][checkCol].getDiscColor() != color)
  776.             {
  777.                 flipSquares++;
  778.             }
  779.             else
  780.             {
  781.                 matchFound = true;
  782.             }
  783.            
  784.             checkRow--;
  785.             checkCol--;
  786.         }
  787.         if (matchFound && flipSquares > 0)
  788.         {
  789.             validMove = true;
  790.         }
  791.         else
  792.         {
  793.             validMove = false;
  794.         }
  795.         return validMove;
  796.     }
  797.    
  798.     private boolean checkLeftValid (int row, int col, Color color)
  799.     {
  800.         int flipSquares = 0;
  801.         int checkRow = row;
  802.         int checkCol = col - 1;
  803.         boolean matchFound = false;
  804.         boolean validMove = false;
  805.        
  806.         while (checkCol >=0 && !matchFound)
  807.         {
  808.             if(board[checkRow][checkCol].getDiscColor() == Constants.EMPTY)
  809.             {
  810.                 validMove = false;
  811.                 return validMove;
  812.             }
  813.             else if(board[row][col].getDiscColor() != Constants.EMPTY)
  814.             {
  815.                 validMove = false;
  816.                 return validMove;
  817.             }
  818.             else if (board[checkRow][checkCol].getDiscColor() != color)
  819.             {
  820.                 flipSquares++;
  821.             }
  822.             else
  823.             {
  824.                 matchFound = true;
  825.             }
  826.             checkCol--;
  827.         }
  828.         if (matchFound && flipSquares > 0)
  829.         {
  830.             validMove = true;
  831.         }
  832.         else
  833.         {
  834.             validMove = false;
  835.         }
  836.         return validMove;
  837.     }
  838.    
  839.     private boolean checkLeftDownValid (int row, int col, Color color)
  840.     {
  841.         int flipSquares = 0;
  842.         int checkRow = row + 1;
  843.         int checkCol = col - 1;
  844.         boolean matchFound = false;
  845.         boolean validMove = false;
  846.        
  847.         while (checkRow < Constants.ROWS && checkCol >=0 && !matchFound)
  848.         {
  849.             if(board[checkRow][checkCol].getDiscColor() == Constants.EMPTY)
  850.             {
  851.                 validMove = false;
  852.                 return validMove;
  853.             }
  854.             else if(board[row][col].getDiscColor() != Constants.EMPTY)
  855.             {
  856.                 validMove = false;
  857.                 return validMove;
  858.             }
  859.             else if (board[checkRow][checkCol].getDiscColor() != color)
  860.             {
  861.                 flipSquares++;
  862.             }
  863.             else
  864.             {
  865.                 matchFound = true;
  866.             }
  867.             checkCol--;
  868.             checkRow++;
  869.         }
  870.         if (matchFound && flipSquares > 0)
  871.         {
  872.             validMove = true;
  873.         }
  874.         else
  875.         {
  876.             validMove = false;
  877.         }
  878.         return validMove;
  879.     }
  880.    
  881.     private boolean checkDownValid (int row, int col, Color color)
  882.     {
  883.         int flipSquares = 0;
  884.         int checkCol = col;
  885.         int checkRow = row + 1;
  886.         boolean matchFound = false;
  887.         boolean validMove = false;
  888.        
  889.         while (checkRow < Constants.ROWS && !matchFound)
  890.         {
  891.             if(board[checkRow][checkCol].getDiscColor() == Constants.EMPTY)
  892.             {
  893.                 validMove = false;
  894.                 return validMove;
  895.             }
  896.             else if(board[row][col].getDiscColor() != Constants.EMPTY)
  897.             {
  898.                 validMove = false;
  899.                 return validMove;
  900.                
  901.             }
  902.             else if (board[checkRow][checkCol].getDiscColor() != color)
  903.             {
  904.                 flipSquares++;
  905.             }
  906.             else
  907.             {
  908.                 matchFound = true;
  909.             }
  910.            
  911.             checkRow++;
  912.         }
  913.         if (matchFound && flipSquares > 0)
  914.         {
  915.             validMove = true;
  916.         }
  917.         else
  918.         {
  919.             validMove = false;
  920.         }
  921.         return validMove;
  922.     }
  923.    
  924.     private boolean checkDownRightValid (int row, int col, Color color)
  925.     {
  926.         int flipSquares = 0;
  927.         int checkRow = row + 1;
  928.         int checkCol = col + 1;
  929.         boolean matchFound = false;
  930.         boolean validMove = false;
  931.        
  932.         while (checkRow < Constants.ROWS && checkCol < Constants.COLUMNS && !matchFound)
  933.         {
  934.             if(board[checkRow][checkCol].getDiscColor() == Constants.EMPTY)
  935.             {
  936.                 validMove = false;
  937.                 return validMove;
  938.             }
  939.             else if(board[row][col].getDiscColor() != Constants.EMPTY)
  940.             {
  941.                 validMove = false;
  942.                 return validMove;
  943.             }
  944.             else if (board[checkRow][checkCol].getDiscColor() != color)
  945.             {
  946.                 flipSquares++;
  947.             }
  948.             else
  949.             {
  950.                 matchFound = true;
  951.             }
  952.             checkCol++;
  953.             checkRow++;
  954.         }
  955.         if (matchFound && flipSquares > 0)
  956.         {
  957.             validMove = true;
  958.         }
  959.         else
  960.         {
  961.             validMove = false;
  962.         }
  963.         return validMove;
  964.     }
  965.    
  966.     private boolean checkRightValid (int row, int col, Color color)
  967.     {
  968.         int flipSquares = 0;
  969.         int checkRow = row;
  970.         int checkCol = col + 1;
  971.         boolean matchFound = false;
  972.         boolean validMove = false;
  973.        
  974.         while (checkCol < Constants.COLUMNS && !matchFound)
  975.         {
  976.             if(board[checkRow][checkCol].getDiscColor() == Constants.EMPTY)
  977.             {
  978.                 validMove = false;
  979.                 return validMove;
  980.             }
  981.             else if(board[row][col].getDiscColor() != Constants.EMPTY)
  982.             {
  983.                 validMove = false;
  984.                 return validMove;
  985.             }
  986.             else if (board[checkRow][checkCol].getDiscColor() != color)
  987.             {
  988.                 flipSquares++;
  989.             }
  990.             else
  991.             {
  992.                 matchFound = true;
  993.             }
  994.             checkCol++;
  995.         }
  996.         if (matchFound && flipSquares > 0)
  997.         {
  998.             validMove = true;
  999.         }
  1000.         else
  1001.         {
  1002.             validMove = false;
  1003.         }
  1004.         return validMove;
  1005.     }
  1006.      
  1007.     private boolean checkUpRightValid (int row, int col, Color color)
  1008.     {
  1009.         int flipSquares = 0;
  1010.         int checkRow = row - 1;
  1011.         int checkCol = col + 1;
  1012.         boolean matchFound = false;
  1013.         boolean validMove = false;
  1014.        
  1015.         while (checkRow >= 0 && checkCol < Constants.COLUMNS && !matchFound)
  1016.         {
  1017.             if(board[checkRow][checkCol].getDiscColor() == Constants.EMPTY)
  1018.             {
  1019.                 validMove = false;
  1020.                 return validMove;
  1021.             }
  1022.             else if(board[row][col].getDiscColor() != Constants.EMPTY)
  1023.             {
  1024.                 validMove = false;
  1025.                 return validMove;
  1026.             }
  1027.             else if (board[checkRow][checkCol].getDiscColor() != color)
  1028.             {
  1029.                 flipSquares++;
  1030.             }
  1031.             else
  1032.             {
  1033.                 matchFound = true;
  1034.             }
  1035.            
  1036.             checkRow--;
  1037.             checkCol++;
  1038.         }
  1039.         if (matchFound && flipSquares > 0)
  1040.         {
  1041.             validMove = true;
  1042.         }
  1043.         else
  1044.         {
  1045.             validMove = false;
  1046.         }
  1047.         return validMove;
  1048.     }
  1049.  
  1050.     /**
  1051.      * @return the darkCount
  1052.      */
  1053.     public int getDarkCount() {
  1054.         return darkCount;
  1055.     }
  1056.  
  1057.     /**
  1058.      * @param darkCount the darkCount to set
  1059.      */
  1060.     public void setDarkCount(int darkCount) {
  1061.         this.darkCount = darkCount;
  1062.     }
  1063.  
  1064.     /**
  1065.      * @return the lightCount
  1066.      */
  1067.     public int getLightCount() {
  1068.         return lightCount;
  1069.     }
  1070.  
  1071.     /**
  1072.      * @param lightCount the lightCount to set
  1073.      */
  1074.     public void setLightCount(int lightCount) {
  1075.         this.lightCount = lightCount;
  1076.     }
  1077.  
  1078.     /**
  1079.      * @return the players
  1080.      */
  1081.     public ArrayList<Player> getPlayers() {
  1082.         return players;
  1083.     }
  1084.  
  1085.     /**
  1086.      * @param players the players to set
  1087.      */
  1088.     public void setPlayers(ArrayList<Player> players) {
  1089.         this.players = players;
  1090.     }
  1091.    
  1092.    
  1093. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement