Example #1
0
        /// <summary>
        /// run a playing session for a day
        /// </summary>
        /// <returns>true if the user successfully end the session (all cards are green)</returns>
        public bool Play()
        {
            try
            {
                //first, loads the deck from disc
                var deck = _persistance.LoadDeck();
                //load the session data from disc (if any)
                var sessiondata = _persistance.LoadSessionState();

                _session = new AnkiSession(deck, sessiondata);

                Helpers.ClearDisplay();
                Helpers.Display(new String('-', 30));
                Helpers.Display("Hi, welcome to the ANKI learning game");
                Helpers.Display(new String('-', 30));
                Helpers.Newline(2);
                if (_session.CurrentDay == 1)
                {
                    Helpers.Display("this your first session");
                }
                else
                {
                    DisplayBoxes("Last session review", true);
                    Helpers.Display($"Be prepared for the session of the day #{_session.CurrentDay}");
                }
                Helpers.Newline(2);


                if (sessiondata == null)
                {
                    Helpers.Pause("to start");
                }
                else
                {
                    Helpers.Display("press s to start the day session");
                    Helpers.Display("press x to delete the last saved session and start again from a brand new deck");
                    char userchoice = Helpers.ReadUserChoice(new char[] { 's', 'x' });
                    if (userchoice == 'x')
                    {
                        _persistance.DropSessionStore();
                        return(Play());
                    }
                }

                StartSessionQuizz();

                bool result = EndSessionQuizz();

                if (result)
                {
                    _persistance.DropSessionStore();
                }
                else
                {
                    _persistance.PersistSessionState(_session.GetSessiondata());
                }

                return(result);
            }
            catch (Exception ex)
            {
                Helpers.Display($"We are sorry but an error occured : {ex.Message}.", ConsoleColor.Red);
                Helpers.Display("Exiting program.");
                return(false);
            }
        }