//KMZWA8AWAA /// <summary> /// Constructor de la clase Juego /// </summary> /// <param name="mapas">Lista de mapas que se usaran en el juego</param> /// <param name="dificultad">Dificultad de juego</param> /// <param name="jugador">Datos del jugador</param> /// <param name="entradaVoz">Vaor booleano que indica el metodo de entrada del juego (Voz o teclado)</param> /// <param name="vidasPac">Vidas del jugador</param> /// <param name="hpPac">Valor de cada vida del Jugador</param> public Juego(Mapa mapa, String dificultad, DatosJugador jugador, Boolean entradaVoz, int vidasPac, int hpPac) { //this.listaDeMapaslvl1 = new List<Mapa>(); //this.listaDeMapaslvl2 = new List<Mapa>(); //this.listaDeMapaslvl3 = new List<Mapa>(); this.mapaActual = mapa; this.fantasmasLvl1 = new List<Fantasma>(); //this.fantasmasLvl2 = new List<Fantasma>(); //this.fantasmasLvl3 = new List<Fantasma>(); //this.separarMapasPorNivel(mapas); this.dificultad = dificultad; this.datosJugador = jugador; this.entradaPorVoz = entradaVoz; this.nivelActual = 1; this.r = new Random(); this.configurarJuego(vidasPac, hpPac); this.estadoDelJuego = true; this.jugando = 1; this.tiempoFantasmasVulnerables = 0; this.tiempoAumentoVel = 0; this.tiempoFrutilla = 0; this.tiempoFrutaViva = 0; this.segundos = 0; this.iFrut = -1; this.jFrut = -1; }
/// <summary> /// Constructor de la clase PacMan /// </summary> /// <param name="lado">Definira el ancho y alto del Pacman</param> /// <param name="x">Posicion en el eje coordenado X del Pacman</param> /// <param name="y">Posicion en el eje coordenado Y del Pacman</param> /// <param name="velocidad">Velocidad de desplazamiento del Pacman</param> /// <param name="nivel">Nivel actual del tablero</param> /// <param name="mapaActual">Tablero actual</param> /// <param name="vidas">Cantidad de vidas</param> /// <param name="hp">Valor de cada vida</param> /// <param name="i">Indica la posicion inicial en las filas de la matriz</param> /// <param name="j">Indica la posicion inicial en las columnas de la matriz</param> public PacMan(int lado, int x, int y, int velocidad, int nivel, Mapa mapaActual, int vidas, int hp, int i, int j) { this.windth = lado; this.height = lado; this.x = x; this.y = y; this.velocidad = velocidad; this.nivel = nivel; this.mapaActual = mapaActual; this.vidas = vidas; this.hp = hp; this.hpTotal = hp; this.iAct = i; this.jAct = j; this.randCambairDir = new Random(DateTime.Now.Millisecond); this.configuracionInicialPacman(); }
/// <summary> /// Metodo contructor de la clase Fantasma /// </summary> /// <param name="direccion">Inica la direccion actual del fantasma</param> /// <param name="fantasma">Nombre que identifica al fantasma, puede ser ROJO, AZUL, NARANJA o ROSA</param> /// <param name="lado">Asigna el ancho y alto de la imagen del fantasma</param> /// <param name="x">Posicion en el eje coordenado X del fantasma</param> /// <param name="y">Posicion en el eje coordenado Y del fantasma</param> /// <param name="nivel">Nivel del tablero de juego actual</param> /// <param name="dificultad">Dificultad de juego Actual</param> /// <param name="m">Mapa actual en el que se esta juagdo</param> /// <param name="i">Posicion de la fila en la que se encuentra actualmente el fantasma</param> /// <param name="j">Posicion de la columna en la que se encuentra actualmente el fantasma</param> public Fantasma(int direccion, String fantasma, int lado, int x, int y, int nivel, String dificultad, Mapa m, int i, int j) { this.direccion = direccion; this.estado = 1; this.nombreFantasma = fantasma; this.windth = lado; this.height = lado; this.x = x; this.y = y; this.nivel = nivel; this.mapaActual = m; configuracionInicialDeFantasma(fantasma, nivel, dificultad); this.iAct = i; this.jAct = j; this.imagenActual = 0; this.randCambairDir = new Random(DateTime.Now.Millisecond); }
private void graficarMapa(Mapa m, Graphics g) { dibujarControno(m, g); if (m.Dificultad == "Facil") { foreach (Celda celda in m.MatrizDiseño) { if (!celda.SePuedePasar) { g.DrawImage(imagenPared[0], celda.X, celda.Y, celda.Width, celda.Heiht); } } } else if (m.Dificultad == "Medio") { foreach (Celda celda in m.MatrizDiseño) { if (!celda.SePuedePasar) { g.DrawImage(imagenPared[3], celda.X, celda.Y, celda.Width, celda.Heiht); } } } else if (m.Dificultad == "Dificil") { foreach (Celda celda in m.MatrizDiseño) { if (!celda.SePuedePasar) { g.DrawImage(imagenPared[2], celda.X, celda.Y, celda.Width, celda.Heiht); } } } }
private void graficarBiscochos(Mapa m, Graphics g) { foreach (Celda celda in m.MatrizDiseño) { if (celda.SePuedePasar && celda.Valor == "O" && celda.Bisc.Estado) { switch (celda.Bisc.Tipo) { case 1: g.FillEllipse(Brushes.White, celda.Bisc.X, celda.Bisc.Y, 3, 3); break; case 2: g.FillEllipse(Brushes.White, celda.Bisc.X, celda.Bisc.Y, 8, 8); break; case 3: g.DrawImage(imgFruta, celda.Bisc.X, celda.Bisc.Y, 20, 20); break; } } } }
private void dibujarControno(Mapa m, Graphics g) { Point psi = new Point(m.MatrizDiseño[0, 0].X - 1, m.MatrizDiseño[0, 0].Y - 1); Point psd = new Point(m.MatrizDiseño[0, m.Columnas - 1].X + 20, m.MatrizDiseño[0, m.Columnas - 1].Y - 1); Point pii = new Point(m.MatrizDiseño[m.Filas - 1, 0].X - 1, m.MatrizDiseño[m.Filas - 1, 0].Y + 20); Point pid = new Point(m.MatrizDiseño[m.Filas - 1, m.Columnas - 1].X + 20, m.MatrizDiseño[m.Filas - 1, m.Columnas - 1].Y + 20); g.DrawLine(new Pen(Brushes.White, 1), psi, psd); g.DrawLine(new Pen(Brushes.White, 1), psi, pii); g.DrawLine(new Pen(Brushes.White, 1), pii, pid); g.DrawLine(new Pen(Brushes.White, 1), psd, pid); }
/// <summary> /// Cambia de nivel al personaje /// </summary> /// <param name="m">Mapa del siguiente nivel</param> /// <param name="vel">Velocidad inicial del personaje</param> public void cambiarNivel(Mapa m, int vel) { this.mapaActual = m; this.nivel++; this.velocidad = vel; }
private void btnAceptarConf_Click(object sender, EventArgs e) { if (txtNombre.Text != "" && cmbDificultad.SelectedIndex > -1 && cmbNivel.SelectedIndex > -1) { filas = (int)nudFilas.Value + 5; columnas = (int)nudColumnas.Value + 5; nivel = int.Parse(cmbNivel.SelectedItem.ToString()); nombre = txtNombre.Text; dificultad = cmbDificultad.SelectedItem.ToString(); mapa = new Mapa(filas, columnas, nivel, nombre, dificultad); for (int i = 0; i < columnas; i++) { grdMapa.Columns.Add(new DataGridViewTextBoxColumn()); grdMapa.Columns[i].Width = 25; grdMapa.Columns[i].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter; } for (int i = 0; i < filas; i++) { grdMapa.Rows.Add(new DataGridViewTextBoxCell()); grdMapa[0, i].Value = null; } for (int i = 0; i < filas; i++) { for (int j = 0; j < columnas; j++) { grdMapa[j, i].Value = "x"; } } int ic = (filas - 5) / 2; int jc = (columnas - 5) / 2; String[,] centro = generarCentroAleatorio(); for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { grdMapa[jc + i, ic + j].ReadOnly = true; grdMapa[jc + i, ic + j].Value = centro[i, j]; } } btnAceptarConf.Enabled = false; txtNombre.Enabled = false; nudFilas.Enabled = false; nudColumnas.Enabled = false; cmbDificultad.Enabled = false; cmbNivel.Enabled = false; btnGuarConfDeMapa.Enabled = true; grdMapa.Visible = true; new Thread(evaluarMCamposMatriz).Start(); } else { MessageBox.Show("Debe llenar todos los datos"); } }
private void cmbSeleccionMapa_SelectionChangeCommitted(object sender, EventArgs e) { foreach (Mapa mapa in this.listaDeMapas) { if (mapa.Nombre.Equals(cmbSeleccionMapa.SelectedItem.ToString())) { this.mapaAJugar = mapa; break; } } }
/// <summary> /// Hace la configuracion basica del juego, crea los fantasmas y les da posiciones iniciales al igualq ue al pacman, crea las galletas y hubica los comodines /// </summary> /// <param name="vid"></param> /// <param name="hp"></param> private void configurarJuego(int vid, int hp) { if (listaDeMapaslvl1.Count > 0 && listaDeMapaslvl2.Count > 0 && listaDeMapaslvl3.Count > 0) { Random rdm = new Random(); Lvl1 = listaDeMapaslvl1.ElementAt(rdm.Next(0, listaDeMapaslvl1.Count)); Lvl2 = listaDeMapaslvl2.ElementAt(rdm.Next(0, listaDeMapaslvl2.Count)); Lvl3 = listaDeMapaslvl3.ElementAt(rdm.Next(0, listaDeMapaslvl3.Count)); mapaActual = Lvl1; Point[] centrolvl1 = Lvl1.posicionInicalFantasmas(); int dirSalidalvl1 = Lvl1.direccionDeSalidaDelFantasma(); Point[] centrolvl2 = Lvl2.posicionInicalFantasmas(); int dirSalidalvl2 = Lvl2.direccionDeSalidaDelFantasma(); Point[] centrolvl3 = Lvl3.posicionInicalFantasmas(); int dirSalidalvl3 = Lvl3.direccionDeSalidaDelFantasma(); //Fantasmas del nivel 1: 1 Rojo, 1 Rosa, 1 Naranja, 2 Azul fantasmasLvl1.Add(new Fantasma(dirSalidalvl1, "Rojo", 19, centrolvl1[1].X, centrolvl1[1].Y, 1, this.dificultad, Lvl1, centrolvl1[0].X, centrolvl1[0].Y)); fantasmasLvl1.Add(new Fantasma(dirSalidalvl1, "Rosa", 19, centrolvl1[1].X, centrolvl1[1].Y, 1, this.dificultad, Lvl1, centrolvl1[0].X, centrolvl1[0].Y)); fantasmasLvl1.Add(new Fantasma(dirSalidalvl1, "Naranja", 19, centrolvl1[1].X, centrolvl1[1].Y, 1, this.dificultad, Lvl1, centrolvl1[0].X, centrolvl1[0].Y)); for (int i = 0; i < 2; i++) { fantasmasLvl1.Add(new Fantasma(dirSalidalvl1, "Azul", 19, centrolvl1[1].X, centrolvl1[1].Y, 1, this.dificultad, Lvl1, centrolvl1[0].X, centrolvl1[0].Y)); } //Fantasmas del nivel 2: 2 Rojo, 2 Rosa, 2 Naranja, 2 Azul for (int i = 0; i < 2; i++) { fantasmasLvl2.Add(new Fantasma(dirSalidalvl2, "Rojo", 19, centrolvl2[1].X, centrolvl2[1].Y, 1, this.dificultad, Lvl2, centrolvl2[0].X, centrolvl2[0].Y)); fantasmasLvl2.Add(new Fantasma(dirSalidalvl2, "Rosa", 19, centrolvl2[1].X, centrolvl2[1].Y, 1, this.dificultad, Lvl2, centrolvl2[0].X, centrolvl2[0].Y)); fantasmasLvl2.Add(new Fantasma(dirSalidalvl2, "Naranja", 19, centrolvl2[1].X, centrolvl2[1].Y, 1, this.dificultad, Lvl2, centrolvl2[0].X, centrolvl2[0].Y)); fantasmasLvl2.Add(new Fantasma(dirSalidalvl2, "Azul", 19, centrolvl2[1].X, centrolvl2[1].Y, 1, this.dificultad, Lvl2, centrolvl2[0].X, centrolvl2[0].Y)); } //Fantasmas del nivel 3: 2 Rojo, 2 Rosa, 3 Naranja, 3 Azul for (int i = 0; i < 2; i++) { fantasmasLvl3.Add(new Fantasma(dirSalidalvl3, "Rojo", 19, centrolvl3[1].X, centrolvl3[1].Y, 1, this.dificultad, Lvl3, centrolvl3[0].X, centrolvl3[0].Y)); fantasmasLvl3.Add(new Fantasma(dirSalidalvl3, "Rosa", 19, centrolvl3[1].X, centrolvl3[1].Y, 1, this.dificultad, Lvl3, centrolvl3[0].X, centrolvl3[0].Y)); } for (int i = 0; i < 3; i++) { fantasmasLvl3.Add(new Fantasma(dirSalidalvl3, "Naranja", 19, centrolvl3[1].X, centrolvl3[1].Y, 1, this.dificultad, Lvl3, centrolvl3[0].X, centrolvl3[0].Y)); fantasmasLvl3.Add(new Fantasma(dirSalidalvl3, "Azul", 19, centrolvl3[1].X, centrolvl3[1].Y, 1, this.dificultad, Lvl3, centrolvl3[0].X, centrolvl3[0].Y)); } hubicarPacmanEnMapaActualInicial(vid, hp); hubicarComodines(); } else { } }
/// <summary> /// Cambia el nivel del juego, cambia el mapa y demas banderas de estado /// </summary> public void cambiarNivel() { this.nivelActual++; if (this.nivelActual == 4) { this.jugando = 2; } else { this.mapaActual = this.siguienteNivel(); this.hubicarComodines(); this.pacMan.cambiarNivel(this.mapaActual, this.velocidadMayor()); this.tiempoAumentoVel = 0; this.tiempoFantasmasVulnerables = 0; this.tiempoFrutilla = 0; this.tiempoFrutaViva = 0; rehubicarPacman(); } }