/// <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(); }
/// <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; }
/// <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; }
public TaulaPersones(Escenari e) { gent = new Dictionary <string, Persona>(); escenari = e; }
public MainWindow() { InitializeComponent(); esc = new Escenari(num_files, num_columnes); }