i have a code that runs but it only lets the player to guess

i have a code that runs, but it only lets the player to guess where the ships are(which is a one player game with one board). is there a way some one can help turn this game into a player vs computer game (with two boards one for player and one for computer) Please help me.

BattleShipGame.java

package battleship;

import java.util.ArrayList;
import java.util.Scanner;

public class BattleshipGame {
   private Ocean ocean;
   private boolean[][] availableSpot;
   private Scanner sc;

   public BattleshipGame() {
       // define a new ocean and a new 2D array to store available coordinates
       ocean = new Ocean();
       availableSpot = new boolean[10][10];
       for (int i = 0; i < 10; i++) {
           for (int j = 0; j < 10; j++){
               availableSpot[i][j] = true;
           }
       }
   }

   /**
   * prints the game menu and info
   * //param select
   */
   public void print(int select){
       String info;
       switch (select) {
       case 1: info = \"Welcome to the World of Battleship!\";
       break;
       case 2: info = \"Enter coordinates to fire: \";
       break;
       case 3: info = \"Shots fired: \"+ocean.getShotsFired()+\", Ships sunk: \"+ocean.getShipsSunk();
       break;
       case 4: info = \"Congratulations! You win!\";
       break;
       case 99: info = \"Invalid input. Please re-enter:\";
       break;
       case 100: info = \"--------------------------------------------\";
       break;
       case 101: info = \"\ ============================================\";
       break;
       default: info = \"Error selection\";
       break;
       }
       System.out.println(info);
   }

   /**
   * check if the input is valid
   * //param input
   * //return boolean
   */
   public boolean checkValidInput(String input){
       ArrayList<String> numList = new ArrayList<String>();
       for (int i=0;i<10;i++){
           numList.add(\"\"+i);
       }
       String[] coordinates = input.split(\" \");
       //returns false if there are not 2 strings
       if (coordinates.length!=2){
           return false;
       }
       //returns false if any of the strings is not a single digit number
       for (String str: coordinates){
           if (numList.contains(str)==false){
               return false;
           }
       }
       //returns false if the coordinates have already been shot at
       int row = Integer.parseInt(coordinates[0]);
       int column = Integer.parseInt(coordinates[1]);
       if (this.availableSpot[row][column]==false){
           return false;
       }
      
       return true;
   }
  
   /**
   * get the coordinates to shoot at from the String input
   * //param input
   * //return int[] coordinates
   */
   public int[] getCoordinates(String input){
       int[] coordinates = new int[2];
       String[] strList = input.split(\" \");
       int row = Integer.parseInt(strList[0]);
       int column = Integer.parseInt(strList[1]);
       coordinates[0] = row;
       coordinates[1] = column;
       return coordinates;
   }

   /**
   * play the battleship game
   */
   public void play(){
       print(101);
       print(1);
       ocean.placeAllShipsRandomly();
       boolean isGameOver = ocean.isGameOver();
       sc = new Scanner(System.in);
      
       //print the ocean and start the game
       ocean.print();
       print(3);
       while (!isGameOver){
           print(2);
           String input = sc.nextLine();
          
           //check if input is valid
           while (!checkValidInput(input)){
               print(99);
               input = sc.nextLine();
           }
          
           //get coordinates and fire
           int[] coordinates = getCoordinates(input);
           int row = coordinates[0];
           int column = coordinates[1];
           ocean.shootAt(row, column);
           availableSpot[row][column] = false;
           isGameOver = ocean.isGameOver();
           ocean.print();
           print(3);
           print(100);
       }
       //print info saying you win
       print(4);
   }

   public static void main(String[] args) {
      
       BattleshipGame battleshipGame = new BattleshipGame();
       battleshipGame.play();
       System.out.println(\"Continue? y/n\");
       Scanner sc = new Scanner(System.in);
       String isPlay = sc.next();
       while (isPlay.equals(\"y\")){
           battleshipGame = new BattleshipGame();
           battleshipGame.play();
           System.out.println(\"Continue? y/n\");
           isPlay = sc.next();
       }
       sc.close();
   }

}

Ocean.java

package battleship;

import java.util.*;

public class Ocean {
   private Ship[][] ships;
   private int shotsFired;
   private int hitCount;
   private int shipsSunk;
   Random random = new Random();
   private boolean[][] shadow;
   private Ship battleship;
   private Ship cruiser1, cruiser2;
   private Ship destroyer1, destroyer2, destroyer3;
   private Ship submarine1, submarine2, submarine3, submarine4;
   private ArrayList<Ship> allShips;
   //private boolean[][] shotLocations;


   public Ocean() {
       // TODO Auto-generated constructor stub
       battleship = new Battleship();
       cruiser1 = new Cruiser();
       cruiser2 = new Cruiser();
       destroyer1 = new Destroyer();
       destroyer2 = new Destroyer();
       destroyer3 = new Destroyer();
       submarine1 = new Submarine();
       submarine2 = new Submarine();
       submarine3 = new Submarine();
       submarine4 = new Submarine();

       allShips = new ArrayList<Ship>();
       allShips.add(battleship);
       allShips.add(cruiser1);
       allShips.add(cruiser2);
       allShips.add(destroyer1);
       allShips.add(destroyer2);
       allShips.add(destroyer3);
       allShips.add(submarine1);
       allShips.add(submarine2);
       allShips.add(submarine3);
       allShips.add(submarine4);


       ships = new Ship[10][10];
       shadow = new boolean[10][10];
       //shotLocations = new boolean[10][10];

       for (int i = 0; i < 10; i++) {
           for (int j = 0; j < 10; j++) {
               this.ships[i][j] = new EmptySea();
               this.ships[i][j].setBowRow(i);
               this.ships[i][j].setBowColumn(j);
               this.ships[i][j].setHorizontal(true);
               this.shadow[i][j] = false;
               //this.shotLocations[i][j] = false;
           }
       }
       this.shotsFired = 0;
       this.hitCount = 0;
       this.shipsSunk = 0;

   }

   public void placeAllShipsRandomly() {
       int row;
       int column;
       int trueOrFalse;
       for (Ship ship: allShips){
           row = (int) (Math.random() * 10);
           column = (int) (Math.random() * 10);
           trueOrFalse = (int) (Math.random() * 2);
           boolean horizontal = false;
           if (trueOrFalse == 1) {
               horizontal = true;
           }
           else {
               horizontal = false;
           }

           while (!ship.okToPlaceShipAt(row, column, horizontal, this)) {
               row = (int) (Math.random() * 10);
               column = (int) (Math.random() * 10);
               trueOrFalse = (int) (Math.random() * 2);
               if (trueOrFalse == 1) {
                   horizontal = true;
               }
               else {
                   horizontal = false;
               }
           }
           ship.placeShipAt(row, column, horizontal, this);

       }
   }

   public boolean isOccupied(int row, int column) {
       if (this.ships [row][column].getShipType().equals(\"empty\")) {
           return false;
       }
       return true;
   }

   public boolean shootAt(int row, int column) {
       int hit = 0;
       int sunkNum = 0;
       if (isOccupied(row, column) && !ships[row][column].isSunk()) {
           this.hitCount += 1;
           hit = 1;
       }
       this.shotsFired += 1;
       //this.shotLocations[row][column] = true;
       this.ships[row][column].shootAt(row, column);
       for (Ship ship: this.allShips) {
           if (ship.isSunk()){
               sunkNum += 1;
           }
       }
       this.shipsSunk = sunkNum;
       if (hit == 1) {
           return true;
       }
       return false;
   }

   public int getShotsFired() {
       return this.shotsFired;
   }

   public int getHitCount() {
       return this.hitCount;
   }

   public int getShipsSunk() {
       return this.shipsSunk;
   }

   public boolean isGameOver() {
       if (this.shipsSunk == 10) {
           return true;
       }
       return false;
   }

   public Ship[][] getShipArray() {
       return this.ships;
   }

   public void print() {
       String s = \" \";
       int i;
       int j;
       for (i = -1; i < 10; i++) {
           for (j = -1; j < 10; j++) {
               if (i == -1){              
                   if (j > -1){
                       s += \" \" + j;
                   }
               }
               else if (j == -1) {
                   s += i + \" \";
               }
               else if (!this.isHit(i, j)) {
                   s += \".\" + \" \";
               }
               else {
                   s += ships[i][j].toString() + \" \";
               }
           }
           s += \"\ \";
       }
       System.out.println(s);
   }


   ////////////////////////////////////////////////additional helper functions//////////////////////////
   public boolean[][] getShadow() {
       return this.shadow;
   }

   /**
   * when put in one ship, shadow all its adjacent sea. Then the okToPrint function can make judgment and forbid ships to place on the shadow.
   */
   public void setShadow() {
       for (int i = 0; i < 10 ; i++){
           for (int j = 0; j < 10; j++) {
               if (this.isOccupied(i,j)) {
                   for (int k = -1; k < 2; k++) {
                       for (int l = -1; l <2; l++ ) {
                           if ((i+k>=0) && (i+k<=9) && (j+l>=0) && (j+l <=9)) {
                               shadow[i+k][j+l] = true;
                           }
                       }
                   }
               }
           }
       }
   }

   /**
   * setter for ship class to place ship in the ocean
   * //param row
   * //param column
   * //param ship
   */
   public void placeShip(int row, int column, Ship ship) {
       this.ships[row][column] = ship;
       //update the shadow(places which don\'t allow ship to be placed)
       this.setShadow();
   }

   /**
   * all ships list getter for testing
   * //return
   */
   public ArrayList<Ship> getAllShips() {
       return this.allShips;
   }

   public void printTest() {
       String s = \" \";
       int i;
       int j;
       for (i = -1; i < 10; i++) {
           for (j = -1; j < 10; j++) {
               if (i == -1){              
                   if (j > -1){
                       s += \" \" + j;
                   }
               }
               else if (j == -1) {
                   s += i + \" \";
               }
               else if (!isOccupied(i,j)) {
                   s += \".\" + \" \";
               }
               else {
                   s += ships[i][j].toString() + \" \";
               }
           }
           s += \"\ \";
       }
       System.out.println(s);
   }
  
   public boolean isHit(int row, int column) {
       Ship ship = this.ships[row][column];
       int bowRow = ship.getBowRow();
       int bowColumn = ship.getBowColumn();
       //System.out.println(row + \" \" + column + \" \" + ship + \" \" + bowRow + \" \" + bowColumn + ship.isHorizontal());
      
       if (ship.getShipType().equals(\"empty\")) {
           return (ship.getHitArray()[0]);
       }
       else if (ship.isHorizontal()) {
           if (ship.getHitArray()[column - bowColumn]) {
               return true;
           }
           return false;
       }
       else {
           if (ship.getHitArray()[row - bowRow]) {
               return true;
           }
           return false;
       }
   }

}

Ship.java

package battleship;

public abstract class Ship {
   private int bowRow;
   private int bowColumn;
   protected int length;
   private boolean horizontal;
   protected boolean[] hit = new boolean[4];

   public Ship() {
       // TODO Auto-generated constructor stub
       super();
   }

   /**
   * returns bowRow
   * //return bowRow
   */
   public int getBowRow() {
       return bowRow;
   }

   public void setBowRow(int bowRow) {
       this.bowRow = bowRow;
   }

   /**
   * returns bowColumn
   * //return bowColumn
   */
   public int getBowColumn() {
       return bowColumn;
   }

   /**
   * sets the value of bowColumn
   * //param bowColumn
   */
   public void setBowColumn(int bowColumn) {
       this.bowColumn = bowColumn;
   }
  
   /**
   * returns the length of this particular ship
   * //return length of the ship
   */
   public int getLength() {
       return length;
   }

   /**
   * returns horizontal as boolean
   * //return isHorizontal
   */
   public boolean isHorizontal() {
       return horizontal;
   }

   /**
   * sets the value of instance variable horizontal
   * //param horizontal
   */
   public void setHorizontal(boolean horizontal) {
       this.horizontal = horizontal;
   }


   abstract String getShipType();

   /**
   * returns true if it is okay to put a ship of certain length with its bow in this location, with the given orientation
   * returns false otherwise
   * //param row
   * //param column
   * //param horizontal
   * //param ocean
   * //return okToPlaceShipAt as boolean
   */
   public boolean okToPlaceShipAt(int row, int column, boolean horizontal, Ocean ocean){
       boolean okToPlace = true;
       boolean[][] shadows = ocean.getShadow();
       if (horizontal){
           for (int i=0; i<this.getLength();i++){
               if (column+i>9){okToPlace = false;}
               else if (shadows[row][column+i]){okToPlace = false;}
           }
       }
       else{
           for (int i=0; i<this.getLength();i++){
               if (row+i>9){okToPlace = false;}
               else if (shadows[row+i][column]){okToPlace = false;}
           }
       }
       return okToPlace;
   }

   /**
   * puts the ship on a certain spot in the ocean
   * //param row
   * //param column
   * //param horizontal
   * //param ocean
   */
   public void placeShipAt(int row, int column, boolean horizontal, Ocean ocean){
       this.setHorizontal(horizontal);
       this.setBowRow(row);
       this.setBowColumn(column);
       if (!this.isHorizontal()){
           for (int i=0;i<this.getLength();i++){
               ocean.placeShip(row+i, column, this);
           }
       }
       else{
           for (int i=0;i<this.getLength();i++){
               ocean.placeShip(row, column+i, this);
           }
       }
   }


   /**
   * returns true if the ship is hit and not sunk. marks that part of the ship as \"hit\"
   * returns false otherwise
   * //param row
   * //param column
   * //return shootAt as boolean
   */
   public boolean shootAt(int row, int column){
  
       if (this.isHorizontal()){
           for (int i=0; i<this.getLength();i++){
               if ((this.getBowRow() == row)&&(this.getBowColumn()+i==column)){
                   this.hit[i] = true;
                   return true;
               }
           }
       }
       else{
           for (int i=0; i<this.getLength();i++){
               if ((this.getBowRow()+i == row)&&(this.getBowColumn()==column)){
                   this.hit[i] = true;
                   return true;
               }
           }
       }
       return false;
   }

   /**
   * returns the boolean[] that shows which part of the ship is hit
   * //return this.hit
   */
   public boolean[] getHitArray(){
       return this.hit;
   }

   /**
   * returns true if every part of the ship has been hit
   * //return isSunk
   */
   public boolean isSunk(){
       boolean isSunk = true;
       for (int i=0;i<this.getLength();i++){
           isSunk = isSunk&&this.hit[i];
       }
       return isSunk;
   }
  
   /**
   * returns a single-char String to be used in the class \'Ocean\'
   * \"x\" if sunk, \"S\" if not sunk
   */
   //Override
   public String toString(){
       if (this.isSunk()){
           return \"x\";
       }
       return \"S\";
   }
  
  
}

Battleship.java

package battleship;

public class Battleship extends Ship{

   public Battleship() {
       // TODO Auto-generated constructor stub
       super();
       this.length = 4;
   }
  
   //Override
   public String getShipType(){
       return \"battleship\";
   }
  

}

Cruiser.java

package battleship;

public class Cruiser extends Ship{

   public Cruiser() {
       // TODO Auto-generated constructor stub
       super();
       this.length = 3;
   }
  
   //Override
   public String getShipType(){
       return \"cruiser\";
   }
  

}

Destroyer.java

package battleship;

public class Destroyer extends Ship{

   public Destroyer() {
       // TODO Auto-generated constructor stub
       this.length = 2;
   }
  
   //Override
   public String getShipType(){
       return \"destroyer\";
   }

}

Submarine.java

package battleship;

public class Submarine extends Ship{

   public Submarine() {
       // TODO Auto-generated constructor stub
       this.length = 1;
   }
  
   //Override
   public String getShipType(){
       return \"submarine\";
   }

}

EmptySea.java

package battleship;

public class EmptySea extends Ship{

   public EmptySea() {
       // TODO Auto-generated constructor stub
       super();
       this.length = 1;
   }
  
   //Override
   public boolean shootAt(int row, int column){
       this.hit[0] = true;
       return false;
   }
  
   //Override
   public boolean isSunk(){
       return false;
   }
  
   //Override
   public String toString(){
       return \"-\";
   }
  
   //Override
   String getShipType(){
       return \"empty\";
   }


}

Solution

import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; import java.io.*; import java.lang.Integer; import java.util.Vector; import java.net.*; public class Battleship extends JFrame { private static JButton ok = new JButton(\"OK\"),//closes stats menu done =new JButton(\"Done\");//closes options menu private static JFrame statistics= new JFrame(\"Statistics\"),//holds stats options=new JFrame(\"Options\");//holds opts private static JLabel data,//used for stats menu title;//used for options menu private static JPanel stats=new JPanel(),//used for stats menu opts,//used for options menu inputpanel;//for manually inputting ships private static Container b,c,d;//board and input panel private JPanel input;//input bar private static JMenuItem m,pvp,pvc,cvc;//menu items private static String[] cletters = {\" \",\"A\",\"B\",\"C\",\"D\",\"E\",\"F\",\"G\",\"H\",\"I\",\"J\"}, //array of letters used for combo boxes cnumbers = {\" \",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\"}, //array of numbers used for combo boxes ships = {\"Carrier\",\"Battleship\",\"Submarine\",\"Destroyer\", \"Patrol Boat\"},//strings used for ship combo box direction = {\"Horizontal\",\"Vertical\"},//directions level={\"Normal\", \"Ridiculously Hard\"}, layout={\"Manual\",\"Automatic\"}, colors={\"Cyan\", \"Green\", \"Yellow\", \"Magenta\", \"Pink\", \"Red\", \"White\"}, first={\"Player 1\", \"Player 2\", \"Random\"};//used for options private JComboBox cshi = new JComboBox(ships),//ships cdir = new JComboBox(direction);//directions private static JComboBox aiLevel=new JComboBox(level), shipLayout=new JComboBox(layout), shipColor=new JComboBox(colors), playsFirst=new JComboBox(first);//used //for options menu private JTextField mbar = new JTextField();//message bar private static int enemy=1, i,j,//counters length=5, you=0, prevcolor=0,//index of previous color prevFirst=0, prevLayout=0, prevLevel=0,//tracks changes in corresponding comboboxes ready=0, sindex=0,//stores index of array dindex=0;//direction private static Player players[]=new Player[2]; private static JButton deploy=new JButton(\"DEPLOY\"); private static int w=0,a=0,s=0,t=0,e=0;//counters to track the use of all ships private static String[][] shiphit=new String[10][10]; private static String user,user2; private static Color[] color={Color.cyan,Color.green,Color.yellow,Color.magenta, Color.pink, Color.red, Color.white}; private static Object selectedValue=\" \", gametype; private static BattleshipClient me; private static boolean gameover=false; public Battleship() { setTitle(\"Battleship\"); setDefaultCloseOperation(EXIT_ON_CLOSE); setJMenuBar(createMenuBar()); setResizable(false); //gets user to input name user=JOptionPane.showInputDialog(\"Enter your name.\"); int dummy=0; while (((user==null)||(user.equals(\"\")))&&(dummy<3)) { user=JOptionPane.showInputDialog(\"You have to input something.\"); if ((user!=null)&&(!user.equals(\"\"))) dummy=4; else dummy++; } if (dummy==3) { JOptionPane.showMessageDialog(null,\"Since you\'re having trouble inp\" +\"utting your name, I\'ll just call you stupid.\",\"\",JOptionPane.INFORMATION_MESSAGE); user=\"Stupid\"; } players[you]=new Player (user); players[enemy]=new Player (\"Computer\"); b=getContentPane(); b.add(setBoard(you),BorderLayout.CENTER); c=getContentPane(); d = getContentPane(); inputpanel=shipinput(); d.add(inputpanel,BorderLayout.NORTH); pack(); setVisible(true); } public static boolean getGameOver() { return gameover; } public static void setGameOver(boolean b) { gameover=b; } //method to determine who plays first public void whoGoesFirst() { int x=0; if (playsFirst.getSelectedIndex()!=2) { if (playsFirst.getSelectedIndex()!=you) flipYou(); players[playsFirst.getSelectedIndex()].getTimer().start(); x=playsFirst.getSelectedIndex(); } else { int rand=(int)(Math.random()*2); JOptionPane.showMessageDialog(null,players[rand].getUser()+\" will \" +\"go first.\",\"\",JOptionPane.PLAIN_MESSAGE); if (rand!=you) flipYou(); players[rand].getTimer().start(); x=rand; } if ((!players[x].getUser().equals(\"Computer\"))||(!players[x].getUser().equals(\"CPU1\"))||(!players[x].getUser().equals(\"CPU2\"))) players[x].setMove(true); } //returns ship color, as selected by the user public static Color getColor() { return (color[shipColor.getSelectedIndex()]); } //asks if two players are playing on the same computer or over the web public static boolean isLocal() { if ((gametype==pvp)&&(selectedValue.equals(\"Local\"))) return true; else return false; } public static void flipYou() { if (you==1) { you=0; enemy=1; } else { you=1; enemy=0; } } //determines whether or not is shipLayout is set to automatic public static boolean isAutoSet() { if (shipLayout.getSelectedIndex()==0) return false; else return true; } //variable that determines whether or not a carrier has been placed public static int getW() { return w; } //variable that determines whether or not a battleship has been placed public static int getA() { return a; } //variable that determines whether or not a submarine has been placed public static int getS() { return s; } //variable that determines whether or not a destroyer has been placed public static int getT() { return t; } //variable that determines whether or not a patrol boat has been placed public static int getE() { return e; } public static int getReady() { return ready; } public static JFrame getStatistics() { return statistics; } public static void setData(JLabel x) { data=x; } public static JLabel getData() { return data; } public static JPanel getStats() { return stats; } public static void setDeploy(boolean k) { deploy.setEnabled(k); } public static Player getPlayers(int x) { return players[x]; } public static String getDirection(int i) { return direction[i]; } public static String getCletters(int i) { return cletters[i]; } public static String getShips(int i) { return ships[i]; } public static String getCnumbers(int i) { return cnumbers[i]; } public static int getSIndex() { return sindex; } public static int getDIndex() { return dindex; } public static int getYou() { return you; } public static int getEnemy() { return enemy; } public static void setYou(int x) { you=x; } public static void setEnemy(int x) { enemy=x; } //creates Game menu and submenus public JMenuBar createMenuBar() { JMenu menu;//menu // create the menu bar JMenuBar menuBar = new JMenuBar(); // build the Game menu menu = new JMenu(\"Game\"); menuBar.add(menu); m = new JMenu(\"New Game\"); menu.add(m); //submenu of New Game GameListener stuff = new GameListener(); pvp = new JMenuItem(\"Player vs. Player\"); pvp.addActionListener(stuff); m.add(pvp); pvc = new JMenuItem(\"Player vs. Computer\"); pvc.addActionListener(stuff); m.add(pvc); cvc = new JMenuItem(\"Computer vs. Computer\"); cvc.addActionListener(stuff); m.add(cvc); m = new JMenuItem(\"Rules\"); m.addActionListener(new RulesListener()); menu.add(m); m = new JMenuItem(\"Statistics\"); m.addActionListener(new StatsListener()); menu.add(m); m = new JMenuItem(\"Options\"); m.addActionListener(new OptionsListener()); menu.add(m); m = new JMenuItem(\"Exit\"); m.addActionListener(new ExitListener()); menu.add(m); return menuBar; } //creates panels that used to place ships public JPanel shipinput() { input= new JPanel(); mbar.setText(\"Select a ship, its front position and direction.\"); mbar.setFont(new Font(\"Courier New\", Font.BOLD, 14)); mbar.setEditable(false); //input.add(mbar); cshi.setSelectedIndex(0); cshi.addActionListener(new ShipsListener()); TitledBorder title;//used for titles around combo boxes title = BorderFactory.createTitledBorder(\"Ships\"); cshi.setBorder(title); input.add(cshi); cdir.setSelectedIndex(0); cdir.addActionListener(new DirectListener()); input.add(cdir); title = BorderFactory.createTitledBorder(\"Direction\"); cdir.setBorder(title); deploy.setEnabled(false); deploy.addActionListener(new DeployListener()); input.add(deploy); return input; } //creates board for manual ship placement public JPanel setBoard(int n) { players[n].setMyBoard(new JPanel(new GridLayout(11,11)));//panel to store board JTextField k; for (i=0;i<11;i++) { for (j=0;j<11;j++) { if ((j!=0)&&(i!=0)) { players[n].getBboard(i-1,j-1).addActionListener(new BoardListener()); players[n].getMyBoard().add(players[n].getBboard(i-1,j-1)); } if (i==0) { if (j!=0) { //used to display row of numbers k= new JTextField(Battleship.getCnumbers(j)); k.setEditable(false); k.setHorizontalAlignment((int)JFrame.CENTER_ALIGNMENT); } else { //used to display column of numbers k= new JTextField(); k.setEditable(false); } players[n].getMyBoard().add(k); } else if (j==0) { k= new JTextField(Battleship.getCletters(i)); k.setEditable(false); k.setHorizontalAlignment((int)JFrame.CENTER_ALIGNMENT); players[n].getMyBoard().add(k); } } } return players[n].getMyBoard(); } //creates board and automatically places ship public JPanel autoBoard(int u,int t) { players[u].setGBoard(new JPanel(new GridLayout(11,11)));//panel to store board JTextField k; if (!players[u].getUser().equals(\"Unknown\")) for (i=0;i<5;i++) { players[u].setBoats(i,players[u].getBoats(i).compinput(i,u)); } for (i=0;i<11;i++) { for (j=0;j<11;j++) { if ((j!=0)&&(i!=0)) { if ((players[u].getUser().equals(\"Computer\"))||(isLocal())) { players[u].getBboard(i-1,j-1).addActionListener(new AttackListener()); } else if ((players[t].getUser().equals(\"Computer\"))||(players[t].getUser().equals(\"CPU1\"))||(players[t].getUser().equals(\"CPU2\"))||(players[t].getUser().equals(\"Unknown\"))) { if (players[u].getHitOrMiss(i-1,j-1)) players[u].setBboard(i-1,j-1,getColor()); } else { players[u].getBboard(i-1,j-1).addActionListener(new InternetListener()); } players[u].getGBoard().add(players[u].getBboard(i-1,j-1)); } if (i==0) { if (j!=0) { //used to display row of numbers k= new JTextField(Battleship.getCnumbers(j)); k.setEditable(false); k.setHorizontalAlignment((int)JFrame.CENTER_ALIGNMENT); } else { //used to display column of numbers k= new JTextField(); k.setEditable(false); } players[u].getGBoard().add(k); } else if (j==0) { k= new JTextField(Battleship.getCletters(i)); k.setEditable(false); k.setHorizontalAlignment((int)JFrame.CENTER_ALIGNMENT); players[u].getGBoard().add(k); } } } return players[u].getGBoard(); } //Listener for combo boxes used to layout ships private class ShipsListener implements ActionListener { public void actionPerformed(ActionEvent v) { sindex=cshi.getSelectedIndex(); if (players[you].getBoats(sindex)!=null) cdir.setSelectedIndex(players[you].getBoats(sindex).getDirect()); switch (sindex) { case 0: length=5; break; case 1: length=4; break; case 2: length=3; break; case 3: length=3; break; case 4: length=2; break; } if (players[you].getBoats(sindex) != null) { Ship boat=new Ship(ships[sindex],players[you].getBoats(sindex).getDirect() ,length,players[you].getBoats(sindex).getX(),players[you].getBoats(sindex).getY()); players[you].getBoats(sindex).clearship(); players[you].setBoats(sindex,boat); players[you].getBoats(sindex).placeship(); } } } //Listener for the Direction combo box private class DirectListener implements ActionListener { public void actionPerformed(ActionEvent v) { dindex = cdir.getSelectedIndex(); if (players[you].getBoats(sindex) != null) { Ship boat=new Ship(ships[sindex],dindex,players[you].getBoats(sindex).getLength(), players[you].getBoats(sindex).getX(),players[you].getBoats(sindex).getY()); players[you].getBoats(sindex).clearship(); players[you].setBoats(sindex,boat); players[you].getBoats(sindex).placeship(); } } } //Listener for the buttons on the board private class BoardListener implements ActionListener { public void actionPerformed(ActionEvent v) { if (ready==0) { if (players[you].getBoats(sindex)!=null) players[you].getBoats(sindex).clearship(); Object source = v.getSource(); outer: for (i=0;i<10;i++) { for (j=0;j<10;j++) { if (source==players[you].getBboard(i,j)) { switch (sindex) { case 0: { if (w==0) w++; } break; case 1: { if (a==0) a++; } break; case 2: { if (s==0) s++; } break; case 3: { if (t==0) t++; } break; case 4: { if (e==0) e++; } break; } players[you].setBoats(sindex,new Ship(ships[sindex],dindex,length,i,j)); break outer; } } } players[you].getBoats(sindex).placeship(); } } } //creates a panel that tells whose board is which private JPanel whoseBoard() { JPanel panel=new JPanel(new BorderLayout()); panel.add(new JLabel(players[you].getUser()+\"\'s Board\",SwingConstants.LEFT),BorderLayout.WEST); panel.add(new JLabel(players[enemy].getUser()+\"\'s Board\",SwingConstants.RIGHT),BorderLayout.EAST); return panel; } //Listener for exit choice on Game menu private class ExitListener implements ActionListener { public void actionPerformed(ActionEvent e) { int r= JOptionPane.showConfirmDialog(null,\"Are you sure you would l\" +\"ike to exit Battleship?\", \"Exit?\", JOptionPane.YES_NO_OPTION); if (r==0) System.exit(0); } } //listener for New Game submenu private class GameListener implements ActionListener { public void actionPerformed(ActionEvent e) { int q= JOptionPane.showConfirmDialog(null,\"Are you sure you would l\" +\"ike to start a new game?\", \"New Game?\", JOptionPane.YES_NO_OPTION); if (q==0) { //resets variables b.removeAll(); c.removeAll(); d.removeAll(); you=0; enemy=1; ready=0; if (players[you].getTimer()!=null) if (players[you].getTimer().isRunning()) players[you].getTimer().stop(); if (players[enemy].getTimer()!=null) if (players[enemy].getTimer().isRunning()) players[enemy].getTimer().stop(); gametype = e.getSource(); if (gametype==pvp) { if (!selectedValue.equals(\"no server\")) { String[] possibleValues = { \"Local\", \"Online\"}; selectedValue = JOptionPane.showInputDialog(null, \"Choose one\", \"Input\", JOptionPane.INFORMATION_MESSAGE, null, possibleValues, possibleValues[0]); } if (!players[you].getUser().equals(\"CPU1\")) { if (players[you].getUser().equals(\"Stupid\")) { int w=JOptionPane.showConfirmDialog(null,\"Would you\" +\" like to try inputting your name again?\",\"\", JOptionPane.YES_NO_OPTION); if (w==JOptionPane.YES_OPTION) { user=JOptionPane.showInputDialog(\"Enter your name.\"); int dummy=0; while (((user==null)||(user.equals(\"\")))&&(dummy<3)) { user=JOptionPane.showInputDialog(\"You have to input something.\"); if ((user!=null)&&(!user.equals(\"\"))) dummy=4; else dummy++; } if (dummy==3) { JOptionPane.showMessageDialog(null,\"Still a\" +\"cting stupid. Oh well, we\'ll run with it.\" ,\"\",JOptionPane.INFORMATION_MESSAGE); user=\"Stupid\"; } else JOptionPane.showMessageDialog(null,\"That wasn\'t\" +\" so hard now, was it?\",\"YEAH!\", JOptionPane.INFORMATION_MESSAGE); } } players[you]=new Player (players[you].getUser()); } else players[you]=new Player (user); if (selectedValue.equals(\"Online\")) { players[enemy]=new Player (\"Unknown\"); if (!isAutoSet()) { b.add(setBoard(you),BorderLayout.CENTER); deploy.setEnabled(false); d.add(inputpanel,BorderLayout.NORTH); } else { b.add(autoBoard(you,enemy),BorderLayout.WEST); c.add(autoBoard(enemy,you),BorderLayout.EAST); ready=1; } } else { //gets user to input name if((players[enemy].getUser().equals(\"Computer\"))||(players[enemy].getUser().equals(\"CPU2\"))||(players[enemy].getUser().equals(\"Unknown\"))) { user2=JOptionPane.showInputDialog(\"Enter your name.\"); while ((user2==null)||(user2.equals(\"\"))) { user2=JOptionPane.showInputDialog(\"You have to input something.\"); } } else user2=players[enemy].getUser(); players[enemy]=new Player (user2); b.add(autoBoard(you,enemy),BorderLayout.WEST); c.add(autoBoard(enemy,you),BorderLayout.EAST); d.add(whoseBoard(),BorderLayout.NORTH); whoGoesFirst(); ready=1; } //ready=1; } else if (gametype==pvc)//Player vs Computer { if (!players[you].getUser().equals(\"CPU1\")) { if (players[you].getUser().equals(\"Stupid\")) { int w=JOptionPane.showConfirmDialog(null,\"Would you\" +\" like to try inputting your name again?\",\"\", JOptionPane.YES_NO_OPTION); if (w==JOptionPane.YES_OPTION) { user=JOptionPane.showInputDialog(\"Enter your name.\"); int dummy=0; while (((user==null)||(user.equals(\"\")))&&(dummy<3)) { user=JOptionPane.showInputDialog(\"You have to input something.\"); if ((user!=null)&&(!user.equals(\"\"))) dummy=4; else dummy++; } if (dummy==3) { JOptionPane.showMessageDialog(null,\"Still a\" +\"cting stupid. Oh well, we\'ll run with it.\" ,\"\",JOptionPane.INFORMATION_MESSAGE); user=\"Stupid\"; } else JOptionPane.showMessageDialog(null,\"That wasn\'t\" +\" so hard now, was it?\",\"YEAH!\", JOptionPane.INFORMATION_MESSAGE); } } players[you]=new Player (players[you].getUser()); } else players[you]=new Player (user); players[enemy]=new Player (\"Computer\"); if (!isAutoSet()) { b.add(setBoard(you),BorderLayout.CENTER); deploy.setEnabled(false); d.add(inputpanel,BorderLayout.NORTH); } else { b.add(autoBoard(you,enemy),BorderLayout.WEST); c.add(autoBoard(enemy,you),BorderLayout.EAST); whoGoesFirst(); } } else if (gametype==cvc)//Computer vs Computer { mbar.setText(\"Battleship Demo\"); mbar.setEditable(false); d.add(mbar,BorderLayout.NORTH); players[you]=new Player (\"CPU1\"); players[enemy]=new Player (\"CPU2\"); b.add(autoBoard(you,enemy),BorderLayout.WEST); c.add(autoBoard(enemy,you),BorderLayout.EAST); whoGoesFirst(); } pack(); repaint(); } } } //Listener for Rules menu private class RulesListener implements ActionListener { public void actionPerformed(ActionEvent e) { } } //Listener for ok button in statistics menu private class OkListener implements ActionListener { public void actionPerformed(ActionEvent e) { statistics.dispose(); } } //Listener for Stats menu private class StatsListener implements ActionListener { // public void setup() { stats=new JPanel(); ok.addActionListener(new OkListener()); statistics.setSize(300,300); statistics.setResizable(false); statistics.getContentPane().add(ok,BorderLayout.SOUTH); //statistics.setLocation(700,200); } public void actionPerformed(ActionEvent e) { if (data==null) setup(); else stats.removeAll(); stats.setLayout(new GridLayout(6,3)); data=new JLabel(\"\"); stats.add(data); data=new JLabel(\"Player 1\",SwingConstants.CENTER); stats.add(data); data=new JLabel(\"Player 2\",SwingConstants.CENTER); stats.add(data); data=new JLabel(\"Names\"); stats.add(data); if (you == 0) { data=new JLabel(players[you].getUser(),SwingConstants.CENTER); stats.add(data); data=new JLabel(players[enemy].getUser(),SwingConstants.CENTER); stats.add(data); data=new JLabel(\"Shots Taken\"); stats.add(data); data=new JLabel(Integer.toString(players[you].getShots()),SwingConstants.CENTER); stats.add(data); data=new JLabel(Integer.toString(players[enemy].getShots()),SwingConstants.CENTER); stats.add(data); data=new JLabel(\"Hits\"); stats.add(data); data=new JLabel(Integer.toString(players[you].getHits()),SwingConstants.CENTER); stats.add(data); data=new JLabel(Integer.toString(players[enemy].getHits()),SwingConstants.CENTER); stats.add(data); data=new JLabel(\"Shot Accuracy\"); stats.add(data); data=new JLabel(players[you].getAcc(),SwingConstants.CENTER); stats.add(data); data=new JLabel(players[enemy].getAcc(),SwingConstants.CENTER); stats.add(data); data=new JLabel(\"Ships Left\"); stats.add(data); data=new JLabel(Integer.toString(players[you].getShipsLeft()),SwingConstants.CENTER); stats.add(data); data=new JLabel(Integer.toString(players[enemy].getShipsLeft()),SwingConstants.CENTER); stats.add(data); } else { data=new JLabel(players[enemy].getUser(),SwingConstants.CENTER); stats.add(data); data=new JLabel(players[you].getUser(),SwingConstants.CENTER); stats.add(data); data=new JLabel(\"Shots Taken\"); stats.add(data); data=new JLabel(Integer.toString(players[enemy].getShots()),SwingConstants.CENTER); stats.add(data); data=new JLabel(Integer.toString(players[you].getShots()),SwingConstants.CENTER); stats.add(data); data=new JLabel(\"Hits\"); stats.add(data); data=new JLabel(Integer.toString(players[enemy].getHits()),SwingConstants.CENTER); stats.add(data); data=new JLabel(Integer.toString(players[you].getHits()),SwingConstants.CENTER); stats.add(data); data=new JLabel(\"Shot Accuracy\"); stats.add(data); data=new JLabel(players[enemy].getAcc(),SwingConstants.CENTER); stats.add(data); data=new JLabel(players[you].getAcc(),SwingConstants.CENTER); stats.add(data); data=new JLabel(\"Ships Left\"); stats.add(data); data=new JLabel(Integer.toString(players[enemy].getShipsLeft()),SwingConstants.CENTER); stats.add(data); data=new JLabel(Integer.toString(players[you].getShipsLeft()),SwingConstants.CENTER); stats.add(data); } statistics.getContentPane().add(stats); statistics.pack(); statistics.setVisible(true); } } //Listener for Deploy Button private class DeployListener implements ActionListener { public void actionPerformed(ActionEvent v) { int r= JOptionPane.showConfirmDialog(null,\"Are you sure you would l\" +\"ike to deploy your ships?\", \"Deploy Ships?\", JOptionPane.YES_NO_OPTION); if (r==0) { w=0; a=0; s=0; t=0; e=0; d.remove(input); b.add(players[you].getMyBoard(),BorderLayout.WEST); ready=1; c.add(autoBoard(enemy,you),BorderLayout.EAST); d.add(new JPanel(),BorderLayout.CENTER); if (!selectedValue.equals(\"Online\")) whoGoesFirst(); pack(); repaint(); } } } //Listener for Options menu public class OptionsListener implements ActionListener { public void actionPerformed(ActionEvent e) { if (opts==null) setup(); else options.setVisible(true); } public void setup() { opts=new JPanel(new GridLayout(4,2)); title=new JLabel(\"Computer AI\"); opts.add(title); aiLevel.setSelectedIndex(0); opts.add(aiLevel); title=new JLabel(\"Ship Layout\"); opts.add(title); shipLayout.setSelectedIndex(0); opts.add(shipLayout); title=new JLabel(\"Ship Color\"); opts.add(title); shipColor.addActionListener(new SColorListener()); shipColor.setSelectedIndex(0); opts.add(shipColor); title=new JLabel(\"Who Plays First?\"); opts.add(title); playsFirst.setSelectedIndex(0); opts.add(playsFirst); options.getContentPane().add(opts,BorderLayout.CENTER); //options.setSize(600,800); options.setResizable(false); done.addActionListener(new DoneListener()); options.getContentPane().add(done,BorderLayout.SOUTH); options.setLocation(200,200); options.pack(); options.setVisible(true); } //Listener for the Colors combo box private class SColorListener implements ActionListener { public void actionPerformed(ActionEvent v) { for (i=0;i<10;i++) for (j=0;j<10;j++) { if (players[you].getBboard(i,j).getBackground()==color[prevcolor]) players[you].setBboard(i,j,color[shipColor.getSelectedIndex()]); if (players[enemy].getBboard(i,j).getBackground() ==color[prevcolor]) players[enemy].setBboard(i,j,color[shipColor.getSelectedIndex()]); } prevcolor=shipColor.getSelectedIndex(); } } //Listener for ok button in statistics menu private class DoneListener implements ActionListener { public void actionPerformed(ActionEvent e) { if ((shipLayout.getSelectedIndex()!=prevLayout)|| (aiLevel.getSelectedIndex()!=prevLevel)|| (playsFirst.getSelectedIndex()!=prevFirst)) { JOptionPane.showMessageDialog(null,\"Changes will take\"+ \" place at the start of a new game.\",\"\" ,JOptionPane.PLAIN_MESSAGE); if (shipLayout.getSelectedIndex()!=prevLayout) prevLayout=shipLayout.getSelectedIndex(); if (playsFirst.getSelectedIndex()!=prevFirst) prevFirst=playsFirst.getSelectedIndex(); if (aiLevel.getSelectedIndex()!=prevLevel) prevLevel=aiLevel.getSelectedIndex(); } options.dispose(); } } } public static BattleshipClient getClient() { return me; } public static void main(String[] args){ Battleship gui= new Battleship(); while (gui.isActive()) { while (selectedValue.equals(\" \")) { } System.out.println(\"xenophobia\"); System.out.println(\"Object = \"+selectedValue); if (selectedValue.equals(\"Online\")) { selectedValue=\" \"; while (ready!=1) { } try { me=new BattleshipClient(); if (!me.getServerName().equals(\"invalid\")) { me.sendShips(); while (!gameover) { if (!players[you].getMove()) { try { me.listen(); } catch (IOException e){ System.out.println(\"Aw naw.\"); } } while (players[you].getMove()) { } me.results(); } } else { b.removeAll(); c.removeAll(); d.removeAll(); players[you]=new Player (user); players[enemy]=new Player (\"Computer\"); b.add(gui.setBoard(you),BorderLayout.CENTER); inputpanel=gui.shipinput(); d.add(inputpanel,BorderLayout.NORTH); gui.pack(); gui.repaint(); } } catch (IOException e) { System.out.println(\"You Suck\"); } } } //System.out.println(\"okay\"); } } /*http://java.sun.com/docs/books/tutorial/uiswing/learn/example1.html http://java.sun.com/docs/books/tutorial/uiswing/events/actionlistener.html http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JMenuItem.html http://java.sun.com/j2se/1.4.2/docs/api/ http://www.cs.princeton.edu/introcs/home/ http://java.sun.com/docs/books/tutorial/networking/overview/index.html JLabels? http://www.hasbro.com/common/instruct/BattleshipAdvancedMission.pdf http://java.sun.com/docs/books/tutorial/uiswing/misc/dnd.html http://java.sun.com/docs/books/tutorial/essential/threads/lifecycle.html synchronization and threads.*/
i have a code that runs, but it only lets the player to guess where the ships are(which is a one player game with one board). is there a way some one can help t
i have a code that runs, but it only lets the player to guess where the ships are(which is a one player game with one board). is there a way some one can help t
i have a code that runs, but it only lets the player to guess where the ships are(which is a one player game with one board). is there a way some one can help t
i have a code that runs, but it only lets the player to guess where the ships are(which is a one player game with one board). is there a way some one can help t
i have a code that runs, but it only lets the player to guess where the ships are(which is a one player game with one board). is there a way some one can help t
i have a code that runs, but it only lets the player to guess where the ships are(which is a one player game with one board). is there a way some one can help t
i have a code that runs, but it only lets the player to guess where the ships are(which is a one player game with one board). is there a way some one can help t
i have a code that runs, but it only lets the player to guess where the ships are(which is a one player game with one board). is there a way some one can help t
i have a code that runs, but it only lets the player to guess where the ships are(which is a one player game with one board). is there a way some one can help t
i have a code that runs, but it only lets the player to guess where the ships are(which is a one player game with one board). is there a way some one can help t
i have a code that runs, but it only lets the player to guess where the ships are(which is a one player game with one board). is there a way some one can help t
i have a code that runs, but it only lets the player to guess where the ships are(which is a one player game with one board). is there a way some one can help t
i have a code that runs, but it only lets the player to guess where the ships are(which is a one player game with one board). is there a way some one can help t
i have a code that runs, but it only lets the player to guess where the ships are(which is a one player game with one board). is there a way some one can help t
i have a code that runs, but it only lets the player to guess where the ships are(which is a one player game with one board). is there a way some one can help t
i have a code that runs, but it only lets the player to guess where the ships are(which is a one player game with one board). is there a way some one can help t

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site