import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.JFrame; import java.awt.*; import javax.swing.*; public class TwoPlayer extends JFrame implements MouseListener { private Player student, computer; private BoardDisplay st, co; private int turn; private Point lastClick; public TwoPlayer(){ super("Battleship!! Your player is on the Left..."); setSize(850, 600); student = new MousePlayer(); computer = new ComputerPlayer(student); st = new BoardDisplay(student.getBoard()); co = new BoardDisplay(computer.getBoard()); turn = 0; setDefaultCloseOperation(EXIT_ON_CLOSE); setLayout(new GridLayout(1,3)); add(co); add(st); //add(new JLabel("Student Player | Instructor Player"), BorderLayout.NORTH); addMouseListener(this); setVisible(true); } public boolean isWin(){ Board cboard = computer.getBoard(); int shipPos = 0; for(int r=0; r<10; r++){ for(int c=0; c<10; c++){ if(cboard.getTries(r, c) == 1) shipPos++; } } if(shipPos == 16){ JOptionPane.showMessageDialog(this, "You have won"); return true; } Board sboard = student.getBoard(); shipPos = 0; for(int r=0; r<10; r++){ for(int c=0; c<10; c++){ if(sboard.getTries(r, c) == 1) shipPos++; } } if(shipPos == 16){ JOptionPane.showMessageDialog(this, "The Computer has won"); return true; } return false; } public void mouseClicked(MouseEvent e) { lastClick = e.getPoint(); if(isWin()) return; if(lastClick.x>400 ||lastClick.y>400){ JOptionPane.showMessageDialog(this, "Please click in the board"); return; } Move m = student.getNextMove(); if(computer.isShip(m)) JOptionPane.showMessageDialog(this, "You hit a ship"); repaint(); try{ Thread.sleep(500);}catch(Exception ex){} m = computer.getNextMove(); if(student.isShip(m)) JOptionPane.showMessageDialog(this, "The Computer hit a ship"); repaint(); } public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} public void mousePressed(MouseEvent e) {} public void mouseReleased(MouseEvent e) {} /** * @param args */ public static void main(String[] args) { new TwoPlayer(); } private class MousePlayer extends ComputerPlayer{ public MousePlayer(){ super(null); } public Move getNextMove(){ return new Move((int)lastClick.y/40, (int)lastClick.x/40); } } }