/// <summary> /// Check the state of the board - Is there a winner? /// </summary> /// <returns> /// LarvaWin if larva is in winning row /// BirdWin if the birds have eaten the larva /// Running if no winner /// </returns> public GameState CheckForWinner() { var birdsCanMove = false; // Check if any bird has captured the larva foreach (var bird in Birds) { // Also check that at least one bird can move birdsCanMove |= bird.CanMove(); if (bird.Pos == Larva.Pos) { return(GameState.BirdWin); } } if (!birdsCanMove) { return(GameState.LarvaWin); } // Check if the larva is in winning row if (Larva.Pos.Row == NUM_ROWS - 1) { return(GameState.LarvaWin); } if (!Larva.CanMove()) { return(GameState.BirdWin); } // No winner yet return(GameState.Running); }