COSC 1010 Introduction to Software Problem Solving
Fall 2010
Homework Assignment #6
"Talent hits a target no one else can hit;
Genius hits a target no one else can see."
-- Arthur Schopenhauer
Due: Wednesday, October 27th, 11:00am CDT
Submit: Turn in all four of your Java source files using the
D2L Dropbox: Project6.java Point.java Target.java Cannon.java.
Work may be completed in teams. The names of both partners
must appear in a comment block at the top of your files for credit to
be given.
Target Practice, Part II
Expand upon the target practice game in Project 5
to allow up to five Targets and five Cannons.
You should use arrays to represent your collection of
targets and cannons.
The new and improved game should now be command driven, allowing the user
to choose from a set of actions: add, fire, and exit.
add
Prompt the user for what component to add to the game -- either a target
or a cannon. Then, enter coordinates as before. Creation of a cannon should
now prompt for the number of initial shots to be loaded. Note that cannons
can now be positioned at coordinates other than the origin.
fire
The user should be prompted for which cannon to fire; cannons are
numbered 0 through 4. After the impact is calculated, check each of the
targets for a hit. Since targets could overlap, an impact could hit more
than one target.
exit
Use the Java method System.exit(0) to directly exit your program.
Under other circumstances, your program should exit if all of the cannons
are empty (and there are more than zero cannons), or when all the targets are
hit (and there are more than zero targets).
Errors
Given the greater flexibility of this project, it is important to check for
a variety of errors in game logic. The following is a list of error messages
that can occur; their causes should be self evident.
Error: unknown command
Error: already have 5 cannons
Error: already have 5 targets
Error: invalid cannon number
Error: cannot add
The last error message is for when the command to "add" is followed
by something other "cannon" or "target".
Example Run
In the examples below, I use text in
blue to distinguish the output of the program from the
input I typed. This is for purpose of clarity only; your program
will not print text in different colors.
Project 6 - Target Practice, Part II
Command (add, fire, exit)? add
(cannon, target)? target
Enter first point for target:
X? 100
Y? 100
Enter second point for target:
X? 200
Y? 200
Target 0 at [(100,100,0):(200,200,0)]
Cannon status:
Target status:
Target 0 at [(100,100,0):(200,200,0)]
Command (add, fire, exit)? add
(cannon, target)? cannon
Enter coordinate for new cannon 0:
X? 50
Y? 50
Number of shots? 5
Cannon 0 at (50,50,0), 5 shots remaining.
Cannon status:
Cannon 0 at (50,50,0), 5 shots remaining.
Target status:
Target 0 at [(100,100,0):(200,200,0)]
Command (add, fire, exit)? fire
Which cannon? 0
Firing cannon 0:
Bearing? 45
Declination? 70
Impact at (165,165,0)
Target 0 hit! Well done.
Cannon status:
Cannon 0 at (50,50,0), 4 shots remaining.
Target status:
Target 0 at [(100,100,0):(200,200,0)] HIT
All targets hit. Well done!
Notes
The Professor has provided a reference implementation for you to
compare against. Change the directory on Morbius:
cd ~brylow/cosc1010/Demos/Project6/, and run
java Project6.
Back
[Revised 2010 Oct 13 11:46 DWB]