コード例 #1
0
ファイル: Escenari.cs プロジェクト: recarens/ReunioSocialV2
 /// <summary>
 /// Fa que totes les persones facin un moviment
 /// </summary>
 public void Cicle()
 {
     foreach (Persona p in tp)
     {
         Direccio d = p.OnVaig(this);
         if (d == Direccio.Amunt)
         {
             this.Moure(p.Fila, p.Columna, p.Fila - 1, p.Columna);
         }
         else if (d == Direccio.Avall)
         {
             this.Moure(p.Fila, p.Columna, p.Fila + 1, p.Columna);
         }
         else if (d == Direccio.Dreta)
         {
             this.Moure(p.Fila, p.Columna, p.Fila, p.Columna + 1);
         }
         else if (d == Direccio.Esquerra)
         {
             this.Moure(p.Fila, p.Columna, p.Fila, p.Columna - 1);
         }
         else if (d == Direccio.Quiet)
         {
             this.Moure(p.Fila, p.Columna, p.Fila, p.Columna);
         }
     }
 }
コード例 #2
0
ファイル: Persona.cs プロジェクト: fxbp/ReunioSocial
        /// <summary>
        /// Se li passa un string i retorna l'enumeració.
        /// </summary>
        /// <param name="dir"></param>
        /// <returns></returns>
        private Direccio getDireccioEnum(string dir)
        {
            Direccio res = Direccio.Amunt;

            switch (dir)
            {
            case "Amunt":
                res = Direccio.Amunt;
                break;

            case "Avall":
                res = Direccio.Avall;
                break;

            case "Esquerre":
                res = Direccio.Esquerra;
                break;

            case "Dreta":
                res = Direccio.Dreta;
                break;

            case "Quiet":
                res = Direccio.Quiet;
                break;
            }
            return(res);
        }
コード例 #3
0
ファイル: WndEscenari.xaml.cs プロジェクト: fxbp/ReunioSocial
        private void Transicio(StackPanel sp, Direccio dir)
        {
            Storyboard         story          = new Storyboard();
            ThicknessAnimation animacioStack1 = new ThicknessAnimation();
            Thickness          marginOri      = sp.Margin;
            Thickness          margin         = RetornaDireccioMargin(dir);



            story.Children.Add(animacioStack1);

            //sp.SetValue(Grid.ZIndexProperty, 10);
            animacioStack1.From         = marginOri;
            animacioStack1.To           = margin;
            animacioStack1.Duration     = TimeSpan.FromSeconds(SEGONSPAUSA / 2);
            animacioStack1.FillBehavior = FillBehavior.HoldEnd;

            Storyboard.SetTarget(animacioStack1, sp);
            Storyboard.SetTargetProperty(animacioStack1, new PropertyPath(Grid.MarginProperty));

            story.Begin();
            Pausa(SEGONSPAUSA);
            // Thread.Sleep(TimeSpan.FromSeconds(SEGONSPAUSA));


            sp.BeginAnimation(Grid.MarginProperty, null);
        }
コード例 #4
0
ファイル: Escenari.cs プロジェクト: fxbp/ReunioSocial
        private Posicio CalculaPosicioNova(int fil, int col, Direccio direccio)
        {
            Posicio pos = new Posicio();

            switch (direccio)
            {
            case Direccio.Amunt:
                pos.Fila    = fil - 1;
                pos.Columna = col;
                break;

            case Direccio.Avall:
                pos.Fila    = fil + 1;
                pos.Columna = col;
                break;

            case Direccio.Dreta:
                pos.Fila    = fil;
                pos.Columna = col + 1;
                break;

            case Direccio.Esquerra:
                pos.Fila    = fil;
                pos.Columna = col - 1;
                break;

            default:
                pos.Fila    = fil;
                pos.Columna = col;
                break;
            }

            return(pos);
        }
コード例 #5
0
ファイル: Persona.cs プロジェクト: fxbp/ReunioSocial
        /// <summary>
        /// Retorna el valor de la clau del diccionari referent a la direcció que reb.
        /// </summary>
        /// <param name="d"></param>
        /// <returns></returns>
        private string getDireccio(Direccio d)
        {
            string s = "";

            switch (d)
            {
            case Direccio.Amunt:
                s = "Amunt";
                break;

            case Direccio.Avall:
                s = "Avall";
                break;

            case Direccio.Dreta:
                s = "Dreta";
                break;

            case Direccio.Esquerra:
                s = "Esquerre";
                break;

            case Direccio.Quiet:
                s = "Quiet";
                break;
            }
            return(s);
        }
コード例 #6
0
ファイル: Persona.cs プロジェクト: fxbp/ReunioSocial
        /// <summary>
        /// Decideix quin serà el següent moviment que farà la persona
        /// </summary>
        /// <param name="esc">Escenari on esta situada la persona</param>
        /// <returns>Una de les 5 possibles direccions (Quiet, Amunt, Avall, Dreta, Esquerra</returns>
        public Direccio OnVaig(Escenari esc)
        {
            //Genero un graudirecció nou que m'ajudarà a calcular i a fer el codi del on vaig més senzill
            // Aquesta clase per defecte s'instancia amb els valors a 0.
            GrauDireccio gd = new GrauDireccio(r);

            // Assigno les posicions sempre que siguin assignables.
            gd.Assigna(Direccio.Quiet, Atraccio(fila, columna, esc.TaulaPersones));
            if (esc.DestiValid(fila + 1, columna))
            {
                gd.Assigna(Direccio.Avall, Atraccio(fila + 1, columna, esc.TaulaPersones));
            }
            if (esc.DestiValid(fila - 1, columna))
            {
                gd.Assigna(Direccio.Amunt, Atraccio(fila - 1, columna, esc.TaulaPersones));
            }
            if (esc.DestiValid(fila, columna - 1))
            {
                gd.Assigna(Direccio.Esquerra, Atraccio(fila, columna - 1, esc.TaulaPersones));
            }
            if (esc.DestiValid(fila, columna + 1))
            {
                gd.Assigna(Direccio.Dreta, Atraccio(fila, columna + 1, esc.TaulaPersones));
            }
            // Retorno la que té preferència. En cas d'empat ja sap calcular-se el random ella sola gràcies a que li he passat anteriorment.
            actual = gd.DireccióResultat();
            return(actual);
        }
コード例 #7
0
        public MainWindow()
        {
            InitializeComponent();
            timer    = new DispatcherTimer();
            capRobot = new List <Robot>();
            tresor   = new List <Tresor>();
            capRobot.Add(new Robot(width, height));
            tresor.Add(new Tresor(random.Next(0, 37) * 10, random.Next(0, 35) * 10));
            timer.Interval = new TimeSpan(0, 0, 0, 0, 100);

            direccio    = Direccio.Down;
            timer.Tick += Timer_Tick;
        }
コード例 #8
0
ファイル: WndEscenari.xaml.cs プロジェクト: fxbp/ReunioSocial
        private Thickness RetornaDireccioMargin(Direccio dir)
        {
            Thickness th = new Thickness();

            switch (dir)
            {
            case Direccio.Amunt:
                th.Top = -ALTSTACK * 2;
                break;

            case Direccio.Avall:
                th.Bottom = -ALTSTACK * 2;
                break;

            case Direccio.Dreta:
                th.Right = -AMPLESTACK * 2;
                break;

            case Direccio.Esquerra:
                th.Left = -AMPLESTACK * 2;
                break;
            }
            return(th);
        }
コード例 #9
0
ファイル: Persona.cs プロジェクト: fxbp/ReunioSocial
        /// <summary>
        /// Retorna un nombre referent a la càrrega de la direcció.
        /// </summary>
        /// <param name="d"></param>
        /// <returns></returns>
        public double Extreu(Direccio d)
        {
            string dir = getDireccio(d);

            return(Graus[dir]);
        }
コード例 #10
0
ファイル: Persona.cs プロジェクト: fxbp/ReunioSocial
        /// <summary>
        /// Switch que ens permet definir la direcció.
        /// </summary>
        /// <param name="d"></param>
        /// <param name="grau"></param>
        public void Assigna(Direccio d, double grau)
        {
            string dir = getDireccio(d);

            Graus[dir] = grau;
        }