/// <summary> /// Event que actualitza el valor quan es perd el focus, evalua si el valor ha canviat i si és vàlid. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void CanviValor(TextBox tb) { // REcopero el textbox //TextBox tb = (TextBox)e.Source; //Si s'ha actualitzat el valor algun cop i els valors son diferents. if (valor != default(int)) { //Recopero la fila i la columna on està int fila = (int)tb.GetValue(Grid.RowProperty); int columna = (int)tb.GetValue(Grid.ColumnProperty); // Recopero els tius dins de la fila i la columna. Convidat cFila = matriuSlots[fila, 0].ConvidatFila; Convidat cColumna = matriuSlots[0, columna].ConvidatColumna; //Actualitzo els valors dels convidats utilitzant el valor nou. if (cFila == cColumna) { cFila.PlusSexe = valor; } else { cFila[cColumna.Nom] = valor; } } MostraGraella(); }
/******************************** * Mètodes */ /// <summary> /// Retorna un valor resultant a sumar la simpatia de la persona amb el seu plus de sexe. /// </summary> /// <param name="actual"></param> /// <param name="agrada"></param> /// <returns></returns> public static int CalculaSimpatia(Convidat actual, Convidat agrada) { //provem sense el plus sexe aviam si queda mes clar on van per debugar int total = actual[agrada.Nom]; //if ((actual.EsHome() && !agrada.EsHome()) || (!actual.EsHome() && agrada.EsHome())) //total += actual.PlusSexe; return(total); }
//a partir daqui nomes serveix per crear l'escenari. en l'aplicacíó ja estara fet no caldra tornar-ho a fer aqui. private Escenari CrearEscenari(Random r) { Escenari esc = new Escenari(50, 50); List <Persona> persones = new List <Persona>(); Convidat conv = null; for (int i = 0; i < 30; i++) { int temp = r.Next(2); if (temp == 0) { Home h = new Home("Home" + i, r.Next(0, 3), r.Next(0, 8), r.Next(0, 8)); persones.Add(h); } else if (temp == 1) { Dona d = new Dona("Dona" + i, r.Next(0, 3), r.Next(0, 8), r.Next(0, 8)); persones.Add(d); } } foreach (Persona p in persones) { //Console.WriteLine(p); if (esc.DestiValid(p.Fila, p.Columna)) { esc.Posar(p); } } foreach (Persona p in esc.TaulaPersones.Gent.Values) { if (p is Convidat) { Convidat actual = (Convidat)p; foreach (Persona convidat in esc.TaulaPersones.Gent.Values) { if (convidat is Convidat && p != convidat) { Convidat llistat = (Convidat)convidat; actual.AfegirSimpatia(llistat.Nom, r.Next(-5, 6)); conv = actual; } } } } return(esc); }
public SlotGraella(Convidat conv, bool esFila) { if (esFila) { this.ConvidatFila = conv; this.ConvidatColumna = null; } else { this.ConvidatColumna = conv; this.ConvidatFila = null; } }
/// <summary> /// Afegeix totes les simpaties /// /// </summary> private void GenerarSimpaties() { foreach (Persona p in escenari.TaulaPersones) { if (p.EsConvidat()) { Convidat actual = (Convidat)p; foreach (Persona convidat in escenari.TaulaPersones) { if (convidat.EsConvidat() && p != convidat) { Convidat llistat = (Convidat)convidat; actual.AfegirSimpatia(llistat.Nom, r.Next(-5, 6)); } } } } }
/******************************** * Constructors */ public SlotGraella(Convidat fila, Convidat columna) { this.ConvidatFila = fila; this.ConvidatColumna = columna; }
/// <summary> /// Retorna el plus de sexe d'un convidat en concret. /// </summary> /// <param name="c"></param> /// <returns></returns> public string ExtreuPlusSexe(Convidat c) { return(c.PlusSexe.ToString()); }