botgob

sänka skepp

Nov 26th, 2017
270
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 8.63 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Threading;
  7.  
  8. namespace ConsoleApp2
  9. {
  10.     class Program
  11.     {
  12.         static int kartBredd = 6;
  13.         static int kartHöjd = 4;
  14.         static string[,] spelarensKarta = new string[kartBredd, kartHöjd];
  15.         static string[,] datornsKarta = new string[kartBredd, kartHöjd];
  16.         static string senasteVinnaren = null;
  17.  
  18.         static Random slump = new Random();
  19.  
  20.         static bool[,] spelarensSkott = new bool[kartBredd, kartHöjd];
  21.         static bool[,] datornsSkott = new bool[kartBredd, kartHöjd];
  22.  
  23.         static void Main(string[] args)
  24.         {
  25.             Skapakartorna();
  26.            
  27.             string menyVal = "";
  28.             while (menyVal != "3")
  29.             {
  30.                 RitaMeny();
  31.                 menyVal = Console.ReadLine();
  32.                 switch (menyVal)
  33.                 {
  34.                     case "1":
  35.                         Placeraskepp();
  36.                         SpelaSänkaSkäpp();
  37.                         ÅtervändMeny();
  38.                         break;
  39.                     case "2":
  40.                         if (senasteVinnaren != null)
  41.                         {
  42.                             Console.WriteLine($"Senaste vinnaren var {senasteVinnaren}");
  43.                         }
  44.                         else
  45.                         {
  46.                             Console.WriteLine("Ingen har vunnit än");
  47.                         }
  48.                         ÅtervändMeny();
  49.                         break;
  50.                     case "3":
  51.                         break;
  52.                     default:
  53.                         Console.WriteLine("Välj ett giltigt alternativ");
  54.                         break;
  55.                 }
  56.                
  57.             }
  58.            
  59.         }
  60.         /// <summary>
  61.         /// Ritar menyn
  62.         /// </summary>
  63.         static void RitaMeny()
  64.         {
  65.             Console.WriteLine("1. Spela sänka skepp");
  66.             Console.WriteLine("2. Visa senaste vinnaren");
  67.             Console.WriteLine("3. Avsluta programmet");
  68.         }
  69.         /// <summary>
  70.         /// Skapar kartorna
  71.         /// </summary>
  72.         static void Skapakartorna()
  73.         {
  74.             for (int y = 0; y < kartHöjd; y++)
  75.             {
  76.                 for (int x = 0; x < kartBredd; x++)
  77.                 {
  78.                     spelarensKarta[x, y] = "O";
  79.                     datornsKarta[x, y] = "O";
  80.                     spelarensSkott[x, y] = false;
  81.                     datornsSkott[x, y] = false;
  82.  
  83.                 }
  84.             }
  85.         }
  86.  
  87.         /// <summary>
  88.         /// Kollar om spelaren har vunnit
  89.         /// </summary>
  90.         /// <returns>True eller False</returns>
  91.         static bool HarSpelarenVunnit()
  92.         {
  93.             for (int y = 0; y < kartHöjd; y++)
  94.             {
  95.                 for (int x = 0; x < kartBredd; x++)
  96.                 {
  97.                     if (datornsKarta[x, y] == "X" && spelarensSkott[x, y] == false)
  98.                     {
  99.                         return false;
  100.                     }
  101.                 }
  102.             }
  103.             return true;
  104.         }
  105.  
  106.         /// <summary>
  107.         /// Kollar om datorn har vunnit
  108.         /// </summary>
  109.         /// <returns>True eller False</returns>
  110.         static bool HarDatornVunnit()
  111.         {
  112.             for (int y = 0; y < kartHöjd; y++)
  113.             {
  114.                 for (int x = 0; x < kartBredd; x++)
  115.                 {
  116.                     if (spelarensKarta[x, y] == "X" && datornsSkott[x, y] == false)
  117.                     {
  118.                         return false;
  119.                     }
  120.                 }
  121.             }
  122.             return true;
  123.         }
  124.  
  125.         /// <summary>
  126.         /// Kollar om x talet fungerar
  127.         /// </summary>
  128.         /// <returns>Heltalet du väljer</returns>
  129.         static int ReadintX()
  130.         {
  131.             int heltal;
  132.             while ((int.TryParse(Console.ReadLine(), out heltal) == false) || heltal > kartBredd || heltal < 1)
  133.             {
  134.                 Console.WriteLine("Du skrev inte ett heltal. Försök igen");
  135.             }
  136.             return heltal;
  137.         }
  138.  
  139.         /// <summary>
  140.         /// Kollar om y talet fungerar
  141.         /// </summary>
  142.         /// <returns>Heltalet du väljer</returns>
  143.         static int ReadintY()
  144.         {
  145.             int heltal;
  146.             while ((int.TryParse(Console.ReadLine(), out heltal) == false) || heltal > kartHöjd || heltal < 1)
  147.             {
  148.                 Console.WriteLine("Du skrev inte ett heltal. Försök igen");
  149.             }
  150.             return heltal;
  151.         }
  152.  
  153.         static void ÅtervändMeny()
  154.         {
  155.             Console.WriteLine();
  156.             Thread.Sleep(500);
  157.             Console.WriteLine("Klicka valfri knapp för att återvända till menyn");
  158.             Console.ReadKey();
  159.             Console.Clear();
  160.         }
  161.  
  162.         /// <summary>
  163.         /// Ritar spelplanen
  164.         /// </summary>
  165.         static void RitaPlan()
  166.         {
  167.             Console.WriteLine("Spelarens karta");
  168.             for (int y = 0; y < kartHöjd; y++)
  169.             {
  170.                 for (int x = 0; x < kartBredd; x++)
  171.                 {
  172.                     if (datornsSkott[x, y] == true)
  173.                     {
  174.                         Console.ForegroundColor = ConsoleColor.Red;
  175.                     }
  176.                     Console.Write(spelarensKarta[x, y]);
  177.                     Console.ForegroundColor = ConsoleColor.Gray;
  178.                 }
  179.                 Console.WriteLine();
  180.             }
  181.             Console.WriteLine();
  182.             Console.WriteLine("Datorns karta");
  183.             for (int y = 0; y < kartHöjd; y++)
  184.             {
  185.                 for (int x = 0; x < kartBredd; x++)
  186.                 {
  187.                     if (spelarensSkott[x, y] == true)
  188.                     {
  189.                         Console.ForegroundColor = ConsoleColor.Red;
  190.                         Console.Write(datornsKarta[x, y]);
  191.                     }
  192.                     else
  193.                     {
  194.                         Console.Write("-");
  195.                     }
  196.  
  197.                     Console.ForegroundColor = ConsoleColor.Gray;
  198.                 }
  199.                
  200.                 Console.WriteLine();
  201.             }
  202.         }
  203.  
  204.         /// <summary>
  205.         /// Själva spelet
  206.         /// </summary>
  207.         static void SpelaSänkaSkäpp()
  208.         {
  209.             bool vunnit = false;
  210.             while (vunnit == false)
  211.             {
  212.                 Console.Clear();
  213.                 RitaPlan();
  214.                 Console.WriteLine("Var vill du skjuta? (X)");
  215.                 int x = ReadintX();
  216.                 Console.WriteLine("Var vill du skjuta? (Y)");
  217.                 int y = ReadintY();
  218.                 spelarensSkott[x - 1, y - 1] = true;
  219.                 datornsSkott[slump.Next(kartBredd), slump.Next(kartHöjd)] = true;
  220.                 if (HarSpelarenVunnit())
  221.                 {
  222.                     Console.Clear();
  223.                     RitaPlan();
  224.                     Console.WriteLine("Spelaren vann");
  225.                     Console.ReadKey();
  226.                     Console.WriteLine("Skriv in ditt namn");
  227.                     senasteVinnaren = Console.ReadLine();
  228.                     vunnit = true;
  229.                 }
  230.                 else if (HarDatornVunnit())
  231.                 {
  232.                     Console.Clear();
  233.                     RitaPlan();
  234.                     Console.WriteLine("Datorn har vunnit");
  235.                     Console.ReadKey();
  236.                     vunnit = true;
  237.                 }
  238.             }
  239.         }
  240.  
  241.         /// <summary>
  242.         /// Placerar skäppen på planen
  243.         /// </summary>
  244.         static void Placeraskepp()
  245.         {
  246.             Console.Clear();
  247.             Console.WriteLine($"Spelplanen är {kartBredd} bred och {kartHöjd} hög");
  248.             Console.WriteLine();
  249.             Console.WriteLine("Placera ditt skepp (X)");
  250.             int placeraSkeppX = ReadintX()- 1;
  251.             Console.WriteLine("Placera ditt skepp (Y)");
  252.             int placeraSkeppY = ReadintY() - 1;
  253.  
  254.             spelarensKarta[placeraSkeppX, placeraSkeppY] = "X";
  255.  
  256.             Console.WriteLine("Placera ditt andra skepp (X)");
  257.             placeraSkeppX = ReadintX() - 1;
  258.             Console.WriteLine("Placera ditt andra skepp (Y)");
  259.             placeraSkeppY = ReadintY() - 1;
  260.             spelarensKarta[placeraSkeppX, placeraSkeppY] = "X";
  261.             datornsKarta[slump.Next(kartBredd), slump.Next(kartHöjd)] = "X";
  262.             datornsKarta[slump.Next(kartBredd), slump.Next(kartHöjd)] = "X";
  263.         }
  264.     }
  265. }
Advertisement
Add Comment
Please, Sign In to add comment