Advertisement
Guest User

Untitled

a guest
Jul 17th, 2017
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 15.73 KB | None | 0 0
  1. /*
  2.  * Johan Halvardsson - joha1038
  3.  * 2011-01-24
  4.  * Datateknik GR (A), Programmering i C#.NET, 7,5 hp
  5.  * Labb 3
  6.  *
  7.  */
  8.  
  9. using System;
  10. using System.Collections.Generic;
  11. using System.Linq;
  12. using System.Text;
  13.  
  14. namespace Labb3
  15. {
  16.     class Labb3
  17.     {
  18.         //Skapar en const variabel som håller gravity, den ska/får inte ändras.
  19.         const double gravity = 9.81;
  20.  
  21.         static void Main(string[] args)
  22.         {
  23.                
  24.             //Skapar behövliga variablar för progammet
  25.             int speed, monkey, hits = 0, tries = 0, x = 0;
  26.             double throwAngle, wind, angle, length;
  27.             string programExit =" ";
  28.             //Ändrar bakgrundfärgen/textfärgen i consolefönstret
  29.             Console.BackgroundColor = ConsoleColor.Blue;
  30.             Console.ForegroundColor = ConsoleColor.White;
  31.             Console.SetWindowSize(100, 50);
  32.             Console.Title = "Apan & bananen - The Game";
  33.  
  34.             //Skapar ett ojbekt av min class labb3. Objekt namnet jag gav är apanSpelet.
  35.             Labb3 apanSpelet = new Labb3();
  36.  
  37.             //Här skapar jag en while sats som kollar om man tryckt på bokstaven n/N på tangentbordet. Om man har så vill man avsluta.
  38.             while ((programExit != "n") && (programExit != "N"))
  39.                 {
  40.                     //Inför varje start så tar jag bort allt som varit tidigare i consolen
  41.                     Console.Clear();
  42.                    
  43.                 //Skapar 3 arrayer av typen int. Sätter fast värde på 6st platser i variabln då man har 6 försök.
  44.                     int[] throwLength = new int[6];
  45.                     int[] distanceFromMonkey = new int[6];
  46.                     int[] windArray = new int[6];
  47.                 //Sätter försöken till 1
  48.                     tries = 1;
  49.                 //nollställer x
  50.                     x = 0;  
  51.                 //try/catch används om någon inte skriver in ett tal då avbröts det och man får börja om. Eller avsluta.
  52.                     try
  53.                     {
  54.                        
  55.                         //En for loop som körs så länge apan är längre bort än 10.
  56.                         for (monkey = 100; monkey >= 10; monkey = monkey - 10)
  57.                         {
  58.                            
  59.                             //Använder mig av min metod getWind() som hämtar vinden.
  60.                             wind = apanSpelet.getWind();
  61.  
  62.                             /*
  63.                              * Användes för testkörning
  64.                              * Console.WriteLine(wind);                
  65.                              */
  66.  
  67.                             //Kollar om det är första försöket eller inte.
  68.                             if (tries == 1)
  69.                             {
  70.                                
  71.                                
  72.                                 string welcome = "Välkommen till apan och bananen! Du har 6 försök att försöka träffa apan";
  73.                                 //Säger välkommen till användaren
  74.                                
  75.                                 Console.WriteLine("***************************************************************************************************");
  76.                                 Console.WriteLine("***************************************************************************************************\n");
  77.                                 Console.WriteLine(welcome.PadLeft(85));
  78.                                 Console.WriteLine("\n***************************************************************************************************");
  79.                                 Console.WriteLine("***************************************************************************************************");
  80.                                
  81.                                
  82.  
  83.                                 //Skriver ut antal försök.
  84.                                 writeYellowMessage("\nFörsök " + tries + "\n");
  85.                                 //Användaren skriver in hur hårt den vill kasta sin banan. Man får även veta vad vinden är.
  86.                                 Console.WriteLine("Hur hårt vill du kasta din banan? Vinden är {0}m/s.", wind);
  87.  
  88.                                 //Gör om det som användaren skriver in till en int och sparar den i variablen speed.
  89.                                 speed = int.Parse(Console.ReadLine());
  90.  
  91.                                 //Användaren skriver in vilken vinkel man vill kasta med
  92.                                 Console.WriteLine("Vilken vinkel vill du kasta din banan?");
  93.  
  94.                                 //Gör om det som användaren skriver in till en Double och sparar den i variablen throwAngle.
  95.                                 throwAngle = Double.Parse(Console.ReadLine());
  96.  
  97.                             }
  98.                             else//Om inte första försöket skrivs detta ut istället. Endast för att visa vilket försök man är på.
  99.                             {
  100.                                 //Skriver ut antal försök.
  101.                                 writeYellowMessage("Försök " + tries +"\n");
  102.                                 //Skriver ut hur långt ifrån apan är.
  103.                                 Console.WriteLine("Apan står nu {0} meter framför dig!", monkey);
  104.                                
  105.                                 //Användaren skriver in hur hårt den vill kasta sin banan. Man får även veta vad vinden är och vilket försök man är på.
  106.                                 Console.WriteLine("Hur hårt vill du kasta din banan? Vinden är {0}m/s.", wind);
  107.  
  108.                                 //Gör om det som användaren skriver in till en int och sparar den i variablen speed.
  109.                                 speed = int.Parse(Console.ReadLine());
  110.  
  111.                                 //Användaren skriver in vilken vinkel man vill kasta med
  112.                                 Console.WriteLine("Vilken vinkel vill du kasta din banan?");
  113.  
  114.                                 //Gör om det som användaren skriver in till en Double och sparar den i variablen throwAngle.
  115.                                 throwAngle = Double.Parse(Console.ReadLine());
  116.  
  117.                             }
  118.  
  119.  
  120.                             //Använder mig av min metod toRadian() som gör om graderna till radian. Sparar värdet i variablen angle.
  121.                             angle = apanSpelet.toRadian(throwAngle);
  122.  
  123.                             //För att räkna ut längden använder jag mig av min metod toLength().
  124.                             length = apanSpelet.toLength(speed, angle, wind);
  125.  
  126.                             //Användes för att felsöka
  127.                             //Console.WriteLine("apan står på {0}\n",monkey);
  128.  
  129.                             //skapar en ny variabel som ska hålla resultatet av hur långt ifrån man var/är.
  130.                             int distance = (monkey - (int)length);
  131.                             //Använder mig av Math.Abs för att ta bort negativa tal.
  132.                             distance = Math.Abs(distance);
  133.  
  134.                             Console.WriteLine(throwLength.Length);
  135.                             //if sats som körs varje runda och kollar om x är mindre än throwLength arrayen.(tog bara den arrayen då de är lika stora).
  136.                             if (x < throwLength.Length)
  137.                             {
  138.  
  139.                                 throwLength[x] = (int)length;          //Sätter längden på kastet i throwLength och sparar den i arrayen                    
  140.                                 distanceFromMonkey[x] = distance;       //Sätter hur långt ifrån man var i distanceFromMonkey arrayen
  141.                                 windArray[x] = (int)wind;               //Sätter vinden i en array för utskrift i sammanfattningen.
  142.  
  143.                             }
  144.                             x++; //ökar x med 1  för varje loop. Så att array värdena sparas på rätt ställe.
  145.  
  146.                             //Här kollar jag om längden är rätt. Är den det så får man en träff
  147.                             //Satte spannet +5 och -5 ifrån värdet monkey. För att göra spelet lättare.              
  148.                             if (monkey - 5 < length && length < monkey + 5)
  149.                             {
  150.                                 writeHitMessage("\nDu träffade apan!\n");                              
  151.                                 hits++;
  152.                                 tries++;
  153.                             }
  154.                             else
  155.                             {
  156.                                 writeWrongMessage("\nTyvärr, du missade.\n");
  157.                                
  158.                                
  159.                                // Console.WriteLine("\nTyvärr, du missade.");
  160.                                
  161.                                 Console.WriteLine("Du kastade {0} meter apan stod på {1} meter. Du missade med {2} meter\n\n", length, monkey, distance);
  162.                                 Console.WriteLine("-------------------------------------------------------------------------");// Man får lite info efter varje kast.
  163.                                 tries++;
  164.                             }
  165.  
  166.  
  167.  
  168.                             //Om man har försökt 6gånger så bryter man loopen, skriver == 7 för jag börjar på 1.
  169.                             if (tries == 7)
  170.                             {                              
  171.                                 Console.WriteLine("Du har tyvärr inga mer försök\n");
  172.                                 Console.WriteLine("-------------------------------------------------------------------------");
  173.                                 writeYellowMessage("Sammanfattning av dina kast:");                                
  174.                                  Console.WriteLine("-------------------------------------------------------------------------");                            
  175.                                 writeYellowMessage("\tLängden på dina kast\tSå långt ifrån var du\tVinden var");
  176.                                 Console.WriteLine("-------------------------------------------------------------------------");
  177.                                 //Skriver ut värdena i arrayerna. (använder mig även här av bara en array.length då de är lika stora). En for loop görs så alla värden skrivs ut.
  178.                                 for (int j = 0; j < throwLength.Length; j++)
  179.                                 {
  180.                                    
  181.                                         Console.WriteLine((j + 1) + "." + "\t" + throwLength[j] + "m\t\t\t" + distanceFromMonkey[j] + "m\t\t\t"+windArray[j]);
  182.                                         Console.WriteLine("-------------------------------------------------------------------------");
  183.                                    
  184.                                 }
  185.                                
  186.                                 if (hits > 1)
  187.                                 {
  188.                                     Console.WriteLine("Du träffade apan {0} gånger.\n", hits); //Om man träffat apan någon gång skrivs detta ut och talar om hur många gånger man träffade.
  189.                                 }
  190.                                 Console.WriteLine("Försök gärna igen.");
  191.                                 Console.WriteLine("----------------------------------------------------------------");
  192.                                 break;
  193.                             }
  194.  
  195.                             //Om du istället har träffat apan 3ggr skrivs detta ut.
  196.                             if (hits == 3)
  197.                             {
  198.                                 Console.WriteLine("Du har nu träffat apan 3 gånger och därmed klarat spelet!\nBra jobbat!");
  199.                                 Console.WriteLine("\tLängden på dina kast\t\tSå långt ifrån var du\n");
  200.                                 //Skriver ut värdena i arrayerna. (använder mig även här av bara en array.length då de är lika stora). En for loop görs så alla värden skrivs ut.
  201.                                 for (int j = 0; j < throwLength.Length; j++)
  202.                                 {
  203.                                  
  204.                                     // Console.WriteLine("Försök " + (j + 1) + " kastade du " + throwLength[j] + " meter.\t Du missade apan med " + distanceFromMonkey[j] + " meter.\n");
  205.                                     Console.WriteLine((j + 1) + "\t" + throwLength[j] + "m\t\t\t\t" + distanceFromMonkey[j] + "m\n");
  206.  
  207.  
  208.                                 }
  209.                                 break;
  210.                             }
  211.  
  212.                            
  213.  
  214.                         }//slut for loop
  215.                     }
  216.                         //Om man skriver in något annat än ett tal så kommer man hit. Därefter får du välja om du vill börja om eller avsluta.
  217.                     catch
  218.                     {
  219.                         Console.Error.WriteLine("\nDu har matat in ett ogiligt värde.");
  220.                        
  221.                     }
  222.  
  223.                 Console.WriteLine("\nTryck valfri tangent för att börja om eller N/n för att avsluta.");
  224.                 programExit = Console.ReadLine();
  225.  
  226.         }//slut while loop
  227.              
  228.            
  229.            
  230.             //Avslutar programet.
  231.             Console.WriteLine("Tryck enter för att stänga fönstret");
  232.             Console.ReadLine();
  233.             Environment.Exit(0);
  234.  
  235.  
  236.         }//Slut static Main
  237.  
  238.  
  239.         //MINA METODER
  240.  
  241.         //En metod för att skapa ett slumptal på mellan -5 och +5 som ska agera vinden.
  242.         public double getWind()
  243.         {
  244.             double wind;
  245.             Random rnd = new Random();
  246.             wind = rnd.NextDouble() * 10;
  247.             wind = wind - 5.0;
  248.             wind = Math.Round(wind);
  249.             return wind;
  250.          
  251.         }
  252.  
  253.         //En metod som gör om graderna till en radian.
  254.         public double toRadian(double throwAngle)
  255.         {
  256.             double angle;
  257.             angle = throwAngle * Math.PI / 180;
  258.             return angle;
  259.         }
  260.  
  261.         //En metod som räknar ut hur långt man kastar. Retunerar längden i form av int.
  262.         public int toLength(int speed, double angle, double wind)
  263.         {            
  264.             Double length = 2 * speed * speed * Math.Cos(angle) * Math.Sin(angle) / gravity - wind * speed * Math.Sin(angle) / gravity;
  265.             int theLength = (int)length;
  266.             return theLength;
  267.         }
  268.  
  269.         //En metod som ändrar textfärgen till röd vid missad träff
  270.         static void writeWrongMessage(string value)
  271.         {
  272.             Console.BackgroundColor = ConsoleColor.Blue;
  273.             Console.ForegroundColor = ConsoleColor.Red;
  274.             Console.WriteLine(value.PadRight(Console.WindowWidth - 1));
  275.  
  276.             Console.ForegroundColor = ConsoleColor.White;//Ändrar tillbaka till vit textfärg.            
  277.         }
  278.  
  279.         //En metod som ändrar textfärgen till röd vid missad träff
  280.         static void writeHitMessage(string value)
  281.         {
  282.             Console.BackgroundColor = ConsoleColor.Blue;
  283.             Console.ForegroundColor = ConsoleColor.Green;
  284.             Console.WriteLine(value.PadRight(Console.WindowWidth - 1));
  285.  
  286.             Console.ForegroundColor = ConsoleColor.White;//Ändrar tillbaka till vit textfärg.            
  287.         }
  288.  
  289.         static void writeYellowMessage(string value)
  290.         {
  291.             Console.BackgroundColor = ConsoleColor.Blue;
  292.             Console.ForegroundColor = ConsoleColor.Yellow;
  293.             Console.WriteLine(value);
  294.  
  295.             Console.ForegroundColor = ConsoleColor.White;//Ändrar tillbaka till vit textfärg.            
  296.         }
  297.  
  298.        
  299.     }//Slut class labb3
  300.  
  301.      
  302.      
  303. }//Slut namespace
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement