Hela programmet - Sänka Skepp
int kartBredd = 6;
int kartHöjd = 4;
string[,] spelarensKarta = new string[kartBredd, kartHöjd];
string[,] datornsKarta = new string[kartBredd, kartHöjd];
bool[,] spelarensSkott = new bool[kartBredd, kartHöjd];
bool[,] datornsSkott = new bool[kartBredd, kartHöjd];
Random slump = new Random();
SkapaKartorna();
PlaceraSkepp();
SpelaSänkaSkepp();
// Fyller spelarens och datorns kartor med tomma rutor
void SkapaKartorna()
{
for (int y = 0; y < kartHöjd; y++)
{
for (int x = 0; x < kartBredd; x++)
{
spelarensKarta[x, y] = "O";
datornsKarta[x, y] = "O";
spelarensSkott[x, y] = false;
datornsSkott[x, y] = false;
}
}
}
// Placerar X på några av spelarens och datorns platser
void PlaceraSkepp()
{
spelarensKarta[1, 3] = "X";
spelarensKarta[2, 0] = "X";
datornsKarta[3, 2] = "X";
datornsKarta[1, 3] = "X";
}
// Spelets huvudloop
void SpelaSänkaSkepp()
{
bool harNågonVunnit = false;
while (harNågonVunnit == false)
{
Console.Clear();
RitaSpelplanen();
Console.WriteLine("Var vill du skjuta? (X)");
int x = ReadInt();
Console.WriteLine("Var vill du skjuta? (Y)");
int y = ReadInt();
spelarensSkott[x - 1, y - 1] = true;
datornsSkott[slump.Next(kartBredd), slump.Next(kartHöjd)] = true;
if (HarSpelarenVunnit())
{
Console.Clear();
RitaSpelplanen();
Console.WriteLine("Spelaren vann");
Console.ReadKey();
harNågonVunnit = true;
}
else if (HarDatornVunnit())
{
Console.Clear();
RitaSpelplanen();
Console.WriteLine("Datorn vann");
Console.ReadKey();
harNågonVunnit = true;
}
}
}
// Ritar ut spelarens och datorns kartor
void RitaSpelplanen()
{
Console.WriteLine("Spelarens karta");
for (int y = 0; y < kartHöjd; y++)
{
for (int x = 0; x < kartBredd; x++)
{
if (datornsSkott[x, y] == true)
{
Console.ForegroundColor = ConsoleColor.Red;
}
Console.Write(spelarensKarta[x,y]);
// Återställ färgen till grå
Console.ForegroundColor = ConsoleColor.Gray;
}
Console.WriteLine();
}
Console.WriteLine();
// Rita datorns karta
Console.WriteLine("Datorns karta");
for (int y = 0; y < kartHöjd; y++)
{
for (int x = 0; x < kartBredd; x++)
{
// Endast rutor som spelaren har skjutit på syns
if (spelarensSkott[x, y] == true)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.Write(datornsKarta[x, y]);
}
else
{
Console.Write("-");
}
// Återställ färgen till grå
Console.ForegroundColor = ConsoleColor.Gray;
}
Console.WriteLine();
}
}
// Kollat om spelaren har vunnit
bool HarSpelarenVunnit()
{
for (int y = 0; y < kartHöjd; y++)
{
for (int x = 0; x < kartBredd; x++)
{
if (datornsKarta[x, y] == "X" && spelarensSkott[x, y] == false)
{
return false;
}
}
}
return true;
}
// Kollar om datorn har vunnit
bool HarDatornVunnit()
{
for (int y = 0; y < kartHöjd; y++)
{
for (int x = 0; x < kartBredd; x++)
{
if (spelarensKarta[x, y] == "X" && datornsSkott[x, y] == false)
{
return false;
}
}
}
return true;
}
// Läser in ett heltal från användaren
int ReadInt()
{
int heltal;
while (int.TryParse(Console.ReadLine(), out heltal) == false)
{
Console.WriteLine("Du skrev inte in ett heltal. Försök igen.");
}
return heltal;
}