EC Assignment 99
Create a GUI application and/or applet using either AWT or Swing for a card game.
(This assignment is optional/extra credit.)
Textbook: the second half of every chapter
New concepts: GUIs, Swing, applets.
First of all, you may improve your video poker game. Ideas include:
- +0.5 - Bankroll
- Player starts with a certain amount and keep playing until they choose to quit or run out of cash. Possibly can choose how much they bet each turn. Cannot run into debt (negative numbers).
- +0.5 - High scores
- Save a file containing the top five highest bankrolls of any player that has played the game.
- +0.5 - Save file
- Save the player's bankroll amount in a file so they can resume play next time they start the program. (There could be one saved game for the program, or one for each player.)
Alternatively, you could create an entirely different card game. The game must be an existing game (not one you made up) and allow for significant user choice (so no War or similar games).
- up to +3 - Different card game
- The amount award is based on the complexity of the game: Old Maid and Go Fish are about a +1; regular poker is a +3.
However, while you can customize your card game, the main point of this assignment is to build a GUI for it. (So you must have some sort of GUI to get the above EC.)
To learn to make a Java GUI, find a good book or tutorial. I recommend starting with the Java Tutorial, particularly the Swing Tutorial
If you have questions regarding these specifications or how this assignment is graded, please let me know. I will spend a couple lab sessions discussing JOptionPanes and the very basics of creating a GUI or applet. However, outside of these GUI lab sessions, I will not answer any Swing or applet questions--the point of this EC assignment is that you learn how to do it on your own.
The amount of EC you earn will depend on the sophistication of your GUI. The following are some guidelines/ideas. Your submission must work to get credit! This means you need to include all files needed to run it, including any .html files for applets, etc.
- 2 points - JOptionPanes
- An application that does not use the console at all but uses JOptionPanes for all input and output.
- 5 points - GUI Application (Text-based)
- Runs much like a text-based game, only it is displayed directly within its own JFrame window or applet panel (using a non-editable TextArea for output and a text field for input, perhaps?)
- 6 points - GUI Application (Static display with pop-ups)
- Part of the game (such as the player's hand) is displayed continuously in its own component (rather than appearing along with a printed menu). The game can be affected through components (buttons, input fields, etc) in the same panel. These components may produce pop-up/JOptionPanes to get input.
- 7 points - Applet or GUI Application (Embedded/direct controls)
- As for "Static display of pop-ups" description, but no pop-ups are used to get input. Instead, all input is done through buttons, text fields, etc. in the same window that displays the player's hand.
- +0.5 points - Close button works
- Your application's X close button works.
- +0.5 points - Quit Menu
- The application window includes a simple working menu of the File -> Quit variety.
- +1.5 points - Applet
- If you do any of the above as an applet (instead of application).
- +0.5 point - Applet or Application option
- The same main class will run either as an application (by running its
main method) or can be embedded in a webpage as an applet (because it extends
Applet). (Cumulative with the +1.5 for making an applet.)
- +2 points - Link to working online version of Applet
- You get your applet version uploaded and running on your uhunix website.
- +1 points - Console mode
- It is also possible to run the game in text mode in the console window. (A command line argument will probably be required to indicate which mode to run in.)
Additional points possible for GUIs of particularly high quality.
Here is the code I showed you on GUIs in lab:
Packages and JAR files
Whatever you did for your game above, you can try using packages and a JAR file to bundle them.
- +1 - Packages
- First, put each of your finished classes in its own file. Then place all those classes in a package. You can use your
username as the package name. (This will require you to create the appropriate directory and add the
package directive to all your files.) You can have additional subpackages if you desire. Recompile everything. (If you don't do the JAR file, then zip up your directory structure to submit it.)
- +1 - JAR File
- Then, produce a JAR file containing all your .class and .java files.
- +1 - Main-Class
- You should adjust the JAR file manifest so that your application runs correctly when you execute the JAR file.
To learn more about packages and deployment using JAR files, see the Java Tutorial.
What to Submit
Since Tamarin won't be capable of grading this one, email your completed code to your TA. Attach your .java files, ZIP file, or JAR file to the email.
- Can I write a GUI for a program other than a card game?
- Maybe. Talk to your TA about it first: What is the program/game? Why do you want to do it instead of a card game? What plans do you have for the GUI design?