Reputation: 29
I have 2 classes "Ooievaar" (a stork) and "Kikker" (Frog). Now what I'm trying to do is have a stork eat a frog. The way i thought I could do this is by removing a random frog from a list in my main code using the "eetkikker" method, but I have no idea how to do this. any tips would help!
Ooievaar Class(Stork)
class Ooievaar : Dier
{
private int GegetenKikkers;
public Ooievaar(string naam, string geslacht, int leeftijd, int gegetenKikkers) : base(naam, geslacht, leeftijd)
{
GegetenKikkers = gegetenKikkers;
}
public void EetKikker(Kikker kikker)
{
}
}
Kikker Class (frog)
class Kikker : Dier
{
public Kikker(string Naamdier, string GeslachtDier, int Leeftijd) : base(Naamdier, GeslachtDier, Leeftijd)
{
}
public override string ToString()
{
return $"Mijn naam is {Naam} de eend en ik ben een {Geslacht} van {Leeftijd} jaar oud.";
}
}
Main code
public partial class Vijver : Form
{
private Random rnd = new Random();
List<Kikker> kikkers2Kikkers = new List<Kikker>();
Kikker Kikker1 = new Kikker("Frank", "Man", 2);
Kikker Kikker2 = new Kikker("John", "Man", 1);
Ooievaar ooievaar1 = new Ooievaar("Britt", "vrouw", 2, 50);
public Vijver()
{
InitializeComponent();
Kikkers2Kikkers.add(Kikker1);
Kikkers2Kikkers.add(Kikker2);
}
}
Upvotes: 0
Views: 68
Reputation: 165
If you would like to remove a item you'll use the remove method. Microsoft Documentation List .Remove(T).
Kikkers2Kikkers.Remove(Kikker1); // this will remove Kikker1 out of the list
If you want to make this random you should use RemoveAt and in the paramters at the index you want to remove. Microsoft Documentation Random Class. You can easily get random values by using this class.
Random rnd = new Random(); //Create random object
int index = rnd.Next(Kikkers2Kikkers.Count); //Get value possible from your list
Kikkers2Kikkers.RemoveAt(index); // Removes a kikker randomly
But this isn't the complete solution to your program. This should give you an idea tho on how to remove an object from a list randomly.
Edit: I would not try to delete it from your ooievaar class. I would make a method in your main code and call it
OoievaarEetKikker(Ooievaar ooiveraar, Kikker kikker){
ooievaar.EetKikker(); // In the Ooievaar class just add 1 to eaten kikkers
Kikkers2Kikkers.Remove(kikker); // This deletes the kikker. You could use the random method from above.
}
Upvotes: 1
Reputation: 1128
class Program
{
static void Main(string[] args)
{
List<Kikker> kikkers2Kikkers = new List<Kikker>();
Kikker Kikker1 = new Kikker("Frank", "Man", 2);
Kikker Kikker2 = new Kikker("John", "Man", 1);
Ooievaar ooievaar1 = new Ooievaar("Britt", "vrouw", 2, 50);
//add the kikkers to the list
kikkers2Kikkers.Add(Kikker1);
kikkers2Kikkers.Add(Kikker2);
//random number
Random rnd = new Random();
var rndNumber = rnd.Next(0, 2);
Console.WriteLine(rndNumber);
//calling Eatkikker
string deadKikker = ooievaar1.EetKikker(kikkers2Kikkers, rndNumber);
//Rip kikker
Console.WriteLine("Byebye " + kikkers2Kikkers.ElementAt(rndNumber));
//remove dead kikker from list
kikkers2Kikkers.RemoveAt(rndNumber);
Console.ReadKey();
}
}
And the Ooievaar class with the EatKikker method:
class Ooievaar : Dier { private int GegetenKikkers;
public Ooievaar(string naam, string geslacht, int leeftijd, int gegetenKikkers) : base(naam, geslacht, leeftijd)
{
GegetenKikkers = gegetenKikkers;
}
public string EetKikker(List<Kikker> kikker, int rndNumber)
{
//get the right kikker
Kikker getKikker = kikker.ElementAt(rndNumber);
//return a string
return "Hello my name is " + getKikker.Naamdier + " and I am dead.";
}
}
Keep in mind that there is no exception handling for example IndexOutOfRangeException
. rnd.Next(0, 2);
is generating either 0 or 1. Remove.At
requires using System.Linq
.
Upvotes: 0