#TODO: Refactor events. Initialize w/ players?

class Event(object):
    def discard(self):
        pass

    def play(self):
        pass

    def peg(self):
        pass

    def muggins(self):
        pass


class OfflineEvent(Event):
    def discard(self, player):
        print("Your cards: {}".format(player.hand))
        discarded = []
        for _ in range(2):
            print("Player {}, Select a card (by index) to discard.".format(player.name))
            discarded.append(int(input()))
        return discarded

    def play(self, player):
        print("Your cards: {}".format(player.hand.unplayed))
        print("Select a card (by index) to play.")
        played = int(input())
        card = player.hand.play(played)
        return card

    def peg(self, player):
        print("Your cards: {}".format(player.hand))
        print("How many points in your hand?")
        score = int(input())
        return score

    def muggins(self):
        print("How many muggins?")
        points = int(input())
        return points


class MockEvent(Event):
    def discard(self, player):
        discarded = [0, 1]
        return discarded

    def play(self, player):
        played = 0
        card = player.hand.play(played)
        return card

    def peg(self, player):
        return 0

    def muggins(self):
        pass
@@ -251,35 +251,116 @@
 ard(self, player
+s
 ):%0A
+        crib = %5B%5D%0A        for player in players:%0A            discarded = %5B%5D%0A    
         print(%22Y
@@ -396,34 +396,24 @@
 hand
+.unplayed
 ))%0A    
-  
-  discarded = %5B%5D%0A
     
@@ -435,16 +435,20 @@
 nge(2):%0A
+    
         
@@ -532,32 +532,36 @@
 e))%0A            
+    
 discarded.append
@@ -583,32 +583,83 @@
         
-return discarded
+    crib.extend(player.hand.discard(discarded))%0A        return crib
 %0A%0A    de
@@ -1216,35 +1216,89 @@
 ard(self, player
+s
 ):%0A
+        crib = %5B%5D%0A        for player in players:%0A    
         discarde
@@ -1320,24 +1320,75 @@
     
+ 
-return discarded
+   crib.extend(player.hand.discard(discarded))%0A        return crib
 %0A%0A  

Change discard event to wait for and return both players discard choices.