// Arup Guha
// 2/17/2018
// Tests the interfaces Addable and Scorable with two classes that implement these interfaces.

import java.util.*;

public class TestScorable {

	public static void main(String[] args) {

		// We can have references of type Scorable, but not objects.
		Scorable[] stuff = new Scorable[5];
		stuff[0] = new Card("Clubs", 7);
		stuff[1] = new Monster("Godzilla");
		((Monster)stuff[1]).addMove("punch");
		((Monster)stuff[1]).addMove("stepon");
		((Monster)stuff[1]).addMove("laser");
		stuff[2] = new Card("Diamonds", 4);
		stuff[3] = new Monster("Fizz");
		((Monster)stuff[3]).addMove("fish");
		((Monster)stuff[3]).addMove("sleep");
		stuff[4] = new Monster("Lazy");

		// We can call getScore and it compiles.
		for (int i=0; i<stuff.length; i++)
			System.out.println(stuff[i]+": "+stuff[i].getScore());

		// We have to cast a bunch of stuff here, but it works!)
		Monster biggie = ((Monster)stuff[1]).add((Monster)stuff[3]);
		System.out.println(biggie);

		Monster weird = ((Monster)stuff[4]).add((Monster)stuff[1]);
		System.out.println(weird);
	}
}