119 lines
3.5 KiB
C#
119 lines
3.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace Torpedo
|
|
{
|
|
internal class TorpedoJatek
|
|
{
|
|
public int Meret { get; set; }
|
|
public int HajoMeret { get; set; }
|
|
public char[,] Jatekmezo { get; set; }
|
|
public int[] HajoHelye { get; set; }
|
|
|
|
private int Talalat;
|
|
|
|
public TorpedoJatek(int meret)
|
|
{
|
|
Meret = meret;
|
|
Jatekmezo = new char[meret, meret];
|
|
MezotGeneral();
|
|
HajoMeret = 3;
|
|
KifutAHajo();
|
|
}
|
|
|
|
private void KifutAHajo()
|
|
{
|
|
Random rd = new Random();
|
|
int sor = rd.Next(Meret);
|
|
int oszlop = rd.Next(Meret-HajoMeret+1);
|
|
HajoHelye = new int[2];
|
|
HajoHelye[0] = sor;
|
|
HajoHelye[1] = oszlop;
|
|
}
|
|
|
|
private void MezotGeneral()
|
|
{
|
|
for (int sor = 0; sor < Meret; sor++)
|
|
{
|
|
for (int oszlop = 0; oszlop < Meret; oszlop++)
|
|
{
|
|
Jatekmezo[sor, oszlop] = '~';
|
|
}
|
|
}
|
|
}
|
|
|
|
public void Indul()
|
|
{
|
|
Console.WriteLine("TORPEDÓ JÁTÉK");
|
|
Talalat = 0;
|
|
while (Talalat<HajoMeret)
|
|
{
|
|
MezoRajzol();
|
|
Console.Write("\nLőjjé': ");
|
|
string loves = Console.ReadLine().ToUpper();
|
|
try
|
|
{
|
|
if (loves.Length < 2) throw new Exception("Hibás lövés!");
|
|
char oszlop = loves[0];
|
|
int sor = int.Parse(loves.Substring(1));
|
|
if (oszlop < 'A' || oszlop > ('A' + Meret - 1)) throw new Exception("Érvénytelen oszlop!");
|
|
if (sor < 1 || sor > Meret) throw new Exception("Érvénytelen sor");
|
|
Console.Clear();
|
|
LovesKezeles(oszlop, sor - 1);
|
|
}
|
|
catch (Exception hiba)
|
|
{
|
|
Console.Clear();
|
|
Console.WriteLine(hiba.Message);
|
|
continue;
|
|
}
|
|
|
|
}
|
|
Console.Clear();
|
|
Console.WriteLine("Vége a játéknak! Gratulálok!");
|
|
MezoRajzol();
|
|
Console.ReadKey();
|
|
}
|
|
|
|
private void LovesKezeles(char oszlop, int sor)
|
|
{
|
|
int oszlopSzam = oszlop-'A';
|
|
if (Jatekmezo[sor,oszlopSzam]!='~')
|
|
{
|
|
Console.WriteLine("Ez már volt!");
|
|
} else
|
|
{
|
|
if(sor == HajoHelye[0] && (oszlopSzam >= HajoHelye[1] && oszlopSzam <= HajoHelye[1]+HajoMeret-1))
|
|
{
|
|
Jatekmezo[sor, oszlopSzam] = 'x';
|
|
Talalat++;
|
|
Console.WriteLine("Találat!");
|
|
} else
|
|
{
|
|
Jatekmezo[sor, oszlopSzam] = '*';
|
|
Console.WriteLine("Nem talált!");
|
|
}
|
|
}
|
|
}
|
|
|
|
private void MezoRajzol()
|
|
{
|
|
Console.Write("\n ");
|
|
for(int o = 0; o<Meret; o++) {
|
|
Console.Write((char)('A'+o));
|
|
}
|
|
for (int sor = 0; sor < Meret; sor++)
|
|
{
|
|
Console.Write("\n{0:00}",(sor + 1));
|
|
for (int oszlop = 0; oszlop < Meret; oszlop++)
|
|
{
|
|
Console.Write(Jatekmezo[sor, oszlop]);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|