예제 #1
0
파일: Mundo.cs 프로젝트: riseven/Xmas
        public Mundo(FileInfo file)
        {
            FileStream fs = file.OpenRead();
            StreamReader sr = new StreamReader(fs);
            StringReader str = new StringReader(sr.ReadToEnd());
            CreateFromString(str);
            sr.Close();

            string firstLine = sr.ReadLine();
            string[] size = firstLine.Split(' ');
            tamX = int.Parse(size[0]) ;
            tamY = int.Parse(size[1]) ;

            celdas = new TypeCelda[tamX][];
            for ( int i = 0 ; i < celdas.Length ; i++ )
            {
                celdas[i] = new TypeCelda[tamY];
            }

            for (int x = 0; x < tamX; x++)
            {
                for (int y = 0; y < tamY; y++)
                {
                    celdas[x][y] = TypeCelda.Pasillo;
                }
            }

            sr.Close();
        }
예제 #2
0
파일: Mundo.cs 프로젝트: riseven/Xmas
        private void CreateFromString(StringReader sr)
        {
            string firstLine = sr.ReadLine();
            string[] size = firstLine.Split(' ');
            tamX = int.Parse(size[0]);
            tamY = int.Parse(size[1]);

            celdas = new TypeCelda[tamX][];
            for (int i = 0; i < celdas.Length; i++)
            {
                celdas[i] = new TypeCelda[tamY];
            }

            puertas = new Dictionary<Point, Puerta>();

            for (int y = tamY-1; y >= 0; y--)
            {
                string fila = sr.ReadLine();
                string[] trozos = fila.Split(';');
                int numPuerta = 1;
                for (int x = 0; x < tamX; x++)
                {
                    switch (fila[x])
                    {
                        case '#':
                            celdas[x][y] = TypeCelda.Muro;
                            break;
                        case ' ':
                            celdas[x][y] = TypeCelda.Pasillo;
                            break;
                        case '|':
                        case '-':
                            celdas[x][y] = TypeCelda.Puerta;
                            // Añadimos la puerta
                            puertas[new Point(x, y)] = new Puerta(int.Parse(trozos[numPuerta++]));
                            break;
                        default:
                            throw new Exception("Caracter no valido");
                    }
                }
            }

            sr.Close();

            // Creamos los bitmaps
            bitmapsCeldas = new System.Collections.Generic.Dictionary<TypeCelda, System.Drawing.Bitmap>();
            bitmapsCeldas[TypeCelda.Muro] = Resources.muro;
            bitmapsCeldas[TypeCelda.Pasillo] = Resources.pasillo;

            jugadores = new List<Jugador>();
        }