Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Threading;
- using System.IO;
- namespace sänka_skäpp
- {
- class Program
- {
- static int rotera = 0;
- static int placeraX = 2;
- static int placeraY = 2;
- static int skjutPosX = 0;
- static int skjutPosY = 0;
- static int kartBredd = 8;
- static int kartHöjd = 8;
- static string[,] spelarensKarta = new string[kartBredd, kartHöjd];
- static string[,] datornsKarta = new string[kartBredd, kartHöjd];
- static bool ändraInställningar = false;
- static string senasteVinnaren = null;
- static Random slump = new Random();
- static bool[,] spelarensSkott = new bool[kartBredd, kartHöjd];
- static bool[,] datornsSkott = new bool[kartBredd, kartHöjd];
- static void Main(string[] args)
- {
- string menyVal = "";
- while (menyVal != "4")
- {
- RitaMeny();
- menyVal = Console.ReadLine();
- switch (menyVal)
- {
- case "1":
- Skapakartorna();
- Placeraskepp3();
- SpelaSänkaSkäpp();
- ÅtervändMeny();
- break;
- case "2":
- if (File.Exists("fil1.txt"))
- {
- string sensatevinnaren = File.ReadAllText("fil1.txt");
- Console.WriteLine(sensatevinnaren);
- }
- else
- {
- File.WriteAllText("fil1.txt", "Ingen har vunnit än");
- File.ReadAllText("fil1.txt");
- }
- ÅtervändMeny();
- break;
- case "3":
- Console.Clear();
- Console.WriteLine("1. Ändra storlek på kartan");
- Console.WriteLine("2. Återvänd till menyn");
- string menyVal2 = Console.ReadLine();
- switch (menyVal2)
- {
- case "1":
- Console.WriteLine("Bestäm hur bred planen skall vara");
- kartBredd = ReadintBredd();
- Console.WriteLine("Bestäm hur hög planen skall vara");
- kartHöjd = ReadintBredd();
- 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];
- Console.Clear();
- break;
- case "2":
- ÅtervändMeny();
- break;
- default:
- break;
- }
- break;
- case "4":
- break;
- default:
- Console.WriteLine("Välj ett giltigt alternativ");
- Console.ReadKey();
- Console.Clear();
- break;
- }
- }
- }
- /// <summary>
- /// Ritar menyn
- /// </summary>
- static void RitaMeny()
- {
- Console.WriteLine("1. Spela sänka skepp");
- Console.WriteLine("2. Visa senaste vinnaren");
- Console.WriteLine("3. Inställningar");
- Console.WriteLine("4. Avsluta programmet");
- }
- /// <summary>
- /// Skapar kartorna
- /// </summary>
- static void Skapakartorna()
- {
- spelarensKarta = new string[kartBredd, kartHöjd];
- datornsKarta = new string[kartBredd, kartHöjd];
- spelarensSkott = new bool[kartBredd, kartHöjd];
- datornsSkott = new bool[kartBredd, kartHöjd];
- 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;
- }
- }
- }
- /// <summary>
- /// Kollar om spelaren har vunnit
- /// </summary>
- /// <returns>True eller False</returns>
- static 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;
- }
- /// <summary>
- /// Kollar om datorn har vunnit
- /// </summary>
- /// <returns>True eller False</returns>
- static 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;
- }
- static int ReadintBredd()
- {
- int heltal;
- while (int.TryParse(Console.ReadLine(), out heltal) == false || heltal < 4)
- {
- Console.WriteLine("Planen kan inte vara mindra än 4x4. Vänligen försök igen");
- }
- return heltal;
- }
- /// <summary>
- /// Kollar om x talet fungerar
- /// </summary>
- /// <returns>Heltalet du väljer</returns>
- static int ReadintX()
- {
- int heltal;
- while ((int.TryParse(Console.ReadLine(), out heltal) == false) || heltal > kartBredd || heltal < 1)
- {
- Console.WriteLine("Du skrev ej ett giltigt tal. Försök igen");
- }
- return heltal;
- }
- /// <summary>
- /// Kollar om y talet fungerar
- /// </summary>
- /// <returns>Heltalet du väljer</returns>
- static int ReadintY()
- {
- int heltal;
- while ((int.TryParse(Console.ReadLine(), out heltal) == false) || heltal > kartHöjd || heltal < 1)
- {
- Console.WriteLine("Du skrev inte ett heltal. Försök igen");
- }
- return heltal;
- }
- static void ÅtervändMeny()
- {
- Console.WriteLine();
- Thread.Sleep(500);
- Console.WriteLine("Klicka valfri knapp för att återvända till menyn");
- Console.ReadKey();
- Console.Clear();
- }
- /// <summary>
- /// Ritar spelplanen
- /// </summary>
- static void RitaPlan()
- {
- Console.WriteLine("Spelarens karta");
- if (rotera == 0)
- {
- 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]);
- }
- else if (placeraX == x && placeraY == y)
- {
- Console.Write("X");
- }
- else if (placeraX + 1 == x && placeraY == y)
- {
- Console.Write("X");
- }
- else if (placeraX - 1 == x && placeraY == y)
- {
- Console.Write("X");
- }
- else
- {
- Console.Write(spelarensKarta[x, y]);
- }
- Console.ForegroundColor = ConsoleColor.Gray;
- }
- Console.WriteLine();
- }
- }
- else
- {
- 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]);
- }
- else if (placeraX == x && placeraY == y)
- {
- Console.Write("X");
- }
- else if (placeraX == x && placeraY + 1 == y)
- {
- Console.Write("X");
- }
- else if (placeraX == x && placeraY - 1 == y)
- {
- Console.Write("X");
- }
- else
- {
- Console.Write(spelarensKarta[x, y]);
- }
- Console.ForegroundColor = ConsoleColor.Gray;
- }
- Console.WriteLine();
- }
- }
- Console.WriteLine();
- Console.WriteLine("Datorns karta");
- for (int y = 0; y < kartHöjd; y++)
- {
- for (int x = 0; x < kartBredd; x++)
- {
- if (spelarensSkott[x, y] == true)
- {
- Console.ForegroundColor = ConsoleColor.Red;
- Console.Write(datornsKarta[x, y]);
- }
- else if (skjutPosX == x && skjutPosY == y)
- {
- Console.ForegroundColor = ConsoleColor.Green;
- Console.Write("X");
- Console.ForegroundColor = ConsoleColor.Gray;
- }
- else
- {
- Console.Write("-");
- }
- Console.ForegroundColor = ConsoleColor.Gray;
- }
- Console.WriteLine();
- }
- }
- /// <summary>
- /// Själva spelet
- /// </summary>
- static void SpelaSänkaSkäpp()
- {
- bool[] aiSkott = new bool[4];
- bool vunnit = false;
- bool skjuta = false;
- int exSkottX = 0;
- int exSkottY = 0;
- bool skjutanytt = false;
- int antalaiSkott = -1;
- while (vunnit == false)
- {
- string menySvar1 = "";
- while (menySvar1 != "1")
- {
- Console.Clear();
- RitaPlan();
- ConsoleKeyInfo info = Console.ReadKey();
- if (info.Key == ConsoleKey.W && skjutPosY - 1 >= 0)
- {
- skjutPosY -= 1;
- }
- if (info.Key == ConsoleKey.S && skjutPosY + 1 < kartHöjd)
- {
- skjutPosY += 1;
- }
- if (info.Key == ConsoleKey.A && skjutPosX - 1 >= 0)
- {
- skjutPosX -= 1;
- }
- if (info.Key == ConsoleKey.D && skjutPosX + 1 < kartBredd)
- {
- skjutPosX += 1;
- }
- if (info.Key == ConsoleKey.Enter)
- {
- spelarensSkott[skjutPosX, skjutPosY] = true;
- menySvar1 = "1";
- }
- }
- if (spelarensKarta[exSkottX, exSkottY] == "X" && skjuta == false && skjutanytt == false)
- {
- for (int i = 0; i < aiSkott.Length; i++)
- {
- aiSkott[i] = false;
- }
- if (exSkottX + 1 < kartBredd)
- {
- aiSkott[0] = true;
- }
- if (exSkottX - 1 >= 0)
- {
- aiSkott[1] = true;
- }
- if (exSkottY - 1 >= 0)
- {
- aiSkott[2] = true;
- }
- if (exSkottY + 1 < kartHöjd)
- {
- aiSkott[3] = true;
- }
- skjuta = true;
- }
- int aiSkottX = slump.Next(kartBredd);
- int aiSkottY = slump.Next(kartHöjd);
- string whileSvar = "333";
- if (skjuta == false)
- {
- while (whileSvar != "1")
- {
- if (datornsSkott[aiSkottX, aiSkottY] == false)
- {
- datornsSkott[aiSkottX, aiSkottY] = true;
- exSkottX = aiSkottX;
- exSkottY = aiSkottY;
- skjutanytt = false;
- whileSvar = "1";
- }
- else
- {
- aiSkottX = slump.Next(kartBredd);
- aiSkottY = slump.Next(kartHöjd);
- }
- }
- }
- if (skjuta == true)
- {
- antalaiSkott++;
- if (aiSkott[0] == true)
- {
- if (antalaiSkott == 0 && datornsSkott[exSkottX + 1, exSkottY] == false)
- {
- datornsSkott[exSkottX + 1, exSkottY] = true;
- }
- }
- else if (aiSkott[0] == false && antalaiSkott == 0)
- {
- antalaiSkott++;
- }
- if (aiSkott[1] == true && antalaiSkott == 1 && datornsSkott[exSkottX - 1, exSkottY] == false)
- {
- datornsSkott[exSkottX - 1, exSkottY] = true;
- }
- else if (aiSkott[1] == false && antalaiSkott == 1)
- {
- antalaiSkott++;
- }
- if (aiSkott[2] == true && antalaiSkott == 2 && datornsSkott[exSkottX, exSkottY - 1] == false)
- {
- datornsSkott[exSkottX, exSkottY - 1] = true;
- }
- else if (aiSkott[2] == false && antalaiSkott == 2)
- {
- antalaiSkott++;
- }
- if (aiSkott[3] == true)
- {
- if (antalaiSkott == 3 && datornsSkott[exSkottX, exSkottY + 1] == false)
- {
- datornsSkott[exSkottX, exSkottY + 1] = true;
- }
- }
- if (aiSkott[3] == false && antalaiSkott == 3)
- {
- if (datornsSkott[aiSkottX, aiSkottY] == false)
- {
- datornsSkott[aiSkottX, aiSkottY] = true;
- exSkottX = aiSkottX;
- exSkottY = aiSkottY;
- skjutanytt = false;
- whileSvar = "1";
- }
- else
- {
- aiSkottX = slump.Next(kartBredd);
- aiSkottY = slump.Next(kartHöjd);
- }
- }
- if (antalaiSkott == 3)
- {
- antalaiSkott = 0;
- skjuta = false;
- skjutanytt = true;
- }
- }
- if (HarSpelarenVunnit())
- {
- Console.Clear();
- RitaPlan();
- Console.WriteLine("Spelaren vann");
- Console.ReadKey();
- Console.WriteLine("Skriv in ditt namn");
- File.WriteAllText("fil1.txt", Console.ReadLine());
- vunnit = true;
- }
- else if (HarDatornVunnit())
- {
- Console.Clear();
- RitaPlan();
- Console.WriteLine("Datorn har vunnit");
- Console.ReadKey();
- vunnit = true;
- }
- }
- }
- /// <summary>
- /// Placerar skepp, likadan som Placeraskepp, men denna metoden skapar större skepp
- /// </summary>
- ///
- static void Placeraskepp3()
- {
- for (int i = 0; i < 2; i++)
- {
- string loopSvar = "waaaa";
- while (loopSvar != "!")
- {
- Console.Clear();
- Console.WriteLine("Placera dina skepp, använda WASD för att flytta runt, klicka enter för att placera skeppet");
- Console.WriteLine();
- RitaPlan();
- if (rotera == 0)
- {
- ConsoleKeyInfo info = Console.ReadKey();
- if (info.Key == ConsoleKey.W && placeraY - 1 >= 0)
- {
- placeraY -= 1;
- }
- if (info.Key == ConsoleKey.S && placeraY + 1 < kartHöjd)
- {
- placeraY += 1;
- }
- if (info.Key == ConsoleKey.A && placeraX - 2 >= 0)
- {
- placeraX -= 1;
- }
- if (info.Key == ConsoleKey.D && placeraX + 2 < kartBredd)
- {
- placeraX += 1;
- }
- if (info.Key == ConsoleKey.R && placeraY - 1 >= 0 && placeraY + 1 < kartHöjd && placeraX - 1 >= 0 && placeraX + 1 < kartBredd)
- {
- rotera = 1;
- }
- if (info.Key == ConsoleKey.Enter)
- {
- spelarensKarta[placeraX, placeraY] = "X";
- spelarensKarta[placeraX - 1, placeraY] = "X";
- spelarensKarta[placeraX + 1, placeraY] = "X";
- loopSvar = "!";
- }
- }
- else
- {
- ConsoleKeyInfo info = Console.ReadKey();
- if (info.Key == ConsoleKey.W && placeraY - 2 >= 0)
- {
- placeraY -= 1;
- }
- if (info.Key == ConsoleKey.S && placeraY + 2 < kartHöjd)
- {
- placeraY += 1;
- }
- if (info.Key == ConsoleKey.A && placeraX - 1 >= 0)
- {
- placeraX -= 1;
- }
- if (info.Key == ConsoleKey.D && placeraX + 1 < kartBredd)
- {
- placeraX += 1;
- }
- if (info.Key == ConsoleKey.R && placeraY - 1 >= 0 && placeraY + 1 < kartHöjd && placeraX - 1 >= 0 && placeraX + 1 < kartBredd)
- {
- rotera = 0;
- }
- if (info.Key == ConsoleKey.Enter)
- {
- spelarensKarta[placeraX, placeraY] = "X";
- spelarensKarta[placeraX, placeraY - 1] = "X";
- spelarensKarta[placeraX, placeraY + 1] = "X";
- loopSvar = "!";
- }
- }
- }
- }
- int datorBåtsida = slump.Next(2);
- int datorbåtX = slump.Next(kartBredd);
- int datorbåtY = slump.Next(kartHöjd);
- // Båten läggs XXX om datorBåtsida == 0
- string ett = "";
- while (ett != "!")
- {
- if (datorBåtsida == 0)
- {
- if (datorbåtX + 2 <= kartBredd && datorbåtX - 1 >= 0)
- {
- datornsKarta[datorbåtX, datorbåtY] = "X";
- datornsKarta[datorbåtX + 1, datorbåtY] = "X";
- datornsKarta[datorbåtX - 1, datorbåtY] = "X";
- ett = "!";
- }
- else
- {
- datorbåtX = slump.Next(kartBredd);
- datorbåtY = slump.Next(kartHöjd);
- }
- }
- else
- {
- if (datorbåtY + 1 >= 0 && datorbåtY + 2 <= kartHöjd)
- {
- datornsKarta[datorbåtX, datorbåtY] = "X";
- datornsKarta[datorbåtX, datorbåtY + 1] = "X";
- datornsKarta[datorbåtX, datorbåtY - 1] = "X";
- ett = "!";
- }
- else
- {
- datorbåtX = slump.Next(kartBredd);
- datorbåtY = slump.Next(kartHöjd);
- }
- }
- }
- datorbåtY = slump.Next(0, kartHöjd);
- datorbåtX = slump.Next(0, kartBredd);
- datorBåtsida = slump.Next(2);
- string wa = "";
- while (wa != "!")
- {
- if (datorBåtsida == 0)
- {
- if (datorbåtX + 2 <= kartBredd && datorbåtX - 1 >= 0)
- {
- datornsKarta[datorbåtX, datorbåtY] = "X";
- datornsKarta[datorbåtX + 1, datorbåtY] = "X";
- datornsKarta[datorbåtX - 1, datorbåtY] = "X";
- wa = "!";
- }
- else
- {
- datorbåtX = slump.Next(kartBredd);
- datorbåtY = slump.Next(kartHöjd);
- }
- }
- else
- {
- if (datorbåtY - 1 >= 0 && datorbåtY + 2 <= kartHöjd)
- {
- datornsKarta[datorbåtX, datorbåtY] = "X";
- datornsKarta[datorbåtX, datorbåtY + 1] = "X";
- datornsKarta[datorbåtX, datorbåtY - 1] = "X";
- wa = "!";
- }
- else
- {
- datorbåtX = slump.Next(kartBredd);
- datorbåtY = slump.Next(kartHöjd);
- }
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment