CSSE 220 – Object-Oriented Software Development

Homework 15

Objectives

Pair Programming, organizing an algorithm and its data for efficient computation.

Tasks

  1. Complete the assigned reading for the next session: Chapter 12.
  2. Do the ANGEL Quiz for Chapter 12.
  3. Skim the remainder of UML Class Diagrams intro
  4. Review the Shapes Hierarchy example from today's class.  If there is anything you don't understand, write it down so you can ask questions about it.
  5. Programming:
    1. Your programming work for this part must be done in the HardysTaxi project inside Check out this project from your Hardy pair repository, then switch back to the Java perspective.
    2. Hardy's Taxi.  The description still needs some updating, but you can get started.  Due on the day of Session 18. There may be some other smaller things due on or before that date, so start early  on this one..  The real trick is figuring out what data to store while you are doing the computation, and how to organize it for efficient search.
    3. Optional GUI practice programming.  This problem (starting code is in the Inheritance project in your individual repository) was assigned during the Fall, 2008 term.  You have had considerably more GUI practice by now than last term's students have. so I am not going to require it or give extra credit for it.  But you might reinforce (or initially learn) a few things by doing it.

      Linear Lights Out: Implement the game Linear Lights Out. In Linear Lights Out, the user is presented with an array of buttons that are randomly initialized to either Xs or Os, 50% probability each. Clicking on a button changes the symbol of the button and both its left and right neighbors. Buttons on the end just change their own symbol and their one neighbor’s symbol; the buttons don’t “wrap around”. The object of the game is to reach a state where the buttons all show the same symbol, whether Xs or Os doesn’t matter.

      We’re providing a lot less “scaffolding” for this problem than most of the previous ones. Everything you need to solve the problem has either appeared in previous homeworks or examples, or is in the Java API documentation for JButton. Remember to ask for help if you get stuck. Here’s a suggested plan of attack:

      1. Display a frame with the right title.
      2. Display the right number of buttons in the frame (see LinearMain.BUTTON_COUNT) without worrying about event handling or the symbols on the buttons. For full credit, you final solution must work with any BUTTON_COUNT greater than 2.
      3. Make sure the buttons are initialized to random symbols.
      4. Implement an event handler for the Quit button.
      5. Implement an event handler for the New Game button. This should reset the symbol buttons to a new set of random symbols.
      6. Set up event handlers for the symbol buttons that correctly toggle the symbols as described above.
      7. Check for a win and notify the player in some way. Changing the window title would suffice. (If you do that, be sure to change it back when the player clicks New Game.)

      Hints:

      • The setText() and getText() methods of JButton are your friends.
      • You do not need to use inheritance to solve this problem. We’ll start working with that on Monday.

      Here’s a screen shot of the game in progress:

Turn-in Instructions

We will grade your reading quiz using ANGEL. Turn-in your programming work by committing it to your SVN repository.