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;
- namespace ConsoleApp2
- {
- class Program
- {
- static int kartBredd = 6;
- static int kartHöjd = 4;
- static string[,] spelarensKarta = new string[kartBredd, kartHöjd];
- static string[,] datornsKarta = new string[kartBredd, kartHöjd];
- 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)
- {
- Skapakartorna();
- string menyVal = "";
- while (menyVal != "3")
- {
- RitaMeny();
- menyVal = Console.ReadLine();
- switch (menyVal)
- {
- case "1":
- Placeraskepp();
- SpelaSänkaSkäpp();
- ÅtervändMeny();
- break;
- case "2":
- if (senasteVinnaren != null)
- {
- Console.WriteLine($"Senaste vinnaren var {senasteVinnaren}");
- }
- else
- {
- Console.WriteLine("Ingen har vunnit än");
- }
- ÅtervändMeny();
- break;
- case "3":
- break;
- default:
- Console.WriteLine("Välj ett giltigt alternativ");
- break;
- }
- }
- }
- /// <summary>
- /// Ritar menyn
- /// </summary>
- static void RitaMeny()
- {
- Console.WriteLine("1. Spela sänka skepp");
- Console.WriteLine("2. Visa senaste vinnaren");
- Console.WriteLine("3. Avsluta programmet");
- }
- /// <summary>
- /// Skapar kartorna
- /// </summary>
- static 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;
- }
- }
- }
- /// <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;
- }
- /// <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 inte ett heltal. 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");
- 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]);
- 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
- {
- Console.Write("-");
- }
- Console.ForegroundColor = ConsoleColor.Gray;
- }
- Console.WriteLine();
- }
- }
- /// <summary>
- /// Själva spelet
- /// </summary>
- static void SpelaSänkaSkäpp()
- {
- bool vunnit = false;
- while (vunnit == false)
- {
- Console.Clear();
- RitaPlan();
- Console.WriteLine("Var vill du skjuta? (X)");
- int x = ReadintX();
- Console.WriteLine("Var vill du skjuta? (Y)");
- int y = ReadintY();
- spelarensSkott[x - 1, y - 1] = true;
- datornsSkott[slump.Next(kartBredd), slump.Next(kartHöjd)] = true;
- if (HarSpelarenVunnit())
- {
- Console.Clear();
- RitaPlan();
- Console.WriteLine("Spelaren vann");
- Console.ReadKey();
- Console.WriteLine("Skriv in ditt namn");
- senasteVinnaren = Console.ReadLine();
- vunnit = true;
- }
- else if (HarDatornVunnit())
- {
- Console.Clear();
- RitaPlan();
- Console.WriteLine("Datorn har vunnit");
- Console.ReadKey();
- vunnit = true;
- }
- }
- }
- /// <summary>
- /// Placerar skäppen på planen
- /// </summary>
- static void Placeraskepp()
- {
- Console.Clear();
- Console.WriteLine($"Spelplanen är {kartBredd} bred och {kartHöjd} hög");
- Console.WriteLine();
- Console.WriteLine("Placera ditt skepp (X)");
- int placeraSkeppX = ReadintX()- 1;
- Console.WriteLine("Placera ditt skepp (Y)");
- int placeraSkeppY = ReadintY() - 1;
- spelarensKarta[placeraSkeppX, placeraSkeppY] = "X";
- Console.WriteLine("Placera ditt andra skepp (X)");
- placeraSkeppX = ReadintX() - 1;
- Console.WriteLine("Placera ditt andra skepp (Y)");
- placeraSkeppY = ReadintY() - 1;
- spelarensKarta[placeraSkeppX, placeraSkeppY] = "X";
- datornsKarta[slump.Next(kartBredd), slump.Next(kartHöjd)] = "X";
- datornsKarta[slump.Next(kartBredd), slump.Next(kartHöjd)] = "X";
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment