예제 #1
0
        /// <summary>
        /// Fájl mentése.
        /// </summary>
        /// <param name="path">Elérési útvonal.</param>
        /// <param name="table">A fájlba kiírandó játéktábla.</param>
        public async Task SaveAsync(String path, SnakeGameTable table, Snake snake)
        {
            try
            {
                using (StreamWriter writer = new StreamWriter(path))                                  // fájl megnyitása
                {
                    await writer.WriteLineAsync(table.Size + " " + table.Score);                      // kiírjuk a pályaméretet, kiírjuk az aktuális pontszámot

                    await writer.WriteLineAsync(snake.getHead()._posX + " " + snake.getHead()._posY); //melyik mező a kígyó feje

                    await writer.WriteLineAsync(snake.DirectionX + " " + snake.DirectionY);           // Kiírom, hogy a kígyó épp milyen irányba készült haladni

                    for (Int32 i = 0; i < table.Size; i++)
                    {
                        for (Int32 j = 0; j < table.Size; j++)
                        {
                            await writer.WriteAsync(table[i, j] + " ");     // kiírjuk az értékeket
                        }
                        await writer.WriteLineAsync();
                    }
                }
            }
            catch
            {
                throw new SnakeDataException();
            }
        }
예제 #2
0
        /// <summary>
        /// Fájl betöltése.
        /// </summary>
        /// <param name="path">Elérési útvonal.</param>
        /// <returns>A fájlból beolvasott játéktábla.</returns>
        public async Task <SnakeGameTable> LoadAsync(String path)
        {
            try
            {
                using (StreamReader reader = new StreamReader(path))     // fájl megnyitása
                {
                    String line = await reader.ReadLineAsync();

                    String[] numbers   = line.Split(' ');         // beolvasunk egy sort, és a szóköz mentén széttöredezzük
                    Int32    tableSize = Int32.Parse(numbers[0]); // beolvassuk a tábla méretét
                    Int32    gameScore = Int32.Parse(numbers[1]); // beolvassuk az aktuális pontszámot.

                    // Kígyó fejének beolvasása

                    line = await reader.ReadLineAsync();

                    numbers = line.Split(' ');
                    Snake snake = new Snake(Int32.Parse(numbers[0]), Int32.Parse(numbers[1]));
                    line = await reader.ReadLineAsync();

                    numbers          = line.Split(' ');
                    snake.DirectionX = Int32.Parse(numbers[0]);
                    snake.DirectionY = Int32.Parse(numbers[1]);


                    // Tábla létrehozása és a kígyó többi részének beolvasása
                    SnakeGameTable table = new SnakeGameTable(tableSize, gameScore);



                    for (Int32 i = 0; i < tableSize; i++)
                    {
                        line = await reader.ReadLineAsync();

                        numbers = line.Split(' ');
                        for (Int32 j = 0; j < tableSize; j++)
                        {
                            if (Int32.Parse(numbers[j]) == 1)
                            {
                                snake.AddElementToSnake(new SnakeBodyPart(i, j));
                            }
                            table.SetValue(i, j, Int32.Parse(numbers[j]));
                        }
                    }

                    snake.StepTheTailOfTheSnake();
                    snake.DirectionX = 0;
                    snake.DirectionY = 1;
                    table.setSnake(snake);
                    table.Score = gameScore;



                    return(table);
                }
            }
            catch
            {
                throw new SnakeDataException();
            }
        }