# teaching machines

## CS 148 Lab 2 – Scanner

Welcome to the lab 2!

Our goal today is to become more familiar with user interaction and the various mathematical operations.

### Checkpoint 1

Person A, take control of the machine!

Let’s write a program that prompts the user for two colors and mixes them together. This sort of routine is used all the time when resizing or transitioning between images.

A color is often represented in a computer with a triplet integers: a red component, a green component, and a blue component, each in the range [0, 255]. These three intensities combine to produce all the possible colors that our monitors can display.

To mix two colors, we compute a weighted average of their red components, green components, and blue components separately to produce a new triplet.

• Prompt the user for a first color and store the inputs from the Scanner in three ints, one for each of the color’s red, green, and blue intensities. Assume the color intensities are in [0, 255]. Pick good names for your variables!
• Prompt the user for a second color and store the inputs from the Scanner in three ints. Pick good names for your variables!
• Prompt the user for a proportion or weight by which to mix the colors. Assume the user enters a number in [0, 1].
• Compute the blend color as a weighted average of the input colors. Mix the reds, greens, and blues independently. If the proportion is 0.1, then the mix is 10% of the second color and 90% of the first. For example, If the red intensity of the first color is 50, and the red intensity of the second color is 100, then the red intensity of the blended color is 10% of 100 and 90% of 50, which is 55. Store the results of your mixing in three new int variables.
• Print out the mixed intensities and compare them against the little tester utility below.

### Checkpoint 2

Person B, take control of the machine!

With person A at your side, we’ll write two little games. These exercises are intentionally designed to be more open-ended. We are happy to help you if you can’t figure out how to achieve your goal, but we don’t want to rob you of the learning that happens naturally when fewer directions are given.

#### Pause

Write a little game we’ll call Pause. The rules of the game are this:

1. The computer generates a random target time (in seconds) and communicates that number to the human player.
2. The player attempts to wait the specified number of seconds and then hits Enter.
3. The computer informs the player how close she was to the target time.

A possible interaction might look like this:

Wait 4.3 seconds...
You waited 5.76323 seconds. That's 1.46323 seconds too many.

#### Math Mountain

The students at my children’s elementary school do a math exercise called Math Mountain. They are presented a number at the “peak” of the mountain, and another number at its left base. They are to enter the number at its right base, such that the two bases sum to to the peak. A prompt might look like this on their worksheet:

  24
17  __

A student would enter 7 as the answer because 17 + 7 = 24.

Write a program that lets the user complete one or more rounds of Math Mountain.