Пример #1
0
        /// <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);
        }
        public graellaSimpaties(Escenari escenari, int numConvidats)
        {
            InitializeComponent();
            this.esc           = escenari;
            this.num_convidats = numConvidats;

            iniciaGraella();
        }
Пример #3
0
        /// <summary>
        /// inicia un escenari amb files, columnes, homes dones etc...
        /// </summary>
        private void iniciaEscenari()
        {
            esc = new Escenari(num_files, num_columnes);
            grdEscenari.ColumnDefinitions.Clear();
            grdEscenari.RowDefinitions.Clear();
            grdEscenari.Children.Clear();

            // Generem l'escenari
            PintarEscenari();

            // Generem totes les persones de l'escenari
            CrearPersones();

            // Assignem les simpaties a tots els convidats anvers tots els convidats menys a ell mateix i als cambrers
            assignarSimpaties();

            grdEscenari.ShowGridLines = true;
        }
Пример #4
0
        /// <summary>
        /// Atraccio de persona sobre una determinada posicio
        /// </summary>
        /// <param name="fil">Fila de la posició</param>
        /// <param name="col">Columan de la posició</param>
        /// <param name="esc">Escenari on estan situats</param>
        /// <returns>Atracció quantificada</returns>
        private double Atraccio(int fil, int col, Escenari esc)
        {
            return(Atraccio(fil, col, esc.TaulaPersones));
            //double resultat = 0;
            //double distancia = 0;
            //Posicio referencia = new Posicio(fil, col);
            //Posicio actual;
            //int interes;
            //for (int i = 0; i < esc.Files; i++)
            //{
            //    for(int j=0;j<esc.Columnes;j++)
            //    {
            //        actual = esc[i, j];
            //        if (!actual.Buida&&actual!=this)
            //        {
            //            distancia = Posicio.Distancia(referencia, actual);
            //            interes = Interes(actual);
            //            resultat += interes / distancia;
            //        }
            //    }
            //}

            //return resultat;
        }
Пример #5
0
 public TaulaPersones(Escenari e)
 {
     gent     = new Dictionary <string, Persona>();
     escenari = e;
 }
Пример #6
0
 public MainWindow()
 {
     InitializeComponent();
     esc = new Escenari(num_files, num_columnes);
 }