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); } } }
public VeibomTM(int initPris) { minTilstand = Tilstand.Lukket; betaltBelop = 0; passeringspris = initPris; }
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); }
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; } } }
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); }
public O_1_D_Laas() { _minTilstand = Tilstand.TOM; }
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); }
public BergenTM() { minTilstand = Tilstand.TOM; }