private static void jugarPartida() { List <Point> serpiente; Point manzana; bool? victoria = null; inicializarPartida(out serpiente, out manzana); pintarPartida(serpiente, manzana); while (victoria == null) { ConsoleKeyInfo entrada = Console.ReadKey(); // Je je je if (entrada.KeyChar == 'x') { break; } ResultadoMovimiento nuevoPunto = moverSerpiente(serpiente, entrada.Key, manzana); if (nuevoPunto == ResultadoMovimiento.Manzana) { manzana = new Point(Aleatorio.Next(0, TamañoMapa - 1), Aleatorio.Next(0, TamañoMapa - 1)); } // Console.Clear(); Console.WriteLine("Usa las flechas para moverte!"); pintarPartida(serpiente, manzana); if (nuevoPunto == ResultadoMovimiento.Muerte) { victoria = false; } if (serpiente.Count > TamañoMapa * TamañoMapa) { victoria = true; } } if (victoria.Value) { Console.Write("¡Enhorabuena, has ganado!"); } else { Console.Write("¡Has perdido!"); } Console.WriteLine(" - Pulsa enter para volver al menú principal."); Console.ReadLine(); }
private static ResultadoMovimiento moverSerpiente(List <Point> serpiente, ConsoleKey pulsacion, Point manzana) { Point?nuevoPunto = null; ResultadoMovimiento ret = ResultadoMovimiento.Nada; switch (pulsacion) { case ConsoleKey.LeftArrow: if (serpiente[0].X <= 0) { return(ResultadoMovimiento.Muerte); } nuevoPunto = new Point(serpiente[0].X - 1, serpiente[0].Y); break; case ConsoleKey.RightArrow: if (serpiente[0].X >= TamañoMapa - 1) { return(ResultadoMovimiento.Muerte); } nuevoPunto = new Point(serpiente[0].X + 1, serpiente[0].Y); break; case ConsoleKey.DownArrow: if (serpiente[0].Y <= 0) { return(ResultadoMovimiento.Muerte); } nuevoPunto = new Point(serpiente[0].X, serpiente[0].Y - 1); break; case ConsoleKey.UpArrow: if (serpiente[0].Y >= TamañoMapa - 1) { return(ResultadoMovimiento.Muerte); } nuevoPunto = new Point(serpiente[0].X, serpiente[0].Y + 1); break; } if (nuevoPunto != null) { if (serpiente.GetRange(0, serpiente.Count - 1).Contains(nuevoPunto.Value)) { return(ResultadoMovimiento.Muerte); } serpiente.Insert(0, nuevoPunto.Value); serpiente.RemoveAt(serpiente.Count - 1); } if (serpiente.Any(p => p.Equals(manzana))) { serpiente.Add(new Point(serpiente[serpiente.Count - 1].X, serpiente[serpiente.Count - 1].Y)); ret = ResultadoMovimiento.Manzana; } return(ret); }