2 1 month ago
parent
commit
75435c3689
  1. 100
      ClassLib000/Walker/Appartment.cs
  2. 31
      ClassLib000/Walker/CleanSpace.cs
  3. 13
      ClassLib000/Walker/ECleanType.cs
  4. 24
      ClassLib000/Walker/VacuumCleaner.cs
  5. 90
      ClassLib000/Walker/description.txt
  6. 11
      ConsoleCore/Program.cs
  7. 37
      ConsoleCore/RobotConsoler.cs

100
ClassLib000/Walker/Appartment.cs

@ -0,0 +1,100 @@
using System;
using System.Collections.Generic;
namespace ClassLib000.Walker
{
public class Appartment
{
public List<CleanSpace> CleanSpaces;
public VacuumCleaner VC;
public Appartment()
{
VC = new VacuumCleaner();
CleanSpaces = new List<CleanSpace>();
}
#region public methods
public void InitDoor(int x1, int y1, int x2, int y2)
{
foreach (var sp in CleanSpaces)
{
if (sp.X > x1 && sp.X > x2 && sp.Y > y1 && sp.Y < y2)
{
sp.WallEast = false;
sp.WallNorth = false;
sp.WallSouth = false;
sp.WallWest = false;
}
}
}
public void InitRoom(int x1, int y1, int x2, int y2)
{
for (int iX = x1; iX <= x2; iX++)
{
for (int iY = y1; iY <= y2; iY++)
{
CleanSpace cs = new CleanSpace(x1, y1);
if (iX == x1)
{
cs.WallWest = true;
}
if (iX == x2)
{
cs.WallEast = true;
}
if (iY == y1)
{
cs.WallNorth = true;
}
if (iY == y2)
{
cs.WallSouth = true;
}
}
}
}
public void InitVC()
{
VC.X = CleanSpaces[0].X;
VC.Y = CleanSpaces[0].Y;
}
public List<CleanSpace> GetDirtyCleanSpace(int iDayCount)
{
List<CleanSpace> result = new List<CleanSpace>();
DateTime dtFrom = DateTime.Now.AddDays(-iDayCount);
foreach (var sp in CleanSpaces)
{
if (sp.DateClean < dtFrom)
{
result.Add(sp);
}
}
return result;
}
public List<CleanSpace> FindRouteForVC(VacuumCleaner vc, int toX, int toY)
{
List<CleanSpace> result = new List<CleanSpace>();
int fromX = vc.X;
int fromY = vc.Y;
// ... реализация алгоритма перебора путей (поиск кратчайшего)
var cleanSpaceFrom = CleanSpaces[0];
var cleanSpaceTo = CleanSpaces[1];
if (vc.CanGo(cleanSpaceFrom, cleanSpaceTo))
{
//...
}
return result;
}
#endregion
}
}

31
ClassLib000/Walker/CleanSpace.cs

@ -0,0 +1,31 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace ClassLib000.Walker
{
/// <summary>
/// Квадрат уборки
///- дата последней уборки
///- стены(СЗЮВ)
///- тип уборки(влажная / сухая / не убирать)
/// </summary>
public class CleanSpace
{
public DateTime DateClean;
public int X;
public int Y;
public bool WallEast;
public bool WallWest;
public bool WallSouth;
public bool WallNorth;
public ECleanType CleanType;
public CleanSpace(int x1, int y1)
{
this.X = x1;
this.Y = y1;
DateClean = DateTime.Now.AddYears(-1);
}
}
}

13
ClassLib000/Walker/ECleanType.cs

@ -0,0 +1,13 @@
namespace ClassLib000.Walker
{
/// <summary>
/// (влажная / сухая / не убирать)
/// </summary>
public enum ECleanType
{
Unknown = 0,
Wet = 1,
Dry = 2,
DontCleanAtAll = 3
}
}

24
ClassLib000/Walker/VacuumCleaner.cs

@ -0,0 +1,24 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace ClassLib000.Walker
{
/// <summary>
/// Пылесос
/// </summary>
public class VacuumCleaner
{
/// <summary>
/// координаты
/// </summary>
public int X;
public int Y;
public ECleanType Mode;
internal bool CanGo(CleanSpace cleanSpaceFrom, CleanSpace cleanSpaceTo)
{
return true;
}
}
}

90
ClassLib000/Walker/description.txt

@ -1,62 +1,30 @@
# Файл с описанием классов предметной области Шахматы (ПСБ-252) # Файл с описанием классов предметной области Информация о доме робота-пылесоса (ПСБ-251)
Помещения состоят из квадратов, у квадрата могут быть стены (СЗЮВ). Робот-пылесос знает карту.
## Вариант 1
Отображение шахматной доски и таймера времени ## Что хранить
Квадрат уборки
### Что храним - дата последней уборки
- ход[] (история ходов) - стены (СЗЮВ)
- номер - тип уборки (влажная / сухая / не убирать)
- обозначение хода белых (строка)
- обозначение хода черных (строка) Квартира (приложение "умный дом")
- игрок белый - квадраты[]
- фигуры активные - пылесос
- фигуры срубленные - пылесос
- таймер - X
- игрок черный - Y
- фигуры активные - текущий режим уборки
- фигуры срубленные
- таймер (осталось секунд)
- фигура ## Сценарии
- тип - отобразить квартиру
- цвет - найти все давно не убранные квадраты
- позиция - найти путь до квадрата
- позиция
- X (1-8)
- Y (1-8) __________
| |
### Сценарии |0,0 |
- отобразить текущее состояние доски | |
- отобразить текущее список ходов |___10;4_|
- отобразить текущее список срубленных фигур
- отобразить время на таймерах
- добавить ход: откуда, куда
- убрать фигуру (срубить): где
## Вариант 2
Отображение шахматной доски
### Что храним
- игра
- игрок белый
- игрок черный
- игрок белый
- фигуры
- игрок черный
- фигуры
- фигура
- тип
- цвет
- позиция
- флаг срублена
- позиция
- X (1-8)
- Y (1-8)
### Сценарии
- отобразить текущее состояние доски
- отобразить текущее список срубленных фигур
- добавить ход: откуда, куда
- убрать фигуру (срубить): где
- отобразить шахматную ситуацию: фигур[]

11
ConsoleCore/Program.cs

@ -1,6 +1,7 @@
using System; using System;
using ClassLib000.Chess; using ClassLib000.Chess;
using ClassLib000.TestModel; using ClassLib000.TestModel;
using ClassLib000.Walker;
namespace ConsoleCore namespace ConsoleCore
{ {
@ -18,6 +19,16 @@ namespace ConsoleCore
//ChessConsoler.ChessRedrawBoard(game); //ChessConsoler.ChessRedrawBoard(game);
//ChessConsoler.ChessRedrawBrokenFigures(game); //ChessConsoler.ChessRedrawBrokenFigures(game);
Appartment app = new Appartment();
app.InitRoom(0, 0, 10, 4);
app.InitVC();
RobotConsoler.DrawRoom(app);
System.Collections.Generic.List<CleanSpace> arWeekDirty =
app.GetDirtyCleanSpace(7);
} }

37
ConsoleCore/RobotConsoler.cs

@ -0,0 +1,37 @@
using ClassLib000.Walker;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleCore
{
class RobotConsoler
{
internal static void DrawRoom(Appartment app)
{
const int width = 3;
const int height = 3;
foreach (CleanSpace space in app.CleanSpaces)
{
int cursorX = space.X * width;
int cursorY = space.Y * height;
Console.SetCursorPosition(cursorX, cursorY);
Console.Write("🌹");
if (space.WallEast)
{
Console.SetCursorPosition(cursorX + 1, cursorY);
Console.Write("•");
}
if (space.WallNorth)
{
Console.SetCursorPosition(cursorX, cursorY - 1);
Console.Write("•");
}
// .. TODO:
}
}
}
}
Loading…
Cancel
Save