Browse Source

Added files

master
Raphael Roberts 6 years ago
commit
092da7ba35
  1. 39
      Card.java
  2. 102
      Deck.java
  3. 31
      SortingAlgs.java
  4. 59
      TestCardSorting.java

39
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];
}
}

102
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;
}
}

31
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
}
}

59
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());
}
}
}
Loading…
Cancel
Save