CSE142—Computer Programming I
Programming Assignment #2
due: Tuesday, 4/14/09, 9 pm
This assignment will give you practice with for
loops, static methods, print/println statements and a class constant. This assignment is worth 16 points instead of
the normal 20 points.
Part A:
ASCII Art (2 points):
The
first part of your assignment is to write a program that produces any text art
(sometimes called “ASCII art”) picture you like. Write a Java class called AsciiArt in a file called AsciiArt.java.
The art can be posted on our Facebook application. Your program can produce any
text picture you like, with the following restrictions and details:
·
The
picture should be your own creation, not an ASCII image you found on the
Internet or elsewhere.
·
The
number of lines of output should be between 3 and 200 with no more than 100
characters per line.
·
The
picture should not include hateful, offensive, or otherwise inappropriate
images.
·
The
code should use at least one for loop or static method, but should not contain
infinite loops.
·
The
picture must not be identical to your solution for Part B or consist entirely
of reused Part B code.
·
Your
code should not use material beyond Chapter 3 of the book.
If your Part A program compiles and runs
successfully and meets the above constraints, it will receive the full 2 points.
Part A will not be graded on style ("internal correctness").
Part B: Rocket
Ship (14 points):
In
the second part of the assignment, you are going to generate output that looks
like the following:
/**\
//**\\
///**\\\
////**\\\\
/////**\\\\\
+=*=*=*=*=*=*+
|../\..../\..|
|./\/\../\/\.|
|/\/\/\/\/\/\|
|\/\/\/\/\/\/|
|.\/\/..\/\/.|
|..\/....\/..|
+=*=*=*=*=*=*+
|\/\/\/\/\/\/|
|.\/\/..\/\/.|
|..\/....\/..|
|../\..../\..|
|./\/\../\/\.|
|/\/\/\/\/\/\|
+=*=*=*=*=*=*+
/**\
//**\\
///**\\\
////**\\\\
/////**\\\\\
You are to reproduce this output exactly. You are to use a class constant to make it possible
to change a single number in one place in the program to have it produce a
corresponding figure of a different size. The size of the figure above is 3 because
various subfigures in the middle of the output have a height of 3. These subfigures have the property that their
height determines their width, so there is only one size variable.
This assignment is meant to give you practice
with the constructs from Chapters 1 and 2.
This will require you to create nested for loops with print and println statements that use the
class constant. You may use constructs
from Chapter 3, although you are not required to do so and you will receive no
extra credit for doing so. You may not
use any programming constructs that are not in Chapters 1 through 3 of the
textbook.
You should continue to use static methods to
structure your solution. You should try
to avoid significant redundancy and you should structure your program in such a
way that the methods match the structure of the output itself. You are required to indent your code properly
and will lose points for poor indentation. You should localize variables
whenever possible.
Include a comment at the beginning of your
program with basic information and a description of the program and include a
comment for each method. Name your file DrawRocket.java and turn in your program electronically through
the “assignments” link on the class web page.
On any given execution your program will produce
just one version of this figure, but it should be possible to change the value
of the class constant to have your program produce a figure of a different
size. For example, with subfigures of
height 5, the output should look like the rocket below. (Note: The output-comparison tool on the
course web-site has both size rockets.)
/**\
//**\\
///**\\\
////**\\\\
/////**\\\\\
//////**\\\\\\
///////**\\\\\\\
////////**\\\\\\\\
/////////**\\\\\\\\\
+=*=*=*=*=*=*=*=*=*=*+
|..../\......../\....|
|.../\/\....../\/\...|
|../\/\/\..../\/\/\..|
|./\/\/\/\../\/\/\/\.|
|/\/\/\/\/\/\/\/\/\/\|
|\/\/\/\/\/\/\/\/\/\/|
|.\/\/\/\/..\/\/\/\/.|
|..\/\/\/....\/\/\/..|
|...\/\/......\/\/...|
|....\/........\/....|
+=*=*=*=*=*=*=*=*=*=*+
|\/\/\/\/\/\/\/\/\/\/|
|.\/\/\/\/..\/\/\/\/.|
|..\/\/\/....\/\/\/..|
|...\/\/......\/\/...|
|....\/........\/....|
|..../\......../\....|
|.../\/\....../\/\...|
|../\/\/\..../\/\/\..|
|./\/\/\/\../\/\/\/\.|
|/\/\/\/\/\/\/\/\/\/\|
+=*=*=*=*=*=*=*=*=*=*+
/**\
//**\\
///**\\\
////**\\\\
/////**\\\\\
//////**\\\\\\
///////**\\\\\\\
////////**\\\\\\\\
/////////**\\\\\\\\\