Exemplo n.º 1
0
        private static void MainWindow(Boat[] array, Boat[] rowb, int plats, int dag)
        {
            plats = 1;

            if (dag == 0)
            {
                Console.WriteLine("Välkommen till hamnen!");
                Console.WriteLine();
            }
            Console.WriteLine("Lediga platser för tillfället: " + Hamnen.LedigaPlatser(array));

            Console.WriteLine($"Dag nummer {dag}\n");

            Console.WriteLine("Plats\tBåttyp\t\tNr\tVikt\tMaxhast\t\tÖvrigt");


            Boat[] test = array.Distinct().ToArray();


            using (StreamWriter sw = new StreamWriter("Memory.txt", true))
            {
                foreach (var item in array)
                {
                    if (item != null)
                    {
                        if (item.Tarplatser > 1)
                        {
                            Console.WriteLine($"{item.Index + 2 - item.Tarplatser}-{item.Index + 1}.\t{item.BoatType}\t{item.IdentityNumber}\t{item.Weight}\t{item.MaxSpeed} km/h\t\t{item.UniqueProperty}");
                            plats++;
                            sw.WriteLine($"{item.Index + 2 - item.Tarplatser}-{item.Index + 1}.\t{item.BoatType}\t{item.IdentityNumber}\t{item.Weight}\t{item.MaxSpeed} km/h\t\t{item.UniqueProperty}");
                        }
                        else
                        {
                            Console.WriteLine($"{item.Index + 1}.\t{item.BoatType}\t{item.IdentityNumber}\t{item.Weight}\t{item.MaxSpeed} km/h\t\t{item.UniqueProperty}");
                            sw.WriteLine($"{item.Index + 1}.\t{item.BoatType}\t{item.IdentityNumber}\t{item.Weight}\t{item.MaxSpeed} km/h\t\t{item.UniqueProperty}");
                            foreach (var row in rowb)
                            {
                                if (row != null)
                                {
                                    if (item.Index + 1 == row.Index + 1)
                                    {
                                        Console.WriteLine($"{row.Index + 1}.\t{row.BoatType}\t{row.IdentityNumber}\t{row.Weight}\t{row.MaxSpeed} km/h\t\t{row.UniqueProperty} ");
                                        sw.WriteLine($"{row.Index + 1}.\t{row.BoatType}\t{row.IdentityNumber}\t{row.Weight}\t{row.MaxSpeed} km/h\t\t{row.UniqueProperty} ");
                                    }
                                }
                            }
                            plats++;
                        }
                    }

                    else
                    {
                        Console.WriteLine(plats + ". Tomt");
                        plats++;
                    }
                }
                sw.Close();
            }
        }
Exemplo n.º 2
0
        private static void Statistik(Boat[] array, List <Boat> list, Hamnen h)
        {
            Console.WriteLine($"Antal roddbåtar: {h.AmountOfRowboats}\nAntal motorbåtar: {h.AmountOfMotorboats}\nAntal segelbåtar: {h.AmountOfSailboats}\nAntal lastfartyg: {h.AmountOfCargoboats}");
            Console.WriteLine("Totalvikten är: " + Hamnen.CountWeight(array) + " kg");
            Console.WriteLine("Medelhastigheten är: " + Hamnen.CountVelocity(array) + " km/h");


            Console.WriteLine("Båtar som inte fick plats:");
            foreach (var item in list)
            {
                Console.WriteLine($"{item.BoatType} med id: {item.IdentityNumber}");;
            }
            Console.WriteLine();
        }
Exemplo n.º 3
0
        static void Main(string[] args)
        {
            List <Boat> inkommandeBåtar = new List <Boat>();
            List <Boat> BåtarUtanPlats  = new List <Boat>();

            Boat[] hamnArray    = new Boat[32];
            Boat[] rowboatArray = new Boat[32];

            Hamnen port        = new Hamnen();
            int    dag         = 0;
            int    platsnummer = 1;

            while (true)
            {
                Statistik(hamnArray, BåtarUtanPlats, port);

                MainWindow(hamnArray, rowboatArray, platsnummer, dag);

                DagariHamnenMetod(hamnArray, port, rowboatArray);

                BåtarDagligenMetod(5, inkommandeBåtar);

                Hamnplatser(hamnArray, rowboatArray, inkommandeBåtar, BåtarUtanPlats, port);



                dag++;
                Console.WriteLine();
                Console.WriteLine("Nästa dag, klicka enter");

                if (Console.ReadKey().Key == ConsoleKey.Enter)
                {
                    Console.Clear();
                }
            }
        }
Exemplo n.º 4
0
        static void Main(string[] args)
        {
            int dag = 1;
            double platserTotalt = 64;
            double reserveradePlatser = 0;


            Hamnen hamnen = new Hamnen();
            hamnen.Båtplatser = new List<Slot>();


            List<Boat> skapadeBåtar = new List<Boat>();
            List<Boat> inkommandeBåtar = new List<Boat>();
            List<Boat> BåtarUtanPlats = new List<Boat>();
            List<Hamnen> reserverade = new List<Hamnen>();

            Random r = new Random();
            int båtarDagligen = 5;

            while (true)
            {

                Console.WriteLine($"Dag nummer {dag}\n");

                for (int i = 0; i < båtarDagligen; i++)
                {
                    int randomNum = r.Next(1, 5);
                    if (randomNum == 1)
                    {
                        Rowboat rowboats = new Rowboat();
                        skapadeBåtar.Add(rowboats);
                    }
                    else if (randomNum == 2)
                    {
                        Motorboat motorboats = new Motorboat();
                        skapadeBåtar.Add(motorboats);
                    }
                    else if (randomNum == 3)
                    {
                        Sailboat sailboats = new Sailboat();
                        skapadeBåtar.Add(sailboats);
                    }
                    else if (randomNum == 4)
                    {
                        CargoShip cargoships = new CargoShip();
                        skapadeBåtar.Add(cargoships);
                    }
                }

                    foreach (var item in skapadeBåtar)
                    {
                     //   Console.WriteLine($"Boat {item.IdentityNumber} of type {item.BoatType} has arrived");



                        if ((reserveradePlatser + item.Tarplatser) < platserTotalt)
                        {
                            reserveradePlatser += item.Tarplatser;

                            string slotID = Guid.NewGuid().ToString();

                            item.CurrentSlotID = slotID;

                            inkommandeBåtar.Add(item);

                        hamnen.Båtplatser.Add(new Slot { ID = slotID, SlotSize = item.Tarplatser, Reserverad = true });                        
                        }

                        else
                        {              
                            BåtarUtanPlats.Add(item);
                        }
                    }
                

                // Visa vilka har skapats
                Console.WriteLine("Båtar som kommer idag:\n");
                foreach (var item in skapadeBåtar)
                {

                    Console.WriteLine($"{item.BoatType} med id: {item.IdentityNumber}");
                    
                }
                Console.WriteLine();




                foreach (var item in hamnen.Båtplatser)
                {
                    foreach (var item in inkommandeBåtar)
                    {
                        if (item.Tarplatser == item.) 
                    }
                }



                
              

                double platsnummer = 1;
                int antalRowBoat = 0;
                int antalMotor = 0;
                int antalSail = 0;
                int antalCargo = 0;
                double maxhastighet = 0;
                int antalHastighet = 0;
                int vikt = 0;
                


                Console.WriteLine("Plats\tBåttyp\t\tNr\tVikt\tMaxhast\t\tÖvrigt\n");

                foreach (Boat item in inkommandeBåtar.ToList())
                {


                    if (item != null)
                    {
                        if (item.Tarplatser > 1)
                        {
                            Console.WriteLine($"{platsnummer}-{platsnummer + item.Tarplatser - 1}.\t{item.BoatType}\t{item.IdentityNumber}\t{item.Weight}\t{item.MaxSpeed} km/h\t\t{item.UniqueProperty} ");
                            platsnummer++;
                        }
                        else
                        {
                            Console.WriteLine($"{platsnummer}.\t{item.BoatType}\t{item.IdentityNumber}\t{item.Weight}\t{item.MaxSpeed} km/h\t\t{item.UniqueProperty} ");

                        }

                        if (item is Rowboat)
                        {

                            antalRowBoat++;
                            platsnummer += item.Tarplatser;



                        }
                        else if (item is Motorboat)
                        {

                            antalMotor++;
                            platsnummer += item.Tarplatser;


                        }
                        else if (item is Sailboat)
                        {

                            antalSail++;
                            platsnummer += item.Tarplatser - 1;


                        }
                        else if (item is CargoShip)
                        {

                            antalCargo++;
                            platsnummer += item.Tarplatser - 1;


                        }


                    }

                    else
                    {
                        Console.WriteLine(platsnummer + ". Tomt");
                        platsnummer++;

                    }


                }

                foreach (var item in inkommandeBåtar.ToList())
                {
                    if (item != null)
                    {
                        if (item.DagarIHamnen != 0)
                        {
                            vikt += item.Weight;
                            maxhastighet += item.MaxSpeed;
                            item.DagarIHamnen--;
                            antalHastighet++;
                            
                        }

                        else
                        {
                            Console.WriteLine($"Den här båten lämnar hamnen: {item.IdentityNumber}");

                         //   ledigaPlatser += item.Tarplatser;
                            vikt -= item.Weight;
                            maxhastighet -= item.MaxSpeed;
                            antalHastighet--;
                            if (item is Rowboat)
                                antalRowBoat--;
                            else if (item is Motorboat)
                                antalMotor--;
                            else if (item is Sailboat)
                                antalSail--;
                            else if (item is CargoShip)
                                antalCargo--;
                            inkommandeBåtar.Remove(item);

                            






                        }
                    }
                }




                if (platsnummer < 65)
                {
                    double tommaPlatser = 65 - platsnummer;

                    for (int i = 0; i < tommaPlatser; i++)
                    {
                        Console.WriteLine(platsnummer + ". Tomt");
                        platsnummer++;
                    }

                }


                Console.WriteLine();
                Console.WriteLine($"Antal roddbåtar: {antalRowBoat}\nAntal motorbåtar: {antalMotor}\nAntal segelbåtar: {antalSail}\nAntal lastfartyg: {antalCargo}");


                double maxMedeltal = maxhastighet / antalHastighet;
                Console.WriteLine("Medeltal av båtarnas maxhastighet: " + Math.Round(maxMedeltal, 1) + " km/h");
                Console.WriteLine("Vikten är: " + vikt + " kg\n");

                // Visa vilka båtar fick inte plats
                Console.WriteLine("Båtar som inte fick plats:");
                foreach (var item in BåtarUtanPlats)
                {
                    Console.WriteLine($"{item.BoatType} med id: {item.IdentityNumber}");
                }

                

                reserverade.Clear();
                
                dag++;
                Console.WriteLine();
                Console.WriteLine("Nästa dag, klicka enter");

                if (Console.ReadKey().Key == ConsoleKey.Enter)
                    Console.Clear();


            }

        }
Exemplo n.º 5
0
 private static void Hamnplatser(Boat[] hamnArray, Boat[] rowArray, List <Boat> inkommandeBåtar, List <Boat> båtarUtanPlats, Hamnen h)
 {
     for (int i = 0; i < hamnArray.Length; i++)
     {
         foreach (var item in inkommandeBåtar.ToList())
         {
             if (hamnArray[i] == null)
             {
                 if (item is Motorboat)
                 {
                     hamnArray[i] = item;
                     item.Index   = i;
                     inkommandeBåtar.Remove(item);
                     h.AmountOfMotorboats++;
                     break;
                 }
                 else if (item is Rowboat)
                 {
                     for (int j = 0; j < hamnArray.Length; j++)
                     {
                         if (hamnArray[j] != null && hamnArray[j].BoatType == "Rowboat " && hamnArray[j].Shared == false)
                         {
                             rowArray[j] = item;
                             item.Index  = j;
                             inkommandeBåtar.Remove(item);
                             h.AmountOfRowboats++;
                             hamnArray[j].Shared = true;
                             item.Shared         = true;
                             break;
                         }
                     }
                     if (item.Shared == false)
                     {
                         hamnArray[i] = item;
                         item.Index   = i;
                         inkommandeBåtar.Remove(item);
                         h.AmountOfRowboats++;
                         break;
                     }
                 }
                 else if (item is Sailboat)
                 {
                     if (i < hamnArray.Length - item.Tarplatser)
                     {
                         if (hamnArray[i + 1] == null && i < hamnArray.Length - item.Tarplatser)
                         {
                             hamnArray[i]     = item;
                             hamnArray[i + 1] = item;
                             item.Index       = i + 1;
                             inkommandeBåtar.Remove(item);
                             h.AmountOfSailboats++;
                             break;
                         }
                     }
                 }
                 else if (item is CargoShip)
                 {
                     if (i < hamnArray.Length - item.Tarplatser)
                     {
                         if (hamnArray[i + 1] == null && hamnArray[i + 2] == null && hamnArray[i + 3] == null)
                         {
                             hamnArray[i]     = item;
                             hamnArray[i + 1] = item;
                             hamnArray[i + 2] = item;
                             hamnArray[i + 3] = item;
                             item.Index       = i + 3;
                             inkommandeBåtar.Remove(item);
                             h.AmountOfCargoboats++;
                             break;
                         }
                     }
                 }
             }
         }
     }
     foreach (var item in inkommandeBåtar)
     {
         båtarUtanPlats.Add(item);
     }
 }
Exemplo n.º 6
0
        private static void DagariHamnenMetod(Boat[] array, Hamnen h, Boat[] rowboat)
        {
            foreach (var item in array.ToList())
            {
                if (item != null)
                {
                    if (item.DagarIHamnen != 0)
                    {
                        item.DagarIHamnen--;
                    }

                    else
                    {
                        //  Console.WriteLine($"Den här båten lämnar hamnen: {it.IdentityNumber}");
                        //   it.Loop = true;


                        if (item is Motorboat)
                        {
                            h.AmountOfMotorboats--;
                            array[item.Index] = null;
                        }
                        else if (item is Sailboat)
                        {
                            if (item.Loop)
                            {
                                h.AmountOfSailboats--;
                                array[item.Index]     = null;
                                array[item.Index - 1] = null;
                                item.Loop             = false;
                            }
                        }
                        else if (item is CargoShip)
                        {
                            if (item.Loop)
                            {
                                h.AmountOfCargoboats--;
                                array[item.Index]     = null;
                                array[item.Index - 1] = null;
                                array[item.Index - 2] = null;
                                array[item.Index - 3] = null;
                                item.Loop             = false;
                            }
                        }
                    }
                }
            }

            foreach (var item in array)
            {
                if (item != null)
                {
                    if (item is Rowboat)
                    {
                        if (item.DagarIHamnen == 0)
                        {
                            h.AmountOfRowboats--;
                            array[item.Index] = null;
                        }
                    }
                }
            }

            foreach (var row in rowboat.ToList())
            {
                if (row != null)
                {
                    if (row is Rowboat)
                    {
                        row.DagarIHamnen--;
                        h.AmountOfRowboats--;
                        rowboat[row.Index] = null;
                    }
                }
            }
        }