import java.util.*; public class Compete { private Queue myDiscards; /** * Construct with empty discard pile */ public Compete() { myDiscards = new ListQueue(); } /** * precondition: myDiscards is empty * Simulate one round of Compete. */ public void oneRound(Queue pile1, Queue pile2) { while (true) { if (pile1.isEmpty() && pile2.isEmpty()) { break; } else if (pile1.isEmpty()) { appendQueue(pile2, myDiscards); break; } else if (pile2.isEmpty()) { appendQueue(pile1, myDiscards); break; } Card c1 = (Card) pile1.dequeue(); Card c2 = (Card) pile2.dequeue(); if (c1.compareTo(c2) == 0) { myDiscards.enqueue(c1); myDiscards.enqueue(c2); } else if (c1.compareTo(c2) < 0) { appendQueue(pile2,myDiscards); pile2.enqueue(c1); pile2.enqueue(c2); break; } else { appendQueue(pile1, myDiscards); pile1.enqueue(c1); pile2.enqueue(c2); break; } } } /** * Remove all objects from source and put them * in destination in the order in which they're removed. */ private void appendQueue(Queue destination, Queue source) { while (! source.isEmpty()) { destination.enqueue(source.dequeue()); } } }