150 likes | 266 Vues
This presentation outlines a guided approach to designing and implementing a simple card game for four players using Java. The game involves shuffling a full deck of cards, distributing them among players, and playing rounds where the highest card wins each round, tallying scores. Engaging with this material will enhance your understanding of object-oriented design principles, such as class, objects, methods, and interactions within a program. The presentation is intended for students to review concepts post-class and for instructors to adapt for teaching purposes.
E N D
Java Coding 8 Object-Oriented Design Example- The Card Game - David Davenport Computer Eng. Dept., Bilkent UniversityAnkara - Turkey. email: david@bilkent.edu.tr
IMPORTANT… • Students… This presentation is designed to be used in class as part of a guided discovery sequence. It is not self-explanatory! Please use it only for revision purposes after having taken the class. Simply flicking through the slides will teach you nothing. You must be actively thinking, doing and questioning to learn! • Instructors… You are free to use this presentation in your classes and to make any modifications to it that you wish. All I ask is an email saying where and when it is/was used. I would also appreciate any suggestions you may have for improving it. thank you,David.
Card Games As an example of Object Oriented Design
The Problem… • Design & implement a program to play a simple game of cards between four players. To begin, a full pack of cards are shuffled and dealt face-down to the players. The game then proceeds in rounds. For each round, players play the top card from their hand and add it face-up to a pile on the table in front of them. The player who plays the highest value card is the winner of the round and their score is incremented by one. When all of the cards have been played the player with the highest score is declared the winner of the game.
The Problem… • Design & implement a program to play a simple game of cards between four players. To begin, a full pack of cards are shuffled and dealt face-down to the players. The game then proceeds in rounds. For each round, players play the top card from their hand and add it face-up to a pile on the table in front of them. The player who plays the highest value card is the winner of the round and their score is incremented by one. When all of the cards have been played the player with the highest score is declared the winner of the game.
score Table player player player score score score player Pack of cards Picture it… • Objects • the Game? • Pack of cards • Players 1, 2, 3 & 4 • the Table? • Score card? (Player 1, 2, 3 & 4 scores) • Players 1, 2, 3 & 4 Cards on table • Players 1, 2, 3 & 4 Cards in hand
Classes • Player • Name • Set of cards in hand • Cards • Collection of cards • Card • Face value • Suit • CleverGame • Pack of cards • 4 Players • Scorecard(with 4 scores on) • 4 Piles of cards on table • ScoreCard • Set of scores
The Problem… • Design & implement a program to play a simple game of cards between four players. To begin, a full pack of cards are shuffled and dealt face-down to the players. The game then proceeds in rounds. For each round, playersplay the top card from their hand and add it face-up to a pile on the table in front of them. The player who plays the highest value card is the winner of the round and their score is incremented by one. When all of the cards have been played the player with the highest score is declared the winner of the game.
CleverGame class • properties • Pack of cards, 4 Players • ScoreCard, 4 Piles of cards on table • constructor ( 4 players)creates the game with the given players • Methods • + playTurn(Player, Card) : boolean • + isTurnOf(Player) : boolean • + isGameOver() : boolean • + getScore( playerNumber) : int • + getName( playerNumber) : String • + getRoundNo() : int • + getTurnOfPlayerNo() : int • + getWinners() : set of Player Represents a single card game played by 4 players
Player class • properties • name • set of cards in hand • constructor ( name)creates player with name & empty hand • methods • getName()returns players name • add( Card)add the card to players hand • playCard()removes and returns the top card from the players hand Represents a single player for a card game
ScoreCard class • properties • Set of scores • constructor ( noOfPlayers)initialises scorecard with noOfPlayers entries all set to zero • methods • + getScore( playerNo) : int returns score for specified player • + update( playerNo, amount)add amount to playerNo’s score • + getWinners() : ?? • + toString() : String Represents a ScoreCard for a card game
Cards class • properties • Collection of cards • constructor (fullPack)creates a variable sized collection of cards with no cards in it if fullPack is false or a full pack if true! • methods • + getTopCard()removes & returns top card from collection • + addTopCard( Card)adds the card to the collection • - createFullPackOfCards() • + shuffle()randomises order of cards in collection Represents a set of zero or more playing cards
Card class • properties • faceValue • suit • constructor ( faceValue, suit)creates card with given face value & suit • methods • getFaceValue()returns faceValue • getSuit()returns suit • toString() Represents a single playing card : int : int • constructor ( cardNumber)creates card with given position number in ordered pack! : int : int : String
ToDo… • Decide on implementation details • For card, cards collection, … • Design other algorithms • Shuffle, deal, … • Build & test • Extend • Add GUI (Graphical User Interface) • Make clever games & playable over Internet!