Battleship Java Program

University of Central Florida

Battleship Java Program 1

    1. COP 3330 Object Oriented Programming
    2. Spring 2017

Assignment 3

Due, Wednesday, April 12, 2017 for 100% credit

Thursday, April 13, 2017 for 90% credit

Friday, April 14, 2017 for 80% credit

Saturday, April 15, 2017 for 70% credit


Deliverables 

To complete this assignment you must submit your compressed Netbeans project to Webcourses. This requires you to submit a .zip, .rar, .tar, .tgz. etc… of the ENTIRE project. Individual source code files will not be accepted.


Introduction 

This assignment is to develop a User Interface using classes from the javax.swing package.


Tasks and Rubric

Activity

userInterface package

BattleshipUI.java

Add an import for

  1. core.BattleshipClient

  2. core.Ship

Create an ActionListener for the Deploy Ships button that does the following:

  1. Disables the UI components on the JPanel with ship selection options

  2. Add a JPanel to the right of Player One’s button board with a JTextArea for displaying the game status to the user

  3. Add a JPanel to the right of the game status with Player Two’s button board

  4. Call the play() method in class BattleshipClient

In the ActionListener for the Game Menu set the player mode based on what the user selected, the options are:

Player versus Player

Player versus Computer

Computer versus Computer

Example code:

if(e.getActionCommand().equals("Player vs. Player"))

{ players[Constants.PLAYER_ONE].setPlayMode(Constants.HUMAN); players[Constants.PLAYER_TWO].setPlayMode(Constants.HUMAN);

Player.java

Add a class member to store the player’s mode, human or computer; create getter/setter for the class member

Create a method that will automatically layout the ships for when the player mode is set to computer using the Random class to randomly select the direction and location for the startRowClick and startColumnClick; make sure the auto layout uses null for the color

PlayerOptionDialog.java

Update the UI so that it reflects the saved data for each Player

core package

BattleshipClient.java

This class controls the game being played

Create a custom constructor that takes two parameters, an Array of class Player and class BattleshipUI

Create a method play() to manage the play between Player One and Player Two; for this iteration only Human versus Computer has to function

When a JButton has been selected/clicked:

  1. if it is a hit

    1. change the background color to something other than the default gray(i.e. null) and the ship color (e.g.Color.BLACK)

    2. update the object instance so that the number of hits is increased or the hits left is decreased

  2. if it is a miss

    1. change the background color to something other than the default gray (i.e. null), the ship color, or the color used for a hit

When a ship has 0 (zero) hits left or has taken the max number of hits update the ship so that isSunk = true; notify the user when each of their ships has been sunk

Whichever player sinks all five opponent’s ships first wins the game!

functionality

Compiles

Source compiles with no errors

Runs

Source runs with no errors

Comments

Source includes comments

Total

Figures

Battleship Java Program 2

Figure 1 Initial display

Battleship Java Program 3

Figure 2 Deployed Ships


Battleship Java Program 4

Figure 3 Display Game Status and Player Two Panels

Battleship Java Program 5

Figure 4 Play Between Human and Computer


Battleship Java Program 6

Figure 5 End of Game

Battleship Java Program 7

Figure 6 Player Options Dialog Before Player Selection

Battleship Java Program 8


Figure 7 Player Options Dialog After Player Selection