created 06/25/99

# Chapter 59 Programming Exercises

## Exercise 1 -- Four Buttons

Modify the TwoButtons program so that it has four buttons: one for red, one for green, one for blue, and one for gray. Clicking on a button changes the frame to the corresponding color. The GUI will look like this after the green button has been clicked:

A sensible way to do this is to copy the chapter's example program and modify it. For a real challenge, try to do it from scratch.

## Exercise 2 --- Color Cycle

Write a program that has only one button in the frame. Clicking on the button cycles through the colors: red --> green --> blue --> gray --> red --> and so on, one color change per click. In addition to the `setBackground( Color.color )` method we have been using, you will need the `Color getBackground()` method to get the current color.

Another way to do this (a somewhat cruder way) is to use an instance variable (of type Color) in the frame to hold the current color.

## Exercise 3 -- Three Button Monty

Write a program implements a game:

There are three buttons in the frame. Two of the buttons will cause the program to quit using `System.exit(0)`; the remaining button will change the frame to green (a win!) The winning button is different each time the game is played.

The easy way to do this (although it seems like cheating) is to treat each button the same way. The `ActionPerformed()` method will not even check which button was clicked. It will pick a random integer from 0 to 2 and if the integer happens to be 0 perform the "winning" action. Otherwise, it will perform the "loosing" action. This is similar to some electronic gambling devices in casinos, where it appears to the user that there are "winning moves" but in fact the machine actually ignores what the user has done and just declares a "win" every now and then, according to pre-assigned odds. You will need to use the `Random` class:

```Random randNum = new Random(); // create a Random number object

. . .

int someInt = Math.abs( randNum.nextInt() )%3   // someInt gets a number from 0 to 2
```
You may recall seeing Random in a previous chapter.

## Exercise 4 --- Winning Streak

Modify the program of Exercise 3 so that only one button exits the program. If the user clicks on any of the other two buttons, the frame just changes color. The user keeps clicking until the "loosing button" is clicked. The user's goal is to click as many times as possible.

Create a frame with two buttons, called Expand and Shrink. When the Expand button is clicked, the frame expands by 10 percent. When the Shrink button is clicked, the frame shrinks by 10 percent. Do this in the `actionPerformed()` method by using `setSize()`. Keep track of the current size of the frame with two instance variables of type int. When you increase them or decrease them by 10 percent, you will have to use integer arithmetic or use a type cast.