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?
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 :)
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 ?
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;
}
}
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.
Przecież konsola ma swoje rozmiary, które możesz odczytać. Potem tylko sprawdzaj, czy je przekraczasz, czy nie. Sprawdź w klasie Console wymiary konsoli.