Permalänk
Medlem

Skriva ut summering i C#

Kämpar med ett ganska enkelt spel i C#.
Det går ut på att försöka träffa en apa med bananer. Jag är nästan färdig, förutom att i slutet av spelet vill jag skriva ut en sammanfattning som ska innehålla längd till apan och med hur mycket man missade.

Jag har kört fast på detta o kommer verkligen inte nånstans. Uppskattar all hjälp jag kan få!

Detta är min kod:

class Game { public static void Main(string[] args) { Random randw = new Random(); int monkey = 100; //variabel för apan som börjar på 100m. int points = 0; //variabel för spelarpoängen som börjar på 0. //variabler för kastvinkel, hastighet, avstånd och vind. double pitchAngle, speed, distance, wind = 0; //variabel för gravitationen som är konstant och inte kan ändras. const double g = 9.81; Console.WriteLine("Välkommen till Apan Och Bananen"); //for-satsen sätter regler för apans avstånd. Apan kommer 10m närmare för varje kast. for (monkey = 100; monkey > 0; monkey = monkey - 10) { Console.WriteLine("Apan står på " + monkey + " meters avstånd."); Console.WriteLine("Vinden är " + wind + " m/s. Hur hårt vill du kasta?"); speed = Convert.ToInt32(Console.ReadLine()); //anger hastigheten på kastet. Console.WriteLine("Med vilken vinkel?"); pitchAngle = Convert.ToInt32(Console.ReadLine()); //anger vinkel på kastet. //räknar ut en slumpad vind med hjälp av random. wind = randw.NextDouble() * 10.0 - 5.0; //räknar om grader till radianer double angle = (Math.PI / 180) * pitchAngle; //uträkningen för kastet. distance = 2 * speed * speed * Math.Cos(angle) * Math.Sin(angle) / g + wind * speed * Math.Sin(angle) / g; //gör apan 1m större åt båda hållen. om det stämmer träffar man och får en poäng (points++;). if (distance < monkey + 1.0 && distance > monkey - 1.0) { points++; //poängen ökar med 1. Console.WriteLine("Du kastade " + distance + " meter, du träffade apan!"); } else { //om man missar apan får man kasta igen. Console.WriteLine("Du kastade " + distance + " meter, du missade."); } //om man lyckas träffa apan 5 gånger, har man vunnit spelet. if (points == 5) { Console.WriteLine("Du har matat apan med 5 bananer och får en apkram!"); } //om man kastat 10 gånger utan att träffa, har apan hunnit fram och äter upp spelaren. if (monkey <= 10) { Console.WriteLine("Dina försök är över, apan åt upp dig..."); Console.ReadLine(); } } } }

Permalänk
Medlem

Kan säga först att jag tycker det är lite elakt mot spelaren att skriva ut vinden och sedan ge den ett nytt värde innan uträkningarna sker.

Ang. problemet:
Antar att du menar att avstånd till apan och hur mycket man missar ska sparas för varje kast.

Avståndet till apan har du ju i monkey.
Hur mycket man missar med ges av abs(distance-monkey)

Spara undan dessa för varje loop i två arrayer/vektorer.
Skriv sedan en loop som kör igenom arrayerna och skriver ut värdena.

Hoppas det hjälper. Kan förklara noggrannare om du vill.

Permalänk
Medlem

Såhär kanske..?

class Game { public static void Main(string[] args) { Random randw = new Random(); int monkey = 100; //variabel för apan som börjar på 100m. int points = 0; //variabel för spelarpoängen som börjar på 0. int miss = 0; //Antalet missar //variabler för kastvinkel, hastighet, avstånd och vind. double pitchAngle, speed, distance, wind = 0; //variabel för gravitationen som är konstant och inte kan ändras. const double g = 9.81; Console.WriteLine("Välkommen till Apan Och Bananen"); //for-satsen sätter regler för apans avstånd. Apan kommer 10m närmare för varje kast. for (monkey = 100; monkey > 0; monkey -= 10) //Snyggare med -= { Console.WriteLine("Apan står på " + monkey + " meters avstånd."); Console.WriteLine("Vinden är " + wind + " m/s. Hur hårt vill du kasta?"); speed = Convert.ToInt32(Console.ReadLine()); //anger hastigheten på kastet. Console.WriteLine("Med vilken vinkel?"); pitchAngle = Convert.ToInt32(Console.ReadLine()); //anger vinkel på kastet. //räknar ut en slumpad vind med hjälp av random. wind = randw.NextDouble() * 10.0 - 5.0; //räknar om grader till radianer double angle = (Math.PI / 180) * pitchAngle; //uträkningen för kastet. distance = 2 * speed * speed * Math.Cos(angle) * Math.Sin(angle) / g + wind * speed * Math.Sin(angle) / g; //gör apan 1m större åt båda hållen. om det stämmer träffar man och får en poäng (points++;). if (distance < monkey + 1.0 && distance > monkey - 1.0) { points++; //poängen ökar med 1. Console.WriteLine("Du kastade " + distance + " meter, du träffade apan!"); } else { //om man missar apan får man kasta igen. Console.WriteLine("Du kastade " + distance + " meter, du missade."); miss++; //+1 på miss } //om man lyckas träffa apan 5 gånger, har man vunnit spelet. if (points == 5) { Console.WriteLine("Du har matat apan med 5 bananer och får en apkram!\nAvståndet till apan: " + monkey + "\nAntal missade kast: " + miss); } //om man kastat 10 gånger utan att träffa, har apan hunnit fram och äter upp spelaren. if (monkey <= 10) { Console.WriteLine("Dina försök är över, apan åt upp dig..."); Console.ReadLine(); } } } }

Permalänk
Medlem

Tack så mycket för hjälpen!!