ImSleepless
ImSleepless

Reputation: 29

Removing item from list using a class method

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

Answers (2)

Mounir
Mounir

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

manuzi1
manuzi1

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

Related Questions