torpedo/Torpedo/TorpedoJatek.cs

119 lines
3.5 KiB
C#
Raw Normal View History

2025-01-31 12:00:16 +00:00
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; }
2025-02-07 12:01:04 +00:00
private int Talalat;
2025-01-31 12:00:16 +00:00
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()
{
2025-02-14 11:49:10 +00:00
Console.WriteLine("TORPEDÓ JÁTÉK");
2025-02-07 12:01:04 +00:00
Talalat = 0;
while (Talalat<HajoMeret)
2025-01-31 12:00:16 +00:00
{
MezoRajzol();
2025-02-14 11:49:10 +00:00
Console.Write("\nLőjjé': ");
string loves = Console.ReadLine().ToUpper();
2025-02-07 12:01:04 +00:00
try
{
2025-02-14 11:49:10 +00:00
if (loves.Length < 2) throw new Exception("Hibás lövés!");
2025-02-07 12:01:04 +00:00
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");
2025-02-14 11:49:10 +00:00
Console.Clear();
LovesKezeles(oszlop, sor - 1);
2025-02-07 12:01:04 +00:00
}
catch (Exception hiba)
{
2025-02-14 11:49:10 +00:00
Console.Clear();
2025-02-07 12:01:04 +00:00
Console.WriteLine(hiba.Message);
continue;
}
2025-02-14 11:49:10 +00:00
2025-01-31 12:00:16 +00:00
}
2025-02-14 11:49:10 +00:00
Console.Clear();
2025-02-07 12:01:04 +00:00
Console.WriteLine("Vége a játéknak! Gratulálok!");
2025-02-14 11:49:10 +00:00
MezoRajzol();
Console.ReadKey();
2025-02-07 12:01:04 +00:00
}
2025-01-31 12:00:16 +00:00
2025-02-07 12:01:04 +00:00
private void LovesKezeles(char oszlop, int sor)
{
int oszlopSzam = oszlop-'A';
if (Jatekmezo[sor,oszlopSzam]!='~')
{
2025-02-14 11:49:10 +00:00
Console.WriteLine("Ez már volt!");
2025-02-07 12:01:04 +00:00
} else
{
if(sor == HajoHelye[0] && (oszlopSzam >= HajoHelye[1] && oszlopSzam <= HajoHelye[1]+HajoMeret-1))
{
2025-02-14 11:49:10 +00:00
Jatekmezo[sor, oszlopSzam] = 'x';
2025-02-07 12:01:04 +00:00
Talalat++;
2025-02-14 11:49:10 +00:00
Console.WriteLine("Találat!");
2025-02-07 12:01:04 +00:00
} else
{
2025-02-14 11:49:10 +00:00
Jatekmezo[sor, oszlopSzam] = '*';
Console.WriteLine("Nem talált!");
2025-02-07 12:01:04 +00:00
}
}
2025-01-31 12:00:16 +00:00
}
private void MezoRajzol()
{
2025-02-14 11:49:10 +00:00
Console.Write("\n ");
2025-01-31 12:00:16 +00:00
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]);
}
}
}
}
}