LemanRass

Untitled

Mar 17th, 2022
1,055
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.88 KB | None | 0 0
  1.    public enum DoorMaterial
  2.     {
  3.         WOOD,
  4.         STEEL,
  5.         PLASTIC
  6.     }
  7.    
  8.     public enum LockStatus
  9.     {
  10.         OPENED,
  11.         CLOSED
  12.     }
  13.    
  14.     public class DoorKey
  15.     {
  16.         public int code;
  17.     }
  18.  
  19.     public class DoorLock
  20.     {
  21.         protected int code;
  22.         public LockStatus status;
  23.     }
  24.    
  25.     public class KeyLock : DoorLock
  26.     {
  27.         public void Open(DoorKey key)
  28.         {
  29.             if (status == LockStatus.OPENED)
  30.             {
  31.                 return;
  32.             }
  33.            
  34.             bool result = CheckKey(key);
  35.             if (result == true)
  36.             {
  37.                 status = LockStatus.OPENED;
  38.             }
  39.         }
  40.  
  41.         private bool CheckKey(DoorKey key)
  42.         {
  43.             return code == key.code;
  44.         }
  45.     }
  46.  
  47.     public class CodeLock : DoorLock
  48.     {
  49.         public void Open(int usercode)
  50.         {
  51.             if (status == LockStatus.OPENED)
  52.             {
  53.                 return;
  54.             }
  55.  
  56.             if (usercode == code)
  57.             {
  58.                 status = LockStatus.OPENED;
  59.             }
  60.         }
  61.     }
  62.    
  63.    
  64.    
  65.     public class Door
  66.     {
  67.         public float perimeter;
  68.         public DoorMaterial material;
  69.         public readonly DoorLock _lock;
  70.  
  71.         public Door(DoorLock @lock)
  72.         {
  73.             _lock = @lock;
  74.         }
  75.        
  76.         public bool TryOpenWithKey(DoorKey key)
  77.         {
  78.             if (_lock is KeyLock keyLock)
  79.             {
  80.                 keyLock.Open(key);
  81.             }
  82.  
  83.             return _lock.status != LockStatus.CLOSED;
  84.         }
  85.  
  86.         public bool TryOpenWithCode(int code)
  87.         {
  88.             if (_lock is CodeLock codeLock)
  89.             {
  90.                 codeLock.Open(code);
  91.             }
  92.            
  93.             return _lock.status != LockStatus.CLOSED;
  94.         }
  95.     }
  96.  
Advertisement
Add Comment
Please, Sign In to add comment