Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Johan Halvardsson - joha1038
- * 2011-01-24
- * Datateknik GR (A), Programmering i C#.NET, 7,5 hp
- * Labb 3
- *
- */
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace Labb3
- {
- class Labb3
- {
- //Skapar en const variabel som håller gravity, den ska/får inte ändras.
- const double gravity = 9.81;
- static void Main(string[] args)
- {
- //Skapar behövliga variablar för progammet
- int speed, monkey, hits = 0, tries = 0, x = 0;
- double throwAngle, wind, angle, length;
- string programExit =" ";
- //Ändrar bakgrundfärgen/textfärgen i consolefönstret
- Console.BackgroundColor = ConsoleColor.Blue;
- Console.ForegroundColor = ConsoleColor.White;
- Console.SetWindowSize(100, 50);
- Console.Title = "Apan & bananen - The Game";
- //Skapar ett ojbekt av min class labb3. Objekt namnet jag gav är apanSpelet.
- Labb3 apanSpelet = new Labb3();
- //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.
- while ((programExit != "n") && (programExit != "N"))
- {
- //Inför varje start så tar jag bort allt som varit tidigare i consolen
- Console.Clear();
- //Skapar 3 arrayer av typen int. Sätter fast värde på 6st platser i variabln då man har 6 försök.
- int[] throwLength = new int[6];
- int[] distanceFromMonkey = new int[6];
- int[] windArray = new int[6];
- //Sätter försöken till 1
- tries = 1;
- //nollställer x
- x = 0;
- //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.
- try
- {
- //En for loop som körs så länge apan är längre bort än 10.
- for (monkey = 100; monkey >= 10; monkey = monkey - 10)
- {
- //Använder mig av min metod getWind() som hämtar vinden.
- wind = apanSpelet.getWind();
- /*
- * Användes för testkörning
- * Console.WriteLine(wind);
- */
- //Kollar om det är första försöket eller inte.
- if (tries == 1)
- {
- string welcome = "Välkommen till apan och bananen! Du har 6 försök att försöka träffa apan";
- //Säger välkommen till användaren
- Console.WriteLine("***************************************************************************************************");
- Console.WriteLine("***************************************************************************************************\n");
- Console.WriteLine(welcome.PadLeft(85));
- Console.WriteLine("\n***************************************************************************************************");
- Console.WriteLine("***************************************************************************************************");
- //Skriver ut antal försök.
- writeYellowMessage("\nFörsök " + tries + "\n");
- //Användaren skriver in hur hårt den vill kasta sin banan. Man får även veta vad vinden är.
- Console.WriteLine("Hur hårt vill du kasta din banan? Vinden är {0}m/s.", wind);
- //Gör om det som användaren skriver in till en int och sparar den i variablen speed.
- speed = int.Parse(Console.ReadLine());
- //Användaren skriver in vilken vinkel man vill kasta med
- Console.WriteLine("Vilken vinkel vill du kasta din banan?");
- //Gör om det som användaren skriver in till en Double och sparar den i variablen throwAngle.
- throwAngle = Double.Parse(Console.ReadLine());
- }
- 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å.
- {
- //Skriver ut antal försök.
- writeYellowMessage("Försök " + tries +"\n");
- //Skriver ut hur långt ifrån apan är.
- Console.WriteLine("Apan står nu {0} meter framför dig!", monkey);
- //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å.
- Console.WriteLine("Hur hårt vill du kasta din banan? Vinden är {0}m/s.", wind);
- //Gör om det som användaren skriver in till en int och sparar den i variablen speed.
- speed = int.Parse(Console.ReadLine());
- //Användaren skriver in vilken vinkel man vill kasta med
- Console.WriteLine("Vilken vinkel vill du kasta din banan?");
- //Gör om det som användaren skriver in till en Double och sparar den i variablen throwAngle.
- throwAngle = Double.Parse(Console.ReadLine());
- }
- //Använder mig av min metod toRadian() som gör om graderna till radian. Sparar värdet i variablen angle.
- angle = apanSpelet.toRadian(throwAngle);
- //För att räkna ut längden använder jag mig av min metod toLength().
- length = apanSpelet.toLength(speed, angle, wind);
- //Användes för att felsöka
- //Console.WriteLine("apan står på {0}\n",monkey);
- //skapar en ny variabel som ska hålla resultatet av hur långt ifrån man var/är.
- int distance = (monkey - (int)length);
- //Använder mig av Math.Abs för att ta bort negativa tal.
- distance = Math.Abs(distance);
- Console.WriteLine(throwLength.Length);
- //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).
- if (x < throwLength.Length)
- {
- throwLength[x] = (int)length; //Sätter längden på kastet i throwLength och sparar den i arrayen
- distanceFromMonkey[x] = distance; //Sätter hur långt ifrån man var i distanceFromMonkey arrayen
- windArray[x] = (int)wind; //Sätter vinden i en array för utskrift i sammanfattningen.
- }
- x++; //ökar x med 1 för varje loop. Så att array värdena sparas på rätt ställe.
- //Här kollar jag om längden är rätt. Är den det så får man en träff
- //Satte spannet +5 och -5 ifrån värdet monkey. För att göra spelet lättare.
- if (monkey - 5 < length && length < monkey + 5)
- {
- writeHitMessage("\nDu träffade apan!\n");
- hits++;
- tries++;
- }
- else
- {
- writeWrongMessage("\nTyvärr, du missade.\n");
- // Console.WriteLine("\nTyvärr, du missade.");
- Console.WriteLine("Du kastade {0} meter apan stod på {1} meter. Du missade med {2} meter\n\n", length, monkey, distance);
- Console.WriteLine("-------------------------------------------------------------------------");// Man får lite info efter varje kast.
- tries++;
- }
- //Om man har försökt 6gånger så bryter man loopen, skriver == 7 för jag börjar på 1.
- if (tries == 7)
- {
- Console.WriteLine("Du har tyvärr inga mer försök\n");
- Console.WriteLine("-------------------------------------------------------------------------");
- writeYellowMessage("Sammanfattning av dina kast:");
- Console.WriteLine("-------------------------------------------------------------------------");
- writeYellowMessage("\tLängden på dina kast\tSå långt ifrån var du\tVinden var");
- Console.WriteLine("-------------------------------------------------------------------------");
- //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.
- for (int j = 0; j < throwLength.Length; j++)
- {
- Console.WriteLine((j + 1) + "." + "\t" + throwLength[j] + "m\t\t\t" + distanceFromMonkey[j] + "m\t\t\t"+windArray[j]);
- Console.WriteLine("-------------------------------------------------------------------------");
- }
- if (hits > 1)
- {
- 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.
- }
- Console.WriteLine("Försök gärna igen.");
- Console.WriteLine("----------------------------------------------------------------");
- break;
- }
- //Om du istället har träffat apan 3ggr skrivs detta ut.
- if (hits == 3)
- {
- Console.WriteLine("Du har nu träffat apan 3 gånger och därmed klarat spelet!\nBra jobbat!");
- Console.WriteLine("\tLängden på dina kast\t\tSå långt ifrån var du\n");
- //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.
- for (int j = 0; j < throwLength.Length; j++)
- {
- // Console.WriteLine("Försök " + (j + 1) + " kastade du " + throwLength[j] + " meter.\t Du missade apan med " + distanceFromMonkey[j] + " meter.\n");
- Console.WriteLine((j + 1) + "\t" + throwLength[j] + "m\t\t\t\t" + distanceFromMonkey[j] + "m\n");
- }
- break;
- }
- }//slut for loop
- }
- //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.
- catch
- {
- Console.Error.WriteLine("\nDu har matat in ett ogiligt värde.");
- }
- Console.WriteLine("\nTryck valfri tangent för att börja om eller N/n för att avsluta.");
- programExit = Console.ReadLine();
- }//slut while loop
- //Avslutar programet.
- Console.WriteLine("Tryck enter för att stänga fönstret");
- Console.ReadLine();
- Environment.Exit(0);
- }//Slut static Main
- //MINA METODER
- //En metod för att skapa ett slumptal på mellan -5 och +5 som ska agera vinden.
- public double getWind()
- {
- double wind;
- Random rnd = new Random();
- wind = rnd.NextDouble() * 10;
- wind = wind - 5.0;
- wind = Math.Round(wind);
- return wind;
- }
- //En metod som gör om graderna till en radian.
- public double toRadian(double throwAngle)
- {
- double angle;
- angle = throwAngle * Math.PI / 180;
- return angle;
- }
- //En metod som räknar ut hur långt man kastar. Retunerar längden i form av int.
- public int toLength(int speed, double angle, double wind)
- {
- Double length = 2 * speed * speed * Math.Cos(angle) * Math.Sin(angle) / gravity - wind * speed * Math.Sin(angle) / gravity;
- int theLength = (int)length;
- return theLength;
- }
- //En metod som ändrar textfärgen till röd vid missad träff
- static void writeWrongMessage(string value)
- {
- Console.BackgroundColor = ConsoleColor.Blue;
- Console.ForegroundColor = ConsoleColor.Red;
- Console.WriteLine(value.PadRight(Console.WindowWidth - 1));
- Console.ForegroundColor = ConsoleColor.White;//Ändrar tillbaka till vit textfärg.
- }
- //En metod som ändrar textfärgen till röd vid missad träff
- static void writeHitMessage(string value)
- {
- Console.BackgroundColor = ConsoleColor.Blue;
- Console.ForegroundColor = ConsoleColor.Green;
- Console.WriteLine(value.PadRight(Console.WindowWidth - 1));
- Console.ForegroundColor = ConsoleColor.White;//Ändrar tillbaka till vit textfärg.
- }
- static void writeYellowMessage(string value)
- {
- Console.BackgroundColor = ConsoleColor.Blue;
- Console.ForegroundColor = ConsoleColor.Yellow;
- Console.WriteLine(value);
- Console.ForegroundColor = ConsoleColor.White;//Ändrar tillbaka till vit textfärg.
- }
- }//Slut class labb3
- }//Slut namespace
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement