Blokowanie wychodzenia poza Konsole - snake.

0

Cześć, napisałem prosty system poruszania się w konsoli strzałkami, teraz chciałbym napisać metodę dzięki której "postać" będzie mogła się poruszać od ścianki do ścianki, a wyjście poza nią będzie niemożliwe.
Nie wiem jak się za to zabrać, gdybyście mnie nakierowali byłoby fajnie - mam coś w stylu, jeżeli położenie postaci jest większe niż szerokość okna to zwróć i tu jest problem, co w takim przypadku ma robić taka metoda?

0

Najprościej chyba to mapę po której porusza się wąż zrobić jako tablicę dwuwymiarową, wtedy masz dokładne współrzędne wszystkich ścian. No i sprawdzać, że jeśli głowa węża znajdzie się na współrzędnych którejkolwiek ściany to game over :)

0

Jak mój przedmówca, spróbuj zrobić to na tablicy dwu wymiarowej. Musisz napisać warunki sprawdzające kiedy wychodzisz po za zakres w górę,dół,lewo i prawo tablicy :). Nie sugeruj się wielkością okna bo ona jest różna dla różnej rodzielczości nie wspomnę o tym, że ktoś może okno pomniejszyć :). Skoro masz ruch napisany to po czym się poruszasz ?

0
Akihito napisał(a):

Jak mój przedmówca, spróbuj zrobić to na tablicy dwu wymiarowej. Musisz napisać warunki sprawdzające kiedy wychodzisz po za zakres w górę,dół,lewo i prawo tablicy :). Nie sugeruj się wielkością okna bo ona jest różna dla różnej rodzielczości nie wspomnę o tym, że ktoś może okno pomniejszyć :). Skoro masz ruch napisany to po czym się poruszasz ?


``` ConsoleKeyInfo keyInfo;
            while ((keyInfo = Console.ReadKey(true)).Key != ConsoleKey.Escape)
            {
                switch (keyInfo.Key)
                {
                    case ConsoleKey.UpArrow:
                        MoveHero(0, -1);
                        break;

                    case ConsoleKey.RightArrow:
                        MoveHero(1, 0);
                        break;

                    case ConsoleKey.DownArrow:
                        MoveHero(0, 1);
                        break;

                    case ConsoleKey.LeftArrow:
                        MoveHero(-1, 0);
                        break;
                }
            }
0
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Game
{
    class Program
    {
        static void Main(string[] args)
        {
            int redo = 0;
            int sides = 20;
            int tops = 10;

            ConsoleKeyInfo KeyInfo;
            do
            {
                KeyInfo = Console.ReadKey(true);

                Console.Clear();
                switch (KeyInfo.Key)
                {
                    case ConsoleKey.RightArrow: sides++;
                        Console.SetCursorPosition(sides, tops); Console.Write("X");
                        break;
                    case ConsoleKey.LeftArrow: sides--;
                        Console.SetCursorPosition(sides, tops);
                        Console.Write("X");
                        break;
                    case ConsoleKey.UpArrow:
                        tops--; Console.SetCursorPosition(sides, tops);
                        Console.Write("X");
                        break;
                    case ConsoleKey.DownArrow:
                        tops++; Console.SetCursorPosition(sides, tops);
                        Console.Write("X");
                        break;
                    default:
                        break;
                }
            }
            while (redo == 0);
            Console.ReadLine();
        }
    }
}

W sumie to bardziej coś takiego, tamto pierwsze to z jakiegoś tutorialu chyba mialem.
0

Przecież konsola ma swoje rozmiary, które możesz odczytać. Potem tylko sprawdzaj, czy je przekraczasz, czy nie. Sprawdź w klasie Console wymiary konsoli.

1 użytkowników online, w tym zalogowanych: 0, gości: 1