CSE 116 - Fall 2006 - Banner
   CSE 116 - Fall 2006 - Introduction to Computer Science for Majors II
CSE 116 - Fall 2006 - Left Navigation CSE 116 - Fall 2006 - Lab 1 Contents

Stage 2

Groups: Locate your group assignments here. They are unchanged unless you received an email from me.

Submission: Each group must submit one JAR with their implementation, named Stage2GroupX.jar where X corresponds to the letter assigned to each group. Each submission must include the JUnit tests that you created for your implementation as well as the actual Java source code for your implementation. (Note: JUnit tests will count a lot more towards your grade on this stage than they did on the previous stage - beef up your unit tests.)

Your submission should also include a README file indicating what functionality was implemented for this stage and what functionality does not correctly work.

Each group is also required to send a weekly email to me (CC'd to the rest of the group) about the progress for the week. Each week, the secretary of the group should change. These emails will impact your grade.

For this stage, your group is required to submit a UML diagram, created using Green for the implementation for this stage of the project.

All files must be commented using Javadoc style.

Due: Monday, October 30th at 11:59:59pm.

Due date extended because of storm: Friday, November 3rd at 11:59:59pm.


You must also complete a peer evaluation as described in this document and submit it by 11:59:59pm on Tuesday, October 31st Friday, November 3rd at 11:59:59pm. Your peer evaluation at this stage should be in a file named Stage2Peer.txt



You will continue the implementation a modified version of a game called Lingo. For this stage, you will be creating a graphical user interface for your Lingo game as well as making some key changes to the game play. See below for specific game changes.

You must pick one of the group's submissions from the LectureCode repository. If your submission was put into the repository, you can select your own, but you will need to implement the additional functionality mentioned below.

Graphical User Interface

Think back to the game and the visual way the correcly placed and incorrectly placed letters were represented. You do not have to follow their strategy for this indication, but your GUI must have a visual way to indicate correctly placed and incorrectly-placed but in the word letters.

A player should not type their letters in as a string, but rather, each letter should go into it's own "slot" on the screen - similarly to how the board looked on the Lingo gameshow.

The player should definitely see their Lingo board at minimum at the beginning and end of each of their turns. The removal of the numbers should be animated in some way so that the player knows which numbers are being taken off the board. The total number of Lingos that each player has should be displayed on the board screen somewhere. You can decide to keep the board in a window and visible during the entire game, but be sure to account for the fact that the if the board is in another window, the player may close that window at some point during the game. The window with the board should be opened when the player's turn is over, so that they can see their numbers.

The look-and-feel of the game is up to you, but here's your chance to be really creative with this project - go for it! Try splash screens and animations out - have fun!

Chance for Bonus Points: When a number removed created a Lingo, highlight each of the numbers in the row/column/diagonal that make up the Lingo for a short time.


Changes to Game Play

"Clean Up" Functionality

  • Players must enter their words in a specified period of time. Failure to enter the word within the time limit will cause them to lose one of their guesses. (Time remaining should be displayed to them)
  • If the word the player enters is too short or too long, they must be notified of their mistake and instructed to enter their word again. This mistake should not cost the player a guess.
  • The word the player enters must begin with the correct letter, or they must be prompted to try again. This mistake should not cost the player a guess.
  • The word entered by the player must not contain any numbers or symbols, or they must be prompted to try again. This mistake should not cost the player a guess.
  • The word entered can be in all lower-case, all upper-case, or mixed case and the game must handle it appropriately.
  • If the player fails to guess the word, you must tell the player what the word was.
  • The player should not have to specify the dictionary file at the beginning of the game.
  • You should provide an easy way for the player of your game (i.e. the grader) to insert their own dictionary file. This should not be part of the game interface, but rather in the "App" class. Wouldn't it be so easy if the creation of the top-level object of your game took in a String that represented the file name that was the dictionary file?

Functionality Changes

The game will still be played in 6 rounds, but in each round, the number of letters in the words in each round will increase in the following manner:

Round 1: 4 letter words
Round 2: 5 letter words
Round 3: 6 letter words
Round 4: 7 letter words
Round 5: 8 letter words
Round 6: 9 letter words

The number of guesses for each round allowed each player will match the number of letters in the words they are to guess. The number of Lingo balls selected for each player's correctly guessed word will be one ball for rounds 1 & 2, two balls for rounds 3 & 4, and three balls for rounds 5 & 6. The winning player will still be the player that has the most Lingos at the end of the six rounds.


Undo Functionality (See you in Stage 3!)

The game should provide a way for the player to "undo" a letter that they have already typed. This undo functionality should be represented graphically on the game (menu or button) and take away the last letter the player typed from the screen. You should use a Stack to implement this functionality. We will be discussing Stacks in class in a few weeks, so please refer back to the lectures about stacks when you are ready to implement this stage.


So you want your own Stage 1, eh?

No problem, in order to earn 100% on this stage of the project, you will need to implement all the previous functionality, plus the following functionality if you choose your own code base from the repository.

After the first six rounds, the player with the most Lingos is declared the winner and goes on to the Bonus round. In the bonus round, the player is given 3 minutes to guess as many words as possible so that he/she can earn Lingo balls for their bonus Lingo board.

When the bonus round begins, the player is given their bonus Lingo board and 10 numbers are removed from it not allowing more than three in any row, column, or diagonal. Then, the word guessing begins. The words in the bonus round are all 5 letters long and the player gets 5 guesses for each word. The same rules about identifying letters as in the previous round apply.

The player also has one bonus letter for every Lingo they received in the first round. A bonus letter is a free letter given to them in the word they are currently guessing.

At the end of three minutes, count up the total number of words the player guessed correctly and remove that many numbers from their bonus Lingo board. Display the total number of Lingos earned in the bonus round at the end.




CSE 116 - Fall 2006 - Footer


Last modified: Wed Sep 27 17:24:02 2006