CS 157 Lab Exercise
CS 157 Algorithmic Problem Solving - Labs 10 and 11
Purpose: Practice using 1- and
Generally speaking, visual actuity is the ability to discern small objects,
typically measured using black objects on a white background (think the "big
E" chart at your optometrist
office). According to the NDT Resource Center, "at 12 inches, the
normal visual acuity of the human eye is 0.00349 inch. What this means is
that if you had alternating black and white lines that were all 0.00349 inch
wide, it would appear to most people as a mass of solid gray."
Imagine devising a test or game to measure other aspects of visual ability,
like the ability to distinguish between closely-related colors or shades of
gray. One might display a sequence of boxes of similar shades, like
or even this:
Lab 10: Using 1-dimensional arrays
This exercise is based on Exercise 14.10.2 on page 403 of the text.
Create a class Concentration
that draws a row of grayscale boxes (like the first image) that can be
used to test the user's ability to match shades of gray. Your
program will display a row of 24 square boxes (scaled to fit no matter how
large the canvas). Use a FramedRect
to draw a thin black border around each box. Generate 12 shades of
gray and set the color of two randomly chosen boxes with each shade.
Use an array of Color
objects to represent the grayscale values. Use an array of FilledRect
objects to represent the row of boxes.
When run, the program allows the user to select a box as the first member
of a matching pair. When this happens, change the color of the
border to red. If the next
box clicked is exactly the same shade as the first, remove them
both. If the second box does not match the first, set the first
border back to black. The user can then try again.
Display a score below the row of boxes using the form "Score = 4 (out of
15 tries)" using either Text or JLabel
You'll also need a constructor to call startController
with a reasonable width and height for the window.
Demonstrate your solution to the instructor.
- How do you generate a shade of gray?
How might you choose boxes randomly if some have been given colors
- How can you determine how big to
make the boxes based on the size of the canvas?
- When figuring out where things go, make use of constants.
Lab 11 - Make it two dimensional
Start with a NEW PROJECT called Concentration2D
which improves the original by displaying an 8 by 8 matrix of 64 total
colored boxes as described in Exercise 14.10.2.
The basics (creating the board as a 2-dimensional array, for example) are
already coded up in these two files: Concentration
and ColorRect. Feel free to modify the way it
works, change colors, etc.
More to come!
Stephen P. Carl