Exemplo n.º 1
0
        static void Main(string[] args)
        {
            // [1] 그냥 호출
            Driver.Right();
            Driver.Left();
            Driver.Boost();

            Console.WriteLine();

            // [2] 대리자 선언 할당 같이
            //Driver driver = new Driver(); // static으로 만들면 인스턴트 만들지 X
            // 집가는 대리자 생성
            GoHome goHome = new GoHome(Driver.Left);

            goHome += Driver.Right;
            goHome += Driver.Boost;
            goHome.Invoke();

            Console.WriteLine();

            //[3] 대리자 선언, 할당 따로
            Meeting meeting;

            meeting  = new Meeting(Hi);
            meeting += LTNS;
            meeting();

            Console.WriteLine();

            //[4] 스태틱 메서드 아닐때
            Insa    insa     = new Insa();
            Meeting meeting2 = new Meeting(insa.Bye); // 다른 대리자는 인스턴트 이름 다르게 생성

            meeting2();
        }
Exemplo n.º 2
0
    public Sequencer <BlackBoard> BuildTree(BlackBoard blackboard)
    {
        Sequencer <BlackBoard> rootNode = new Sequencer <BlackBoard>(blackboard);

        Iddle iddleNode = new Iddle(blackboard);

        rootNode.AddChild(iddleNode);

        Sequencer <BlackBoard> mining = new Sequencer <BlackBoard>(blackboard);

        rootNode.AddChild(mining);
        GoToMine goMineNode = new GoToMine(blackboard);
        Mine     mineNode   = new Mine(blackboard);

        mining.AddChild(goMineNode);
        mining.AddChild(mineNode);

        Sequencer <BlackBoard> depositing = new Sequencer <BlackBoard>(blackboard);

        rootNode.AddChild(depositing);
        GoHome  goHomeNode = new GoHome(blackboard);
        Deposit depoNode   = new Deposit(blackboard);

        depositing.AddChild(goHomeNode);
        depositing.AddChild(depoNode);



        return(rootNode);
    }
Exemplo n.º 3
0
        static void Main(string[] args)
        {
            // [1] 메서드 따로 따로 호출
            CarDriver.GoLeft();
            CarDriver.GoForward();
            CarDriver.GoRight();

            // [2] 대리자를 통한 메서드 등록 및 호출
            GoHome go = new GoHome(CarDriver.GoLeft);

            go += new GoHome(CarDriver.GoForward);
            go += new GoHome(CarDriver.GoRight);
            go += new GoHome(CarDriver.GoLeft); // 등록
            go -= new GoHome(CarDriver.GoLeft); // 취소
            go();                               // 집에 갑시다... 한번 호출

            console.log();

            // [3] 대리자를 통해서 한번에 2개의 메서드 호출...
            Say say;                // [a] 대리자 형 변수 선언

            say  = new Say(Hi);     // [b] Hi 메서드 지정
            say += new Say(Hello);  // [c] Hello 메서드 지정
            say();                  // [d] 대리자로 두 개의 메서드 호출

            // [4] 대리자를 통해서 호출
            Insa insa = new Insa();
            Say  say2 = new Say(insa.Bye);

            say2 += new Say(insa.Bye);
            say2();
        }
Exemplo n.º 4
0
    void Start()
    {
        text = GameObject.FindGameObjectWithTag("PlayerWinsText").GetComponent <TextMeshProUGUI>();

        chooseHomeScript = FindObjectOfType <GoHome>();
        thisHomeBush     = this.gameObject;
    }
Exemplo n.º 5
0
 void HandleNavigationManagerPropertyChanged(object sender, PropertyChangedEventArgs e)
 {
     switch (e.PropertyName)
     {
     case NavigationManager.Properties.IsHome:
         GoHome.RaiseExecuteChanged();
         break;
     }
 }
Exemplo n.º 6
0
        public MainViewModel()
        {
            Router = new RoutingState();

            GoHome = ReactiveCommand.CreateFromObservable(() => Router.NavigateAndReset.Execute(new TitleViewModel(this)));

            GoBack = Router.NavigateBack;

            GoHome.Execute().Subscribe();
        }
Exemplo n.º 7
0
    void Start()
    {
        currentHunger = 0;
        maxHunger     = 5;

        bugText.text = "Bugs: " + currentHunger + "/" + maxHunger;

        chameleonIsFull  = false;
        chooseHomeScript = FindObjectOfType <GoHome>();
    }
Exemplo n.º 8
0
        public override bool AfterExitingRabbitHole()
        {
            BabyBasket babyBasket = Actor.GetObjectInRightHand() as BabyBasket;
            GoHome     goHome     = GoHome.Singleton.CreateInstance(Actor.LotHome, Actor, GetPriority(), false, false) as GoHome;

            if (SimFollowers != null)
            {
                goHome.SimFollowers = new List <Sim>();

                foreach (Sim sim in SimFollowers)
                {
                    if (sim.LotHome != Actor.LotHome)
                    {
                        Relationship relationship = Relationship.Get(Actor, sim, false);

                        if (relationship == null || relationship.LTR.Liking < Pregnancy.kLikingToGoHomeWithMother)
                        {
                            continue;
                        }

                        sim.GreetSimOnLot(Actor.LotHome);
                    }

                    goHome.SimFollowers.Add(sim);
                }
            }

            Actor.InteractionQueue.PushAsContinuation(goHome, true);
            GoInsideLot instance = GoInsideLot.Singleton.CreateInstance(Actor.LotHome, Actor, GetPriority(), false, false) as GoInsideLot;

            Actor.InteractionQueue.PushAsContinuation(instance, true);

            if (babyBasket != null)
            {
                Pregnancy.PutDownBabyBasket instance2 = Pregnancy.PutDownBabyBasket.Singleton.CreateInstance(babyBasket, Actor, GetPriority(),
                                                                                                             false, false) as Pregnancy.PutDownBabyBasket;
                Actor.InteractionQueue.PushAsContinuation(instance2, true);
                Pregnancy.SetupPickUpBabiesInBasket(Actor, babyBasket, GetPriority(), false, false);
            }

            return(base.AfterExitingRabbitHole());
        }
Exemplo n.º 9
0
        private bool FinishAdoption(Sim pet)
        {
            if (pet != null)
            {
                pet.InteractionQueue.CancelAllInteractions();
                pet.SetObjectToReset();

                SpeedTrap.Sleep();

                pet.UpdateBlockTime();
                Actor.ShowTNSAndPlayStingIfSelectable("sting_pet_adopt", TNSNames.AdoptLitterTNS, Target, pet, null, null, pet.IsFemale, false, new object[] { pet });

                if (pet == Sim.ActiveActor)
                {
                    LotManager.SelectNextSim();
                }

                if (pet.Household != null)
                {
                    pet.Household.Remove(pet.SimDescription);
                }
                Actor.Household.Add(pet.SimDescription);

                Relationships.CheckAddHumanParentFlagOnAdoption(Actor.SimDescription, pet.SimDescription);

                if (Actor.Partner != null)
                {
                    Relationships.CheckAddHumanParentFlagOnAdoption(Actor.Partner, pet.SimDescription);
                }

                InteractionInstance entry = new SocialInteractionA.Definition("Talk To Pet", new string[0x0], null, false).CreateInstance(pet, Actor, GetPriority(), false, false);

                List <Sim> list = new List <Sim>();
                list.Add(pet);
                GoHome home = GoHome.Singleton.CreateInstance(Actor.LotHome, Actor, GetPriority(), false, false) as GoHome;
                home.SimFollowers = list;

                Actor.InteractionQueue.AddNext(home);
                return(Actor.InteractionQueue.AddNext(entry));
            }
            return(false);
        }
Exemplo n.º 10
0
 private void GoHomeButton_Click(object sender, EventArgs e)
 {
     this.Dismiss();
     GoHome?.Invoke(this, new EventArgs());
 }
Exemplo n.º 11
0
        private void buttonAddQuestion_Click(object sender, RoutedEventArgs e)
        {
            if (question.Id == 0)
            {
                bool dateCheck = true;
                foreach (var item in questionsRepo.Data)
                {
                    if ((DateTime)datePicker.SelectedDate == item.Date)
                    {
                        dateCheck = false;
                        break;
                    }
                }
                if (dateCheck && (DateTime)datePicker.SelectedDate >= DateTime.Now.Date)
                {
                    List <Answer> newAnswers = new List <Answer>();
                    if (!String.IsNullOrEmpty(textBoxQuestionText.Text))
                    {
                        var newDate     = (DateTime)datePicker.SelectedDate;
                        var newQuestion = new Question
                        {
                            Date        = newDate.Date,
                            Text        = textBoxQuestionText.Text,
                            Explanation = textBoxExplanation.Text,
                        };
                        int           textCount  = 0;
                        int           checkCount = 0;
                        int           checkNull  = 0;
                        List <Answer> answers    = new List <Answer>
                        {
                            new Answer
                            {
                                Text      = textBox1.Text,
                                IsCorrect = (bool)checkBox1.IsChecked
                            },
                            new Answer
                            {
                                Text      = textBox2.Text,
                                IsCorrect = (bool)checkBox2.IsChecked
                            },
                            new Answer
                            {
                                Text      = textBox3.Text,
                                IsCorrect = (bool)checkBox3.IsChecked
                            },
                            new Answer
                            {
                                Text      = textBox4.Text,
                                IsCorrect = (bool)checkBox4.IsChecked
                            }
                        };
                        foreach (var item in answers)
                        {
                            if (!String.IsNullOrEmpty(item.Text))
                            {
                                textCount++;
                            }
                            if (item.IsCorrect)
                            {
                                checkCount++;
                            }
                            if (String.IsNullOrEmpty(item.Text) && item.IsCorrect)
                            {
                                checkNull++;
                            }
                        }
                        if (textCount > 0)
                        {
                            if (checkCount > 0)
                            {
                                if (checkNull == 0)
                                {
                                    foreach (var item in answers)
                                    {
                                        if (!String.IsNullOrEmpty(item.Text))
                                        {
                                            newAnswers.Add(item);
                                        }
                                    }
                                    newQuestion.Answers = newAnswers;
                                    questionsRepo.AddItem(newQuestion);

                                    MessageBox.Show("Your question was successefully added", "Success", MessageBoxButton.OK, MessageBoxImage.Information);
                                    GoHome?.Invoke();
                                }
                                else
                                {
                                    MessageBox.Show("You can't pick empty answer as a correct one", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                                }
                            }
                            else
                            {
                                MessageBox.Show("You can't create question without choosing at least one correct answer", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                            }
                        }
                        else
                        {
                            MessageBox.Show("You can't create question without answers", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                        }
                    }
                    else
                    {
                        MessageBox.Show("You can't create question without text", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                    }
                }
                else
                {
                    MessageBox.Show("You can't create question for this date", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                }
            }


            //редактирование вопроса и ответов к нему

            else
            {
                bool dateCheck = true;
                if (question.Date != (DateTime)datePicker.SelectedDate)
                {
                    foreach (var item in questionsRepo.Data)
                    {
                        if ((DateTime)datePicker.SelectedDate == item.Date)
                        {
                            dateCheck = false;
                            break;
                        }
                    }
                }
                if (dateCheck && (DateTime)datePicker.SelectedDate >= DateTime.Now.Date)
                {
                    List <Answer> answers = new List <Answer>();
                    question.Date        = (DateTime)datePicker.SelectedDate;
                    question.Explanation = textBoxExplanation.Text;
                    question.Text        = textBoxQuestionText.Text;

                    if (!String.IsNullOrEmpty(question.Text))
                    {
                        var  checkBoxes    = GetCheckBoxes();
                        bool res           = true;
                        int  checkNull     = 0;
                        int  textCount     = 0;
                        var  removeAnswers = new List <Answer>();
                        foreach (var answer in question.Answers)
                        {
                            CheckBox cb = checkBoxes.FirstOrDefault(c => chbAnswerDict[c.Name] == answer.Id);
                            var      tb = cb.Content as TextBox;
                            if (!String.IsNullOrEmpty(tb.Text))
                            {
                                textCount++;
                                answer.Text      = tb.Text;
                                answer.IsCorrect = (bool)cb.IsChecked;
                                if ((bool)cb.IsChecked)
                                {
                                    checkNull++;
                                }
                                //answerRepo.EditItem(answer, answer.Id);
                            }
                            else if ((bool)cb.IsChecked)
                            {
                                MessageBox.Show("You can't pick empty answer as a correct one", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                                res = false;
                            }
                            else
                            {
                                removeAnswers.Add(answer);
                            }
                            checkBoxes.Remove(cb);
                        }

                        if (checkBoxes.Count() > 0)
                        {
                            foreach (var cb in checkBoxes)
                            {
                                var tb = cb.Content as TextBox;
                                if (!String.IsNullOrEmpty(tb.Text))
                                {
                                    var newAnswer = new Answer
                                    {
                                        Text      = tb.Text,
                                        IsCorrect = (bool)cb.IsChecked
                                    };
                                    if ((bool)cb.IsChecked)
                                    {
                                        checkNull++;
                                    }
                                    textCount++;
                                    question.Answers.Add(newAnswer);
                                }
                                else if ((bool)cb.IsChecked)
                                {
                                    MessageBox.Show("You can't pick empty answer as a correct one", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                                    res = false;
                                }
                            }
                        }
                        if (textCount > 0)
                        {
                            if (checkNull > 0)
                            {
                                if (res)
                                {
                                    foreach (var item in removeAnswers)
                                    {
                                        question.Answers.Remove(item);
                                        answerRepo.RemoveItem(item);
                                    }
                                    questionsRepo.EditItem(question, question.Id);
                                    MessageBox.Show("Your question was successefully edited", "Success", MessageBoxButton.OK, MessageBoxImage.Information);
                                    GoHome?.Invoke();
                                }
                            }
                            else
                            {
                                MessageBox.Show("You can't create question without choosing at least one correct answer", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                            }
                        }
                        else
                        {
                            MessageBox.Show("You can't create question without answers", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                        }
                    }
                    else
                    {
                        MessageBox.Show("You can't create question without text", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                    }
                }
                else
                {
                    MessageBox.Show("You can't create question for this date", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                }
            }
        }
Exemplo n.º 12
0
        static void Main(string[] args)
        {
            #region 单例测试

            //for (int i = 0; i < 10; i++)
            //{
            //    Console.WriteLine("实例ID:{0}", Singleton.Instance.InstanceId);
            //}

            #endregion

            #region 工厂模式

            //Database database = DatabaseFactory.CreateDatabase<SqlServerDatabase>();
            //database.ExecuteSql();

            //database = DatabaseFactory.CreateDatabase<MySqlDatabase>();
            //database.ExecuteSql();

            //database = DatabaseFactory.CreateDatabase<OracleDatabase>();
            //database.ExecuteSql();

            #endregion

            #region 抽象工厂模式

            //CarFactory carFactory = new SHFactory();
            //Car car = carFactory.CreateGeep();
            //car.Run();
            //car = carFactory.CreateSuv();
            //car.Run();
            //car = carFactory.CreateTruck();
            //car.Run();

            //carFactory = new GZFactory();
            //car = carFactory.CreateGeep();
            //car.Run();
            //car = carFactory.CreateSuv();
            //car.Run();
            //car = carFactory.CreateTruck();
            //car.Run();

            #endregion

            #region 模板方法模式

            //Daily daily;

            //Console.WriteLine("我的日常:");
            //daily = new MyDaily();
            //daily.Routine();

            //Console.WriteLine("老板的日常:");
            //daily = new BossDaily();
            //daily.Routine();

            #endregion

            #region 代理模式

            //IDepartmentManager assistant = new DepartAssistant(new Minister());
            //assistant.Apply();
            //assistant.Appove();
            //assistant.Loan();

            #endregion

            #region 建造者模式

            //var maJiang = new MaJiang();
            //var pocker = new Pocker();
            //var sing = new Sing();

            //var entertainmentBuilder = new EntertainmentBuilder();

            //Console.WriteLine("张三娱乐:");
            //var zhangsanEntertainment = entertainmentBuilder.Build(new List<Activity> { maJiang, pocker });
            //zhangsanEntertainment.HaveFun();
            //Console.WriteLine();

            //Console.WriteLine("李四娱乐:");
            //var lisiEntertainment = entertainmentBuilder.Build(new List<Activity> { maJiang, sing });
            //lisiEntertainment.HaveFun();
            //Console.WriteLine();

            //Console.WriteLine("王五娱乐:");
            //var wangwuEntertainment = entertainmentBuilder.Build(new List<Activity> { sing });
            //wangwuEntertainment.HaveFun();
            //Console.WriteLine();

            //Console.WriteLine("赵六娱乐:");
            //var zhaoliuEntertainment = entertainmentBuilder.Build(new List<Activity> { maJiang, pocker, sing });
            //zhaoliuEntertainment.HaveFun();
            //Console.WriteLine();

            #endregion

            #region 装饰模式

            //Woman fengjie = new CommonWoman();
            //fengjie.Describe();

            //Woman liuyifei = new CommonWoman();
            //liuyifei = new ColoredHairWoman(liuyifei);
            //liuyifei = new LongLeggedWoman(liuyifei);
            //liuyifei = new PlentifulWoman(liuyifei);
            //liuyifei.Describe();

            #endregion

            #region 策略模式

            Console.WriteLine("我要回家:");

            GoHome homing = new GoHome(new Walking());
            homing.Transport();

            homing = new GoHome(new Bus());
            homing.Transport();

            homing = new GoHome(new Metro());
            homing.Transport();

            #endregion

            Console.Read();
        }