Back to slide -- Keyboard shortcut: 'u'        next -- Keyboard shortcut: 'n'  Annotated program -- Keyboard shortcut: 't'    Die-variants/event-example/die.cs - The die class with history and dieNotifier.Lecture 6 - slide 14 : 20
Program 1

using System;
using System.Collections.Generic;

public delegate void Notifier(string message);  

public class Die {   
                     
  private int numberOfEyes;
  private Random randomNumberSupplier; 
  private int maxNumberOfEyes;
  private List<int> history;   
  public event Notifier twoSixesInARow;  
                                         
  public int NumberOfEyes{
     get {return numberOfEyes;}
  }

  public Die (): this(6){}   

  public Die (int maxNumberOfEyes){   
    randomNumberSupplier = new Random(unchecked((int)DateTime.Now.Ticks));
    this.maxNumberOfEyes = maxNumberOfEyes;
    numberOfEyes = randomNumberSupplier.Next(1, maxNumberOfEyes + 1);
    history = new List<int>();
    history.Add(numberOfEyes);
  }
    
  public void Toss (){                                                     
    numberOfEyes = randomNumberSupplier.Next(1,maxNumberOfEyes + 1);
    history.Add(numberOfEyes);                                             
    if (DoWeHaveTwoSixesInARow(history))                                   
       twoSixesInARow("Two sixes in a row");                               
  }                                                                        

  private bool DoWeHaveTwoSixesInARow(List<int> history){                  
    int histLength = history.Count;                                        
    return histLength >= 2 &&                                              
           history[histLength-1] == 6 &&                                   
           history[histLength-2] == 6;
  }
       
  public override String ToString(){
    return String.Format("Die[{0}]: {1}", maxNumberOfEyes, NumberOfEyes);
  }
}