Добавление еще одной карты + фиксация изменений.

This commit is contained in:
Anastasia 2022-11-01 12:40:56 +04:00
parent 118cc6316c
commit aae1f51ef5
5 changed files with 92 additions and 5 deletions

View File

@ -81,7 +81,10 @@ namespace AirplaneWithRadar
{
for (int j = left; j <= right; j++)
{
if (_map[j, i] == 1) return false;
if (_map[j, i] == 1)
{
return false;
}
}
}
return true;

View File

@ -0,0 +1,80 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace AirplaneWithRadar
{
internal class BlockMap : AbstractMap
{
/// <summary>
/// Цвет участка закрытого
/// </summary>
private readonly Brush barrierColor = new SolidBrush(Color.Beige);
/// <summary>
/// Цвет участка открытого
/// </summary>
private readonly Brush roadColor = new SolidBrush(Color.LightBlue);
protected override void DrawBarrierPart(Graphics g, int i, int j)
{
g.FillRectangle(barrierColor, i * _size_x, j * _size_y, i * (_size_x + 1), j * (_size_y + 1));
}
protected override void DrawRoadPart(Graphics g, int i, int j)
{
g.FillRectangle(roadColor, i * _size_x, j * _size_y, (i + 1) * (_size_x + 1), (j + 1) * (_size_y + 1));
}
protected override void GenerateMap()
{
_map = new int[100, 100];
_size_x = (float)_width / _map.GetLength(0);
_size_y = (float)_height / _map.GetLength(1);
int block = 0;
for (int i = 0; i < _map.GetLength(0); i++)
{
for (int j = 0; j < _map.GetLength(1); j++)
{
_map[i, j] = _freeRoad;
}
}
int numberBlocks = _random.Next(10, 15);
while (block < numberBlocks)
{
int x = _random.Next(0, 80);
int y = _random.Next(0, 80);
int blockWidth = _random.Next(0, 19);
int blockHeight = _random.Next(0, 19);
bool isFree = true;
for (int i = x; i < x + blockWidth; i++)
{
for (int j = y; j < y + blockHeight; j++)
{
if (_map[i, j] != _freeRoad)
{
isFree = false;
break;
}
}
}
if (isFree)
{
for (int i = x; i < x + blockWidth; i++)
{
for (int j = y; j < y + blockHeight; j++)
{
_map[i, j] = _barrier;
}
}
block++;
}
}
}
}
}

View File

@ -159,7 +159,8 @@
this.comboBoxSelectorMap.FormattingEnabled = true;
this.comboBoxSelectorMap.Items.AddRange(new object[] {
"Простая карта",
"Собственная карта"});
"Карта с линиями",
"Карта с блоками"});
this.comboBoxSelectorMap.Location = new System.Drawing.Point(12, 12);
this.comboBoxSelectorMap.Name = "comboBoxSelectorMap";
this.comboBoxSelectorMap.Size = new System.Drawing.Size(182, 33);

View File

@ -93,8 +93,11 @@ namespace AirplaneWithRadar
case "Простая карта":
_abstractMap = new SimpleMap();
break;
case "Собственная карта":
_abstractMap = new MyMap();
case "Карта с линиями":
_abstractMap = new LineMap();
break;
case "Карта с блоками":
_abstractMap = new BlockMap();
break;
}
}

View File

@ -9,7 +9,7 @@ namespace AirplaneWithRadar
/// <summary>
/// Собственная реализация абсрактного класса AbstractMap
/// </summary>
internal class MyMap : AbstractMap
internal class LineMap : AbstractMap
{
/// <summary>
/// Цвет участка закрытого