Summary: |
Write a Java program that implements a card game using the supplied card
images. Requires use of ArrayList and other portions of the Collections
Framework for organizing and manipulating cards, and Swing components for
displaying card images. Focuses on developing the reusable classes Card,
Deck, Hand, Rank, and Suit. |
Topics: |
Common to all implementations: GUI design, event handling, list manipulation,
inheritance. Other implementations can include GUI component manipulation. |
Audience: |
Appropriate for CS2 or first GUI-intensive course that follows. |
Strengths: |
Most students are familiar with some type of card game. Data structures
for representing decks and hands of cards can be formed from ArrayList from
the Collections Framework; this allows students to perform the needed list
manipulations for their game without having to write sorting, searching,
or shuffling algorithms. Use of Swing components allows for easy display
of the card images by using JLabels and setting the appropriate card image
as its icon. First part of the assignment leads students through the code
development process. Use of Javadoc provides a "class implementation
contract" that spells out the details for the code to be written. |
Weaknesses: |
In their enthusiasm, students can seriously underestimate the amount of
time needed to implement their specific card game when pursuing extra credit
options. Instructor needs to interact early with the students to discern
their intentions and provide appropriate guidance. |
Dependencies: |
Requires a working understanding about Swing GUI components, event handling,
and use of lists under the Collections Framework. |
Variants: |
Some of the programs implemented so far include Draw Poker (both with
and without betting), Rummy, Hearts, Blackjack, and several variations of
Solitaire (e.g. Klondike, Four Corners). |