using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace Czujniki01
{
class Czujnik
{
public Czujnik()
{
id = "Nienazwany";
wlaczony = false;
}
public Czujnik(string n)
{
id = n;
wlaczony = false;
}
public void wlacz()
{
wlaczony = true;
Console.WriteLine(id + ": włączony");
}
public void wylacz()
{
wlaczony = false;
Console.WriteLine(id + ": wyłączony");
}
public bool jestWlaczony()
{
return wlaczony;
}
public bool jestAlarm()
{
return gen.Next(2) == 1;
}
public string podajID()
{
return id;
}
private string id;
private bool wlaczony;
static private Random gen = new Random();
}
class SystemAlarmowy
{
public void dodaj(Czujnik czujnik)
{
czujniki.Add(czujnik);
}
public void pokazElementy()
{
Console.WriteLine("Aktualna zwartość systemu:");
foreach (Czujnik czujnik in czujniki)
Console.WriteLine(czujnik.podajID());
}
public void wlacz()
{
foreach (Czujnik czujnik in czujniki)
czujnik.wlacz();
}
public void wylacz()
{
foreach (Czujnik czujnik in czujniki)
czujnik.wylacz();
}
public bool jestAlarm()
{
bool wykrytoAlarm = false;
foreach (Czujnik czujnik in czujniki)
if (czujnik.jestWlaczony() && czujnik.jestAlarm())
{
Console.WriteLine("Alarm na czujniku: " + czujnik.podajID());
wykrytoAlarm = true;
}
return wykrytoAlarm;
}
private ArrayList czujniki = new ArrayList();
}
class Program
{
static void Main(string[] args)
{
SystemAlarmowy systemDomowy = new SystemAlarmowy();
Console.WriteLine("System alarmowy - aplikacja sterująca");
systemDomowy.dodaj(new Czujnik("C01"));
systemDomowy.dodaj(new Czujnik("C02"));
systemDomowy.dodaj(new Czujnik("C03"));
systemDomowy.pokazElementy();
Console.WriteLine("\nWłącznie systemu");
systemDomowy.wlacz();
Console.Write("\nNacisnij dowolny klawisz by rozpocząć monitoring");
Console.ReadKey();
for (;;)
{
Console.Clear();
Console.WriteLine("Nacisnij ESC by zakończyć monitorowanie");
if (systemDomowy.jestAlarm())
Console.WriteLine("System zgłosił alarm!!!");
if (Console.KeyAvailable)
{
ConsoleKeyInfo info;
info = Console.ReadKey(true);
if (info.Key == ConsoleKey.Escape)
break;
}
Thread.Sleep(500);
}
Console.Clear();
Console.WriteLine("\nWyłącznie systemu");
systemDomowy.wylacz();
Console.Write("\nNaciśnij dowolny klawisz by zakończyć program");
Console.ReadKey();
}
}
}