A ještě tam je takovej malej problém, který mě ani zas tak tolik netrápí. Jde o to, že když přejdu ze souřadnice 9 na 10 a pak zpátky zase na souřadnici 9, tak se ale nezobrazí 9, ale 90. Čili, když přejdu z jednociferného čísla na dvojciferné, tak se mi na zpátek už na jednociferné nevrátí.
Tady ještě přikládám kódy jednotlivých tříd:
Program.cs
► Zobrazit spoiler
Kód: Vybrat vše
using System;
namespace SnakeGame
{
class Program
{
static void Main(string[] args)
{
bool hraPokracuje = true;
while (hraPokracuje) {
int vysledekVolby = Nabidka.ZobrazHlavniNabidku();
const int novaHra = 0;
const int instrukce = 1;
const int konec = 2;
switch (vysledekVolby)
{
case novaHra:
Console.Clear();
HerniSvet hs = new HerniSvet();
HerniSvet herniSvet = new HerniSvet();
while(herniSvet.StavHry== StavHry.Probiha) {
herniSvet.ZpracovaniPohybu();
herniSvet.AktualizujZobrazeni();
herniSvet.zkontrolujPolicko();
}
switch (herniSvet.StavHry)
{
case StavHry.Vyhra:
Console.Clear();
Console.WriteLine("Vyhrál jste!");
break;
case StavHry.Prohra:
Console.Clear();
Console.WriteLine("Prohrál jste!");
break;
case StavHry.Ukonceni:
Console.Clear();
Console.WriteLine("Hra byla ukončena!");
break;
}
Console.ReadKey();
break;
case instrukce:
Console.Clear();
Console.WriteLine("Instrukce:\n\nOvladání pomocí šipek.\n\nCíl: Posbírat všechny předměty a projít východem.");
Console.ReadKey();
break;
case konec:
hraPokracuje = false;
break;
}
}
}
}
}
Nabidka.cs
► Zobrazit spoiler
Kód: Vybrat vše
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SnakeGame
{
class Nabidka
{
public static int ZobrazHlavniNabidku()
{
String[] vyberNabidek = new String[3];
vyberNabidek[0] = "Nová hra";
vyberNabidek[1] = "Instrukce";
vyberNabidek[2] = "Konec";
int zvolenaPolozka = 0;
bool vyberDokoncen = false;
Console.Clear();
while (!vyberDokoncen)
{
Console.SetCursorPosition(0, 3);
for (int i = 0; i < vyberNabidek.Length; i++)
{
if (zvolenaPolozka == i)
{
Console.BackgroundColor = ConsoleColor.Blue;
}
Console.WriteLine(vyberNabidek[i]);
Console.ResetColor();
}
ConsoleKeyInfo StisknutaKlavesa = Console.ReadKey(true);
if (StisknutaKlavesa.Key == ConsoleKey.DownArrow)
{
zvolenaPolozka++;
if (zvolenaPolozka == vyberNabidek.Length)
{
zvolenaPolozka = 0;
}
}
if (StisknutaKlavesa.Key == ConsoleKey.UpArrow)
{
zvolenaPolozka--;
if (zvolenaPolozka < 0)
{
zvolenaPolozka = vyberNabidek.Length - 1;
}
}
else if (StisknutaKlavesa.Key == ConsoleKey.Enter)
{
vyberDokoncen = true;
}
}
return zvolenaPolozka;
}
}
}
HerniSvet.cs
► Zobrazit spoiler
Kód: Vybrat vše
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SnakeGame
{
class HerniSvet
{
private int[,] herniMapa;
const int mapaSirka = 24;
const int mapaVyska = 24;
public const int prekazka = 3;
public const int predmet = 2;
public const int vychod = 1;
public int zbyvajiciPredmety = 0;
public HerniSvet()
{
herniMapa = new int[mapaSirka, mapaVyska];
for (int y = 0; y < mapaVyska; y++)
{
herniMapa[0, y] = prekazka;
herniMapa[mapaSirka - 1, y] = prekazka;
}
for (int x = 0; x < mapaVyska; x++)
{
herniMapa[x, 0] = prekazka;
herniMapa[x, mapaVyska - 1] = prekazka;
}
for (int a = 0; a < mapaVyska - 8; a++)
{
herniMapa[5, a] = prekazka;
}
for (int b = 11; b < mapaVyska-1; b++)
{
herniMapa[10, b] = prekazka;
}
for (int b = 0; b < mapaVyska - 10; b++)
{
herniMapa[14, b] = prekazka;
}
for (int b = 11; b < mapaVyska - 1; b++)
{
herniMapa[19, b] = prekazka;
}
for (int b = 18; b < mapaSirka - 1; b++)
{
herniMapa[b, 5]=prekazka;
}
for (int b = 18; b < mapaSirka - 1; b++)
{
herniMapa[5, b] = prekazka;
}
herniMapa[3,2 ] = predmet;
herniMapa[22, 22] = vychod;
herniMapa[1, 21] = predmet;
herniMapa[7,22] =predmet;
herniMapa[9, 12] = predmet;
herniMapa[11, 3] = predmet;
herniMapa[11, 11] = predmet;
herniMapa[13, 20] = predmet;
herniMapa[15, 13] = predmet;
herniMapa[19, 1] = predmet;
herniMapa[22, 4] = predmet;
herniMapa[22, 7] = predmet;
zobrazHerniSvet();
}
public StavHry StavHry = StavHry.Probiha;
private int x = 1, y = 1;
static int PredchoziX = 1, PredchoziY = 1;
void zobrazHerniSvet()
{
Console.SetCursorPosition(mapaSirka + 2, 0);
Console.WriteLine("Předměty: " + zbyvajiciPredmety+"/11");
for (int y = 0; y < mapaVyska; y++)
{
for (int x = 0; x < mapaVyska; x++)
{
if (herniMapa[x, y] == prekazka)
{
Console.SetCursorPosition(x, y);
Console.Write('#');
}
else if (herniMapa[x, y] == predmet)
{
Console.SetCursorPosition(x, y);
Console.ForegroundColor = ConsoleColor.Green;
Console.Write('*');
Console.ResetColor();
}
else if (herniMapa[x, y] == vychod)
{
Console.SetCursorPosition(x, y);
Console.ForegroundColor = ConsoleColor.Yellow;
Console.Write('O');
Console.ResetColor();
}
}
}
}
public void ZpracovaniPohybu()
{
Console.SetCursorPosition(x, y);
Console.BackgroundColor = ConsoleColor.Red;
Console.Write('X');
Console.ResetColor();
ConsoleKeyInfo stisknutaKlavesa = Console.ReadKey(true);
switch (stisknutaKlavesa.Key)
{
case ConsoleKey.DownArrow:
y++;
break;
case ConsoleKey.UpArrow:
y--;
break;
case ConsoleKey.LeftArrow:
x--;
break;
case ConsoleKey.RightArrow:
x++;
break;
case ConsoleKey.Escape:
StavHry= StavHry.Ukonceni;
break;
}
}
public void AktualizujZobrazeni()
{
Console.SetCursorPosition(PredchoziX, PredchoziY);
herniMapa[PredchoziX, PredchoziY] = prekazka;
Console.BackgroundColor = ConsoleColor.Green;
Console.Write('"');
Console.SetCursorPosition(x, y);
Console.BackgroundColor = ConsoleColor.Red;
Console.Write('X');
Console.ResetColor();
PredchoziX = x;
PredchoziY = y;
}
public void zkontrolujPolicko()
{
if (herniMapa[x, y] == prekazka)
{
StavHry = StavHry.Prohra;
}
if(herniMapa[x,y]==predmet){
herniMapa[x,y] = 0;
zbyvajiciPredmety++;
}
else if (herniMapa[x, y] == vychod && zbyvajiciPredmety == 11)
{
StavHry = StavHry.Vyhra;
}
else if (herniMapa[x, y] == vychod && zbyvajiciPredmety < 11)
{
StavHry= StavHry.Prohra;
}
Console.SetCursorPosition(mapaSirka + 2, 0);
Console.WriteLine("Předměty: " + zbyvajiciPredmety + "/11");
if (zbyvajiciPredmety == 11)
{
Console.SetCursorPosition(mapaSirka + 2, 0);
Console.WriteLine("Posbírané všechny předměty, nyní dodji do cíle!");
}
Console.SetCursorPosition(mapaSirka + 42, 2);
Console.WriteLine(x);
Console.SetCursorPosition(mapaSirka + 42, 3);
Console.WriteLine(y);
}
}
}
StavHry.cs
► Zobrazit spoiler
Kód: Vybrat vše
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SnakeGame
{
enum StavHry
{
Probiha, Prohra, Vyhra, Ukonceni
}
}
případně program na stažení: http://leteckaposta.cz/744528950