Files
basic-computer-games/56_Life_for_Two/csharp/Program.cs
2022-08-20 17:58:35 +10:00

149 lines
3.2 KiB
C#

global using Games.Common.IO;
global using static LifeforTwo.Resources.Resource;
var io = new ConsoleIO();
io.Write(Streams.Title);
var N = new int[7, 7];
var K = new[] { 3, 102, 103, 120, 130, 121, 112, 111, 12, 21, 30, 1020, 1030, 1011, 1021, 1003, 1002, 1012 };
var A = new[] { -1, 0, 1, 0, 0, -1, 0, 1, -1, -1, 1, -1, -1, 1, 1, 1 };
var X = new int[3];
var Y = new int[3];
int M2, M3;
void L50()
{
for (var j = 1; j <= 5; j++)
{
for (var k = 1; k <= 5; k++)
{
if (N[j, k] > 99)
{
L200(j, k);
}
}
}
L90();
}
void L90()
{
M2 = M3 = 0;
for (var j = 0; j <= 6; j++)
{
io.WriteLine();
for (var k = 0; k <= 6; k++)
{
if (j == 0 || j == 6)
{
if (k == 6) { io.Write(" 0 "); break; }
io.Write($" {k} ");
}
else if (k == 0 || k == 6)
{
if (j == 6) { io.WriteLine(" 0 "); return; }
io.Write($" {j} ");
}
else
{
L300(j, k);
}
}
}
return;
}
void L200(int j, int k)
{
int B = N[j, k] > 999 ? 10 : 1;
for (var O1 = 0; O1 < 15; O1 += 2)
{
N[j + A[O1], k + A[O1 + 1]] = N[j + A[O1], k + A[O1 + 1]] + B;
}
}
void L300(int j, int k)
{
if (N[j, k] >= 3)
{
for (var O1 = 0; O1 < 18; O1++)
{
if (N[j, k] == K[O1])
{
if (O1 < 9)
{
N[j, k] = 100; M2++; io.Write(" * ");
return;
}
else
{
N[j, k] = 1000; M3++; io.Write(" # ");
return;
}
}
}
}
N[j, k] = 0; io.Write(" ");
}
for (var j = 1; j <= 5; j++)
{
for (var k = 1; k <= 5; k++)
{
N[j, k] = 0;
}
}
for (var B = 1; B <= 2; B++)
{
var P1 = B == 2 ? 30 : 3;
io.WriteLine(); io.WriteLine($"PLAYER {B} - 3 LIVE PIECES.");
for (var K1 = 1; K1 <= 3; K1++)
{
L700(B);
N[X[B], Y[B]] = P1;
}
}
L90();
while (true)
{
io.WriteLine();
L50();
if (M2 == 0 && M3 == 0) { io.WriteLine(); io.WriteLine("A DRAW"); return; }
else if (M3 == 0) { var B = 1; io.WriteLine(); io.WriteLine($"PLAYER {B} IS THE WINNER"); return; }
else if (M2 == 0) { var B = 2; io.WriteLine($"PLAYER {B} IS THE WINNER"); return; }
for (var B = 1; B <= 2; B++)
{
io.WriteLine();
io.WriteLine();
io.WriteLine($"PLAYER {B}");
B = L700(B);
if (B == 2) { N[X[1], Y[1]] = 100; N[X[2], Y[2]] = 1000; }
}
}
int L700(int B)
{
while (true)
{
io.WriteLine("X,Y");
var (y, x) = io.Read2Numbers("&&&&&&\r");
(Y[B], X[B]) = ((int)y, (int)x);
if (X[B] <= 5 && X[B] > 0 && Y[B] <= 5 && Y[B] > 0 && N[X[B], Y[B]] == 0)
{
break;
}
io.WriteLine("Illegal Coords. Retype");
}
if (B == 2 && X[1] == X[2] && Y[1] == Y[2])
{
io.WriteLine("SAME COORD. SET TO 0");
N[X[B] + 1, Y[B] + 1] = 0;
B = 99;
}
return B;
}