Добавление еще одной карты + фиксация изменений.
This commit is contained in:
parent
118cc6316c
commit
aae1f51ef5
@ -81,7 +81,10 @@ namespace AirplaneWithRadar
|
|||||||
{
|
{
|
||||||
for (int j = left; j <= right; j++)
|
for (int j = left; j <= right; j++)
|
||||||
{
|
{
|
||||||
if (_map[j, i] == 1) return false;
|
if (_map[j, i] == 1)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
80
AirplaneWithRadar/AirplaneWithRadar/BlockMap.cs
Normal file
80
AirplaneWithRadar/AirplaneWithRadar/BlockMap.cs
Normal 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++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -159,7 +159,8 @@
|
|||||||
this.comboBoxSelectorMap.FormattingEnabled = true;
|
this.comboBoxSelectorMap.FormattingEnabled = true;
|
||||||
this.comboBoxSelectorMap.Items.AddRange(new object[] {
|
this.comboBoxSelectorMap.Items.AddRange(new object[] {
|
||||||
"Простая карта",
|
"Простая карта",
|
||||||
"Собственная карта"});
|
"Карта с линиями",
|
||||||
|
"Карта с блоками"});
|
||||||
this.comboBoxSelectorMap.Location = new System.Drawing.Point(12, 12);
|
this.comboBoxSelectorMap.Location = new System.Drawing.Point(12, 12);
|
||||||
this.comboBoxSelectorMap.Name = "comboBoxSelectorMap";
|
this.comboBoxSelectorMap.Name = "comboBoxSelectorMap";
|
||||||
this.comboBoxSelectorMap.Size = new System.Drawing.Size(182, 33);
|
this.comboBoxSelectorMap.Size = new System.Drawing.Size(182, 33);
|
||||||
|
@ -93,8 +93,11 @@ namespace AirplaneWithRadar
|
|||||||
case "Простая карта":
|
case "Простая карта":
|
||||||
_abstractMap = new SimpleMap();
|
_abstractMap = new SimpleMap();
|
||||||
break;
|
break;
|
||||||
case "Собственная карта":
|
case "Карта с линиями":
|
||||||
_abstractMap = new MyMap();
|
_abstractMap = new LineMap();
|
||||||
|
break;
|
||||||
|
case "Карта с блоками":
|
||||||
|
_abstractMap = new BlockMap();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,7 @@ namespace AirplaneWithRadar
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Собственная реализация абсрактного класса AbstractMap
|
/// Собственная реализация абсрактного класса AbstractMap
|
||||||
/// </summary>
|
/// </summary>
|
||||||
internal class MyMap : AbstractMap
|
internal class LineMap : AbstractMap
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Цвет участка закрытого
|
/// Цвет участка закрытого
|
Loading…
Reference in New Issue
Block a user