From 092da7ba355313c4bdac0076e7befed4a19a9276 Mon Sep 17 00:00:00 2001 From: Raphael Roberts Date: Thu, 28 Nov 2019 21:55:16 -0600 Subject: [PATCH] Added files --- Card.java | 39 +++++++++++++++++ Deck.java | 102 +++++++++++++++++++++++++++++++++++++++++++ SortingAlgs.java | 31 +++++++++++++ TestCardSorting.java | 59 +++++++++++++++++++++++++ 4 files changed, 231 insertions(+) create mode 100644 Card.java create mode 100644 Deck.java create mode 100644 SortingAlgs.java create mode 100644 TestCardSorting.java diff --git a/Card.java b/Card.java new file mode 100644 index 0000000..f310924 --- /dev/null +++ b/Card.java @@ -0,0 +1,39 @@ +// The Card class that represents cards +// Do not make any changes to this file! +// Xiwei Wang + +import java.io.*; + +public class Card implements Serializable +{ + // instance variables + private int m_suit; + private int m_rank; + + // constructor + public Card(int suit, int rank) + { + m_suit = suit; + m_rank = rank; + } + + // getters + public int getSuit() + { + return m_suit; + } + + public int getRank() + { + return m_rank; + } + + // return a string representation of the card + public String toString() + { + String[] suitChars = {"C", "D", "H", "S"}; + String[] rankChars = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"}; + + return suitChars[m_suit] + rankChars[m_rank]; + } +} diff --git a/Deck.java b/Deck.java new file mode 100644 index 0000000..769365a --- /dev/null +++ b/Deck.java @@ -0,0 +1,102 @@ +// The Deck class that represents decks +// Do not make any changes to this file! +// Xiwei Wang + +import java.io.*; + +public class Deck implements Serializable +{ + // instance variables + private Card[][] myCards; + private int m_numCards; // the number of card that are picked up to build the partial deck + private String m_sortedDeck; + + // constructor + public Deck() + { + myCards = new Card[4][13]; + + // populate the card array + for (int i = 0; i < 4; i++) + for (int j = 0; j < 13; j++) + myCards[i][j] = new Card(i, j); + } + + // shuffle the deck + public void shuffle(int numShuffles) + { + for (int i = 0; i < numShuffles; i++) + { + // generate random positions + int suit1 = (int)(Math.random() * 4); + int suit2 = (int)(Math.random() * 4); + int rank1 = (int)(Math.random() * 13); + int rank2 = (int)(Math.random() * 13); + + // swap the cards + Card temp = myCards[suit1][rank1]; + myCards[suit1][rank1] = myCards[suit2][rank2]; + myCards[suit2][rank2] = temp; + } + } + + // return a particular card in the deck + public Card getCard(int suit, int rank) + { + return myCards[suit][rank]; + } + + // return a specific number of cards as a card array + public Card[] getPartialDeck(int numCards) + { + Card[] partialDeck = new Card[numCards]; + int counter = 0; + + for (int i = 0; i < 4; i++) + for (int j = 0; j < 13; j++) + { + partialDeck[counter] = myCards[i][j]; + counter++; + + if (counter == numCards) + return partialDeck; + } + + return partialDeck; + } + + // return a string reprentation of the deck + public String toString() + { + String deckContent = ""; + + for (int i = 0; i < 4; i++) + { + for (int j = 0; j < 13; j++) + deckContent += myCards[i][j].toString() + " "; + + deckContent += "\n"; + } + + return deckContent; + } + + // set the number of cards that would be picked up and the sorted deck string + public void setVars(int numCards, String sortedDeck) + { + m_numCards = numCards; + m_sortedDeck = sortedDeck; + } + + // return the number of cards that would be picked up + public int getnumCards() + { + return m_numCards; + } + + // return the sorted deck string + public String getSortedDeck() + { + return m_sortedDeck; + } +} diff --git a/SortingAlgs.java b/SortingAlgs.java new file mode 100644 index 0000000..ffb5939 --- /dev/null +++ b/SortingAlgs.java @@ -0,0 +1,31 @@ +// The SortingAlgs class that implements insertion sort and iterative merge sort +// your name here + +public class SortingAlgs +{ + // card comparison + public int compares(Card c1, Card c2) + { + // TODO: implement this method + + return -1; // replace this statement with your own return + } + + // insertion sort + public void insertionSort(Card[] cardArray) + { + // TODO: implement this method} + } + + // merge sort + public void mergeSort(Card[] cardArray) + { + // TODO: implement this method (in an iterative way) + } + + // merge two sorted arrays into one sorted array + public void merge(Card[] cardArray, int first, int mid, int last) + { + // TODO: implement this method + } +} diff --git a/TestCardSorting.java b/TestCardSorting.java new file mode 100644 index 0000000..ed214cb --- /dev/null +++ b/TestCardSorting.java @@ -0,0 +1,59 @@ +// Test driver for the SortingAlgs class +// Do not make any changes to this file! +// Xiwei Wang + +import java.io.*; +import java.util.Arrays; + +public class TestCardSorting +{ + public static void main(String[] args) + { + SortingAlgs mySort = new SortingAlgs(); + + try + { + // read the decks from file + ObjectInputStream in = new ObjectInputStream(new FileInputStream("Decks.dat")); + Deck[] myDeck = new Deck[5]; + myDeck = (Deck[])in.readObject(); + + for (int i = 0; i < 5; i++) + { + Card[] myCards = myDeck[i].getPartialDeck(myDeck[i].getnumCards()); + String before = Arrays.toString(myCards); + + System.out.println("Test " + (i + 1) + ":"); + System.out.println("The cards before sorting are\n" + before); + System.out.println("------------------------------------"); + + Card[] testCards = myCards.clone(); + mySort.insertionSort(testCards); + String after = Arrays.toString(testCards); + + System.out.println("The cards after Insertion Sort are\n" + after); + if (after.equals(myDeck[i].getSortedDeck())) + System.out.println("Your Insertion Sort works correctly.\n"); + else + System.out.println("Something is wrong with your Insertion Sort.\n"); + + testCards = myCards.clone(); + mySort.mergeSort(testCards); + after = Arrays.toString(testCards); + + System.out.println("The cards after Merge Sort are\n" + after); + if (after.equals(myDeck[i].getSortedDeck())) + System.out.println("Your Merge Sort works correctly."); + else + System.out.println("Something is wrong with your Merge Sort."); + + System.out.println("====================================\n"); + } + + } + catch (Exception e) + { + System.out.println("Error occurred: " + e.getMessage()); + } + } +}