Beispiel #1
0
        public void StartNewGame(Func <string, MYCIN_TERM_FACTOR> AskFunc)
        {
            Characters = new List <character>();
            Questions  = new List <question>();
            foreach (var item in dbe.Characters)
            {
                Characters.Add(new character(item));
            }
            foreach (var item in dbe.Questions)
            {
                Questions.Add(new question(item));
            }

            TrackAnsweredQuestions    = new Stack <question>();
            TrackFirstCharacterChange = new Stack <character>();

            var RandomCharacter = new character(Characters.PickRandom());
            var RandomQuestion  = RandomCharacter.questions.PickRandom();

            var qIndex = Questions.FindIndex(x => x.id == RandomQuestion.id);
            var ans    = AskFunc(Questions[qIndex].value);

            Questions[qIndex].Answer = ans;

            TrackFirstCharacterChange.Push(new character(Characters.FirstOrDefault()));
            TrackAnsweredQuestions.Push(Questions[qIndex]);

            foreach (var c in Characters)
            {
                c.questions.Shuffle();
            }
        }
Beispiel #2
0
 public long Add(character character)
 {
     db.characters.Add(character);
     db.SaveChanges();
     Load();
     return(db.characters.ToList().LastOrDefault().id);
 }
Beispiel #3
0
 public void Update(int characterID, character newCharacterData)
 {
     db.Entry(newCharacterData).State       = EntityState.Modified;
     db.Configuration.ValidateOnSaveEnabled = false;
     db.SaveChanges();
     db.Configuration.ValidateOnSaveEnabled = true;
     Load();
 }
 public character(character c)
 {
     this.id            = c.id;
     this.name          = c.name;
     this.description   = c.description;
     this.img_path      = c.img_path;
     this.Score         = c.Score;
     this.ScoreTracking = new Stack <double>(c.ScoreTracking.Reverse());
     this.questions     = new List <question>(c.questions);
 }
Beispiel #5
0
 private int FindNextQuestionIndex(character c)
 {
     foreach (var item in c.questions)
     {
         var qIndex = Questions.FindIndex(x => x.id == item.id);
         if (!Questions[qIndex].IsAnswered)
         {
             return(qIndex);
         }
     }
     return(-1);
 }
Beispiel #6
0
        public async Task Append()
        {
            await Task.Run(() =>
            {
                try
                {
                    var fileLines = File.ReadAllLines(filepath, Encoding.Default);
                    if (fileLines.FirstOrDefault() == defaultStartLine ||
                        string.IsNullOrEmpty(fileLines.FirstOrDefault()))
                    {
                        BeforeReturn();
                        return;
                    }
                    var newCharacter = new character();

                    newCharacter.name        = fileLines[0];
                    newCharacter.description = fileLines[1];
                    newCharacter.img_path    = string.Empty;

                    var newCharacter_Questons = fileLines.Skip(3).ToArray();

                    fileLines = null;

                    var qCollection = HandleQuestions(newCharacter_Questons);
                    if (qCollection.Count == 0)
                    {
                        BeforeReturn();
                        return;
                    }

                    newCharacter.questions = qCollection;
                    newCharacter.id        = db.Add(newCharacter);
                    newCharacter.img_path  = string.Format("Design/characters/{0}.png", newCharacter.id);
                    db.Update((int)newCharacter.id, newCharacter);

                    new Bitmap(100, 100).Save(newCharacter.img_path);
                    BeforeReturn();
                    return;
                }
                catch
                {
                    BeforeReturn();
                    return;
                }
            });
        }