Arbetar på ett program till en labb i C# - meningen är att det ska bli ett textbaserat spel där man ska kasta bananer på en apa för att slippa bli uppäten av densamma.
När jag skapade samma spel i en annan kurs, i java (samme lärare, därav samma uppgift...) så funkade spelet utmärkt. Men i C# - icke! Såhär ser koden ut. Jag ha rmarkerat den rad som ställer till med problem för mig. Hur ska man skriva istället för det som jag gjort???
using System;
using System.Collections.Generic;
using System.Text;
namespace Laboration1
{
class Program
{
public static void Main(string[] args)
{
Random randObj = new Random();
Console.WriteLine("Hej och välkommen till Apspelet!");
Console.WriteLine("Spelet går ut på att du ska kasta bananer åt en apa. Om apan lyckas fånga åtminstone 5 bananer, blir den nöjd och glad, och kramar om dig. Om du kastar bananerna alldeles åt skogen, blir apan sur och hungrig och äter upp dig istället!");
int kast = 10;
double apa = 100.00; //apan börjar med att stå på 100 meters avstånd;
double points = 0.0;
double x; //x = avstånd från utgångspunkt där kastet landar \[m\].
for (int nuvarande = 0; nuvarande \< kast; nuvarande++)
{
Console.WriteLine("Hur hårt kastar du? Ange svaret i hela antal meter per sekund (dvs ett heltal).");
double v; //v = utgångshastighet i kastet \[m/s\]
string inmatning = Console.ReadLine();
double siffra = Convert.ToDouble(inmatning);
v = siffra;
Console.WriteLine("Vilken vinkel har du på kastet? Ange i antal grader (dvs ett heltal). Tänk på att 0 grader betyder att du rullar bananen längs med marken, och att 90 grader innebär att du kastar bananen rakt upp i luften så att den landar i skallen på dig själv.");
double a; //a = kastvinkel. \[i radianer\] 0-längs marken, pi/2 rakt upp.
string mataIn = Console.ReadLine();
double siffra2 = Convert.ToDouble(mataIn);
a = siffra2;
// Genom att multiplicera antalet grader med pi/180 får man fram antalet radianer.
a = a \* Math.PI / 180;
//Tänk på att \<0 = medvind, \>0 = motvind, samt att 5 meter/sekund anses vara en stark vind. Överdriv inte!!!
double w; //w = vindhastighet. (\<0 med-, \>0 motvind \[m/s\])
w = randObj.NextDouble() \* 10.0 - 5.0;
Double g; //g = gravitationskonstant. 9.81\[m/s2\]
g = 9.81;
x = 2 \* v \* v \* Math.Cos(a) \* Math.Sin(a) / g - w \* v \* Math.Sin(a) / g; // räknar ut resultatet.
if (x \< apa + 1 \|\| x \> apa - 1)
{ points++; }
else
{ points = points + 0; }
apa = apa - 10;
**if (x \< apa +1 \|\| x \> apa-1)**
{
Console.WriteLine("Du har kastat" + x + "meter. Träff!");
}
else
{
Console.WriteLine("Du har kastat" + x + "meter. Miss!");
}
}
if (points \>= 5.0)
{
Console.WriteLine("Apan har ätit sig mätt och belåten, och är så glad att den kramar om dig!");
}
else
{
Console.WriteLine("Apan har inte fått i sig tillräckligt många bananer, utan är sur och hungrig. Den kastar sig över dig och börjar gnaga på dina öron.");
}
}
}
Kompilerade och rullade fint (= utan exceptions) hos mig. Hur är det som det "inte funkar", blir villkoret inte sant när det borde bli det? Gör du alla uträkningar rätt? Gör lite debugutskrifter på vägen och kolla om det ser vettigt ut.
Förresten, kod-taggen är mycket bättre än quote-taggen :p