Az alábbi letöltési lehetőségek közül választhatsz: (
segítség)
Típus: text/plain
Tartalmaz szöveget
Karakterkódolás: us-ascii
Méret: 3 KB
using System;
namespace Klickety
{
public class Klickety
{
const int Szinek = 3, Ures = 0;
char[] mezoKarakterek = {' ', 'O', '+', '@', '#', '*'};
int N = 5, M = 5;
int[,] mezok;
public Klickety()
{
Random rand = new Random();
mezok = new int[N, M];
for (int i = 0; i < N; i++)
for (int j = 0; j < M; j++)
mezok[i, j] = rand.Next(Szinek) + 1;
}
private void Kirajzol()
{
Console.Write("\n |");
for (int i = 0; i < M; i++)
Console.Write(i);
Console.Write("\n--+" + new string('-', M));
for (int i = 0; i < N; i++) {
Console.Write("\n{0,2}|", i);
for (int j = 0; j < M; j++)
Console.Write(mezoKarakterek[mezok[i, j]]);
}
Console.WriteLine();
}
private void AdatotBeker(out int sor, out int oszlop)
{
string[] cmd;
sor = -1;
oszlop = -1;
do {
Console.Write("> ");
cmd = Console.ReadLine().Split();
if (cmd[0] == "q")
System.Environment.Exit(0);
try {
sor = int.Parse(cmd[0]);
oszlop = int.Parse(cmd[1]);
}
catch {
Console.WriteLine("Hibas formatum!");
}
} while (sor < 0 || oszlop < 0 || sor >= N || oszlop >= M);
}
private bool LehetTorolni(int sor, int oszlop)
{
int szin = mezok[sor, oszlop];
if (mezok[sor, oszlop] != Ures &&
(sor - 1 >= 0 && mezok[sor - 1, oszlop] == szin ||
oszlop - 1 >= 0 && mezok[sor, oszlop - 1] == szin ||
sor + 1 < N && mezok[sor + 1, oszlop] == szin ||
oszlop + 1 < M && mezok[sor, oszlop + 1] == szin ))
return true;
return false;
}
private void Torol(int sor, int oszlop)
{
int szin = mezok[sor, oszlop];
mezok[sor, oszlop] = Ures;
if (sor - 1 >= 0 && mezok[sor - 1, oszlop] == szin) Torol(sor - 1, oszlop);
if (oszlop - 1 >= 0 && mezok[sor, oszlop - 1] == szin) Torol(sor, oszlop - 1);
if (sor + 1 < N && mezok[sor + 1, oszlop] == szin) Torol(sor + 1, oszlop);
if (oszlop + 1 < M && mezok[sor, oszlop + 1] == szin) Torol(sor, oszlop + 1);
}
private void Lepottyan()
{
int uresDb;
for (int oszlop = 0; oszlop < M; oszlop++) {
uresDb = 0;
for (int sor = N - 1; sor >= 0; sor--)
if (mezok[sor, oszlop] != Ures) {
if (uresDb > 0) {
mezok[sor + uresDb, oszlop] = mezok[sor, oszlop];
mezok[sor, oszlop] = Ures;
}
}
else {
uresDb++;
}
}
}
private void UresOszlopokTorlese()
{
int uresDb = 0;
for (int oszlop = 0; oszlop < M; oszlop++) {
if (mezok[N - 1, oszlop] != Ures) {
if (uresDb > 0)
for (int sor = 0; sor < N; sor++) {
mezok[sor, oszlop - uresDb] = mezok[sor, oszlop];
mezok[sor, oszlop] = Ures;
}
}
else {
uresDb++;
}
}
}
private bool LehetLepni()
{
for (int i = 0; i < N; i++)
for (int j = 0; j < M; j++)
if (mezok[i, j] != Ures &&
(i > 0 && mezok[i - 1, j] == mezok[i, j] ||
j > 0 && mezok[i, j - 1] == mezok[i, j] ||
i < N - 1 && mezok[i + 1, j] == mezok[i, j] ||
j < M - 1 && mezok[i, j + 1] == mezok[i, j] ))
return true;
return false;
}
private int MezokSzama()
{
int mezoSzam = 0;
for (int i = 0; i < N; i++)
for (int j = 0; j < M; j++)
if (mezok[i, j] != Ures)
mezoSzam++;
return mezoSzam;
}
private bool Lepes()
{
int sor, oszlop;
AdatotBeker(out sor, out oszlop);
if (LehetTorolni(sor, oszlop)) {
Torol(sor, oszlop);
Lepottyan();
UresOszlopokTorlese();
Kirajzol();
}
if (LehetLepni()) {
return true;
}
else {
Console.WriteLine("\nVege a jateknak!\nFennmaradt mezok szama: " + MezokSzama());
return false;
}
}
public void Jatek()
{
Kirajzol();
while (Lepes())
;
}
}
public class Program
{
public static void Main()
{
Klickety klickety = new Klickety();
klickety.Jatek();
}
}
}