示例#1
0
        static void Main(string[] args)
        {
            _minTilstand = Tilstand.TOM;
            while (true)
            {
                var h           = EnHendelse();
                var listaAksjon = O_1_D_Laas.TilstandsMaskin(h);

                while (listaAksjon.Count > 0)
                {
                    switch (listaAksjon.First())
                    {
                    case Aksjon.Aapne:
                        Console.WriteLine("\nLåsen er åpen.");
                        break;

                    case Aksjon.Lukk:
                        Console.WriteLine("\nLåsen er lukket.");
                        break;

                    default:
                        throw new ArgumentOutOfRangeException();
                    }
                    listaAksjon.RemoveAt(0);
                }
            }
        }
示例#2
0
 public VeibomTM(int initPris)
 {
     minTilstand    = Tilstand.Lukket;
     betaltBelop    = 0;
     passeringspris = initPris;
 }
示例#3
0
        public List <Aksjon> HaandterHendelse(Hendelse h)
        {
            List <Aksjon> svar = new List <Aksjon>();

            switch (minTilstand)
            {
            case Tilstand.Lukket:
                switch (h)
                {
                case Hendelse.Kr1:
                    betaltBelop++;
                    if (betaltBelop == passeringspris)
                    {
                        minTilstand = Tilstand.Aapen;
                        svar.Add(Aksjon.Aapne);
                        betaltBelop = 0;
                    }
                    break;

                case Hendelse.Kr5:
                    betaltBelop = betaltBelop + 5;
                    if (betaltBelop >= passeringspris)
                    {
                        minTilstand = Tilstand.Aapen;
                        svar.Add(Aksjon.Aapne);
                        betaltBelop = betaltBelop - passeringspris;

                        while (betaltBelop > 0)
                        {
                            svar.Add(Aksjon.R1);
                            betaltBelop--;
                        }
                    }
                    break;

                case Hendelse.Passering:
                    break;
                }
                break;

            case Tilstand.Aapen:
                switch (h)
                {
                case Hendelse.Kr1:
                    svar.Add(Aksjon.R1);
                    break;

                case Hendelse.Kr5:
                    svar.Add(Aksjon.R5);
                    break;

                case Hendelse.Passering:
                    minTilstand = Tilstand.Lukket;
                    svar.Add(Aksjon.Lukk);
                    break;
                }
                break;
            }

            return(svar);
        }
示例#4
0
        static void Main(string[] args)
        {
            Tilstand minTilstand = 0;
            Hendelse minHendelse;

            while (true)
            {
                minHendelse = EnHendelse();
                switch (minTilstand)
                {
                case Tilstand.TOM:     // TOM
                    switch (minHendelse)
                    {
                    case Hendelse.B:
                        minTilstand = Tilstand.B;
                        break;

                    case Hendelse.E:
                    case Hendelse.R:
                    case Hendelse.G:
                    case Hendelse.N:
                    case Hendelse.ANNET:
                        break;
                    }
                    break;

                case Tilstand.B:     // B
                    switch (minHendelse)
                    {
                    case Hendelse.E:
                        minTilstand = Tilstand.BE;
                        break;

                    case Hendelse.B:
                        break;

                    case Hendelse.R:
                    case Hendelse.G:
                    case Hendelse.N:
                    case Hendelse.ANNET:
                        minTilstand = Tilstand.TOM;
                        break;
                    }
                    break;

                case Tilstand.BE:     // BE
                    switch (minHendelse)
                    {
                    case Hendelse.B:
                        minTilstand = Tilstand.B;
                        break;

                    case Hendelse.R:
                        minTilstand = Tilstand.BER;
                        break;

                    case Hendelse.E:
                    case Hendelse.G:
                    case Hendelse.N:
                    case Hendelse.ANNET:
                        minTilstand = Tilstand.TOM;
                        break;
                    }
                    break;

                case Tilstand.BER:     // BER
                    switch (minHendelse)
                    {
                    case Hendelse.B:
                        minTilstand = Tilstand.B;
                        break;

                    case Hendelse.G:
                        minTilstand = Tilstand.BERG;
                        break;

                    case Hendelse.E:
                    case Hendelse.R:
                    case Hendelse.N:
                    case Hendelse.ANNET:
                        minTilstand = Tilstand.TOM;
                        break;
                    }
                    break;

                case Tilstand.BERG:     // BERG
                    switch (minHendelse)
                    {
                    case Hendelse.B:
                        minTilstand = Tilstand.B;
                        break;

                    case Hendelse.E:
                        minTilstand = Tilstand.BERGE;
                        break;

                    case Hendelse.R:
                    case Hendelse.G:
                    case Hendelse.N:
                    case Hendelse.ANNET:
                        minTilstand = Tilstand.TOM;
                        break;
                    }
                    break;

                case Tilstand.BERGE:     // BERGE
                    switch (minHendelse)
                    {
                    case Hendelse.B:
                        minTilstand = Tilstand.B;
                        break;

                    case Hendelse.N:
                        Console.Write("\nBergen\n");
                        minTilstand = Tilstand.TOM;
                        break;

                    case Hendelse.E:
                    case Hendelse.R:
                    case Hendelse.G:
                    case Hendelse.ANNET:
                        minTilstand = Tilstand.TOM;
                        break;
                    }
                    break;
                }
            }
        }
示例#5
0
        public static List <Aksjon> TilstandsMaskin(Hendelse h)
        {
            List <Aksjon> svar = new List <Aksjon>();

            switch (h)
            {
            case Hendelse.H1:
                switch (_minTilstand)
                {
                case Tilstand.T1:
                    _minTilstand = Tilstand.T11;
                    break;

                case Tilstand.T11:
                    _minTilstand = Tilstand.T111;
                    break;

                case Tilstand.T111:
                    _minTilstand = Tilstand.TOM;
                    svar.Add(Aksjon.Lukk);
                    break;

                case Tilstand.T4:
                    _minTilstand = Tilstand.T1;
                    break;

                case Tilstand.T45:
                    _minTilstand = Tilstand.T1;
                    break;

                case Tilstand.T454:
                    _minTilstand = Tilstand.T1;
                    break;

                case Tilstand.TOM:
                    _minTilstand = Tilstand.T1;
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }

                break;

            case Hendelse.H3:
                switch (_minTilstand)
                {
                case Tilstand.T1:
                    _minTilstand = Tilstand.TOM;
                    break;

                case Tilstand.T11:
                    _minTilstand = Tilstand.TOM;
                    break;

                case Tilstand.T111:
                    _minTilstand = Tilstand.TOM;
                    break;

                case Tilstand.T4:
                    _minTilstand = Tilstand.TOM;
                    break;

                case Tilstand.T45:
                    _minTilstand = Tilstand.TOM;
                    break;

                case Tilstand.T454:
                    _minTilstand = Tilstand.TOM;
                    svar.Add(Aksjon.Aapne);
                    break;

                case Tilstand.TOM:
                    _minTilstand = Tilstand.TOM;
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }

                break;

            case Hendelse.H4:
                switch (_minTilstand)
                {
                case Tilstand.T1:
                    _minTilstand = Tilstand.T4;
                    break;

                case Tilstand.T11:
                    _minTilstand = Tilstand.T4;
                    break;

                case Tilstand.T111:
                    _minTilstand = Tilstand.T4;
                    break;

                case Tilstand.T4:
                    _minTilstand = Tilstand.T4;
                    break;

                case Tilstand.T45:
                    _minTilstand = Tilstand.T454;
                    break;

                case Tilstand.T454:
                    _minTilstand = Tilstand.T4;
                    break;

                case Tilstand.TOM:
                    _minTilstand = Tilstand.T4;
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }

                break;

            case Hendelse.H5:
                switch (_minTilstand)
                {
                case Tilstand.T1:
                    _minTilstand = Tilstand.TOM;
                    break;

                case Tilstand.T11:
                    _minTilstand = Tilstand.TOM;
                    break;

                case Tilstand.T111:
                    _minTilstand = Tilstand.TOM;
                    break;

                case Tilstand.T4:
                    _minTilstand = Tilstand.T45;
                    break;

                case Tilstand.T45:
                    _minTilstand = Tilstand.TOM;
                    break;

                case Tilstand.T454:
                    _minTilstand = Tilstand.T45;
                    break;

                case Tilstand.TOM:
                    _minTilstand = Tilstand.TOM;
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }

                break;

            case Hendelse.Hx:
                _minTilstand = Tilstand.TOM;
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(h), h, null);
            }


            return(svar);
        }
示例#6
0
 public O_1_D_Laas()
 {
     _minTilstand = Tilstand.TOM;
 }
示例#7
0
        public List <Aksjon> HaandterHendelse(Hendelse minHendelse)
        {
            List <Aksjon> aksjonerSomSkalUtfores = new List <Aksjon>();

            switch (minTilstand)
            {
            case Tilstand.TOM:     // TOM
                switch (minHendelse)
                {
                case Hendelse.B:
                    minTilstand = Tilstand.B;
                    break;

                case Hendelse.E:
                case Hendelse.R:
                case Hendelse.G:
                case Hendelse.N:
                case Hendelse.ANNET:
                    break;
                }
                break;

            case Tilstand.B:     // B
                switch (minHendelse)
                {
                case Hendelse.E:
                    minTilstand = Tilstand.BE;
                    break;

                case Hendelse.B:
                    break;

                case Hendelse.R:
                case Hendelse.G:
                case Hendelse.N:
                case Hendelse.ANNET:
                    minTilstand = Tilstand.TOM;
                    break;
                }
                break;

            case Tilstand.BE:     // BE
                switch (minHendelse)
                {
                case Hendelse.B:
                    minTilstand = Tilstand.B;
                    break;

                case Hendelse.R:
                    minTilstand = Tilstand.BER;
                    break;

                case Hendelse.E:
                case Hendelse.G:
                case Hendelse.N:
                case Hendelse.ANNET:
                    minTilstand = Tilstand.TOM;
                    break;
                }
                break;

            case Tilstand.BER:     // BER
                switch (minHendelse)
                {
                case Hendelse.B:
                    minTilstand = Tilstand.B;
                    break;

                case Hendelse.G:
                    minTilstand = Tilstand.BERG;
                    break;

                case Hendelse.E:
                case Hendelse.R:
                case Hendelse.N:
                case Hendelse.ANNET:
                    minTilstand = Tilstand.TOM;
                    break;
                }
                break;

            case Tilstand.BERG:     // BERG
                switch (minHendelse)
                {
                case Hendelse.B:
                    minTilstand = Tilstand.B;
                    break;

                case Hendelse.E:
                    minTilstand = Tilstand.BERGE;
                    break;

                case Hendelse.R:
                case Hendelse.G:
                case Hendelse.N:
                case Hendelse.ANNET:
                    minTilstand = Tilstand.TOM;
                    break;
                }
                break;

            case Tilstand.BERGE:     // BERGE
                switch (minHendelse)
                {
                case Hendelse.B:
                    minTilstand = Tilstand.B;
                    break;

                case Hendelse.N:
                    aksjonerSomSkalUtfores.Add(Aksjon.VIS_BERGEN);
                    // Console.Write("\nBergen\n");
                    minTilstand = Tilstand.TOM;
                    break;

                case Hendelse.E:
                case Hendelse.R:
                case Hendelse.G:
                case Hendelse.ANNET:
                    minTilstand = Tilstand.TOM;
                    break;
                }
                break;
            } // av switch(minTilstand)

            return(aksjonerSomSkalUtfores);
        }
示例#8
0
 public BergenTM()
 {
     minTilstand = Tilstand.TOM;
 }