Доработка
This commit is contained in:
parent
ba81bb1249
commit
e086076f00
@ -15,7 +15,7 @@ namespace AirPlaneWithRadar
|
|||||||
private int? pictureWidth = null;
|
private int? pictureWidth = null;
|
||||||
private int? pictureHeight = null;
|
private int? pictureHeight = null;
|
||||||
protected readonly int plainWidth = 120;
|
protected readonly int plainWidth = 120;
|
||||||
protected readonly int plainHeight = 70;
|
protected readonly int plainHeight = 60;
|
||||||
public DrawingPlain(int speed, float weight, Color bodycolor)
|
public DrawingPlain(int speed, float weight, Color bodycolor)
|
||||||
{
|
{
|
||||||
Plain = new EntetyPlain(speed, weight, bodycolor);
|
Plain = new EntetyPlain(speed, weight, bodycolor);
|
||||||
|
@ -26,7 +26,12 @@ namespace AirPlaneWithRadar
|
|||||||
case "Простая карта":
|
case "Простая карта":
|
||||||
map = new SimpleMap();
|
map = new SimpleMap();
|
||||||
break;
|
break;
|
||||||
|
case "Пользовательская карта №1":
|
||||||
|
map = new UserMap_BigBox();
|
||||||
|
break;
|
||||||
|
case "Пользовательская карта №2":
|
||||||
|
map = new UserMap_Colums();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
if (map != null)
|
if (map != null)
|
||||||
{
|
{
|
||||||
@ -51,7 +56,7 @@ namespace AirPlaneWithRadar
|
|||||||
{
|
{
|
||||||
DrawingObjectPlane plain = new(form.SelectedPlain);
|
DrawingObjectPlane plain = new(form.SelectedPlain);
|
||||||
|
|
||||||
if (_mapPlainsCollectionGeneric + plain)
|
if ((_mapPlainsCollectionGeneric + plain) >= 0)
|
||||||
{
|
{
|
||||||
MessageBox.Show("Объект добавлен");
|
MessageBox.Show("Объект добавлен");
|
||||||
pictureBox.Image = _mapPlainsCollectionGeneric.ShowSet();
|
pictureBox.Image = _mapPlainsCollectionGeneric.ShowSet();
|
||||||
|
@ -33,12 +33,12 @@ namespace AirPlaneWithRadar
|
|||||||
_map = map;
|
_map = map;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool operator +(MapWithSetPlainGeneric<T, U> map, T plain)
|
public static int operator +(MapWithSetPlainGeneric<T, U> map, T plain)
|
||||||
{
|
{
|
||||||
return map._setPlains.Insert(plain);
|
return map._setPlains.Insert(plain);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool operator -(MapWithSetPlainGeneric<T, U> map, int position)
|
public static T operator -(MapWithSetPlainGeneric<T, U> map, int position)
|
||||||
{
|
{
|
||||||
return map._setPlains.Remove(position);
|
return map._setPlains.Remove(position);
|
||||||
}
|
}
|
||||||
@ -103,7 +103,7 @@ namespace AirPlaneWithRadar
|
|||||||
private void DrawBackground(Graphics g)
|
private void DrawBackground(Graphics g)
|
||||||
{
|
{
|
||||||
Brush BrushRazmetka = new SolidBrush(Color.DarkGray);
|
Brush BrushRazmetka = new SolidBrush(Color.DarkGray);
|
||||||
|
g.FillRectangle(BrushRazmetka, 0, 0, _pictureWidth, _pictureHeight);
|
||||||
Pen pen = new(Color.White, 5);
|
Pen pen = new(Color.White, 5);
|
||||||
for (int i = 0; i < _pictureWidth / _placeSizeWidth; i++)
|
for (int i = 0; i < _pictureWidth / _placeSizeWidth; i++)
|
||||||
{
|
{
|
||||||
@ -117,7 +117,42 @@ namespace AirPlaneWithRadar
|
|||||||
}
|
}
|
||||||
private void DrawPlains(Graphics g)
|
private void DrawPlains(Graphics g)
|
||||||
{
|
{
|
||||||
|
int CountWidth = _pictureWidth / _placeSizeWidth;
|
||||||
|
|
||||||
|
int x = _pictureWidth - _placeSizeWidth - _placeSizeWidth / 2 - _placeSizeWidth / 4;
|
||||||
|
int y = _placeSizeHeight / 4;
|
||||||
|
|
||||||
|
for (int k = 0; k < _setPlains.Count; k++)
|
||||||
|
{
|
||||||
|
if (_setPlains.Get(k) != null)
|
||||||
|
{
|
||||||
|
if ((k + 1) % CountWidth != 0 || k == 0)
|
||||||
|
{
|
||||||
|
_setPlains.Get(k)?.SetObject(x, y, _pictureWidth, _pictureHeight);
|
||||||
|
_setPlains.Get(k)?.DrawningObject(g);
|
||||||
|
x -= _placeSizeWidth;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
|
||||||
|
_setPlains.Get(k)?.SetObject(x, y, _pictureWidth, _pictureHeight);
|
||||||
|
_setPlains.Get(k)?.DrawningObject(g);
|
||||||
|
x = _pictureWidth - _placeSizeWidth - _placeSizeWidth / 2 - _placeSizeWidth / 4;
|
||||||
|
y += _placeSizeHeight;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (_setPlains.Get(k) == null)
|
||||||
|
{
|
||||||
|
if ((k + 1) % CountWidth != 0 || k == 0)
|
||||||
|
x -= _placeSizeWidth;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
x = _pictureWidth - _placeSizeWidth - _placeSizeWidth / 2 - _placeSizeWidth / 4;
|
||||||
|
y += _placeSizeHeight;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,18 +16,63 @@ namespace AirPlaneWithRadar
|
|||||||
{
|
{
|
||||||
_places = new T[count];
|
_places = new T[count];
|
||||||
}
|
}
|
||||||
public bool Insert(T plain)
|
public int Insert(T plain)
|
||||||
{
|
{
|
||||||
return true;
|
int i;
|
||||||
|
for (i = 0; i < Count; i++)
|
||||||
|
{
|
||||||
|
if (_places[i] == null)
|
||||||
|
{
|
||||||
|
for (int j = i; j >= 1; j--)
|
||||||
|
{
|
||||||
|
_places[j] = _places[j - 1];
|
||||||
|
}
|
||||||
|
_places[0] = plain;
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
public bool Insert(T plain, int position)
|
public int Insert(T plain, int position)
|
||||||
{
|
{
|
||||||
return true;
|
if (position > Count || position < 0)
|
||||||
|
return -1;
|
||||||
|
if (_places[position] == null)
|
||||||
|
{
|
||||||
|
_places[position] = plain;
|
||||||
|
return position;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for (int i = position; i < Count; i++)
|
||||||
|
{
|
||||||
|
if (_places[i] == null)
|
||||||
|
{
|
||||||
|
for (int j = i; j >= position + 1; j--)
|
||||||
|
{
|
||||||
|
_places[j] = _places[j - 1];
|
||||||
|
}
|
||||||
|
_places[position] = plain;
|
||||||
|
return position;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
|
||||||
}
|
}
|
||||||
public bool Remove(int position)
|
public T Remove(int position)
|
||||||
{
|
{
|
||||||
return false;
|
T mid;
|
||||||
|
if (_places[position] != null && position < _places.Length)
|
||||||
|
{
|
||||||
|
mid = _places[position];
|
||||||
|
_places[position] = null;
|
||||||
|
return mid;
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
public T Get(int position)
|
public T Get(int position)
|
||||||
{
|
{
|
||||||
|
55
AirPlaneWithRadar/AirPlaneWithRadar/UserMap_BigBox.cs
Normal file
55
AirPlaneWithRadar/AirPlaneWithRadar/UserMap_BigBox.cs
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace AirPlaneWithRadar
|
||||||
|
{
|
||||||
|
internal class UserMap_BigBox : AbstractMap
|
||||||
|
{
|
||||||
|
Brush barrierColor = new SolidBrush(Color.DarkGray);
|
||||||
|
Brush roadColor = new SolidBrush(Color.Aqua);
|
||||||
|
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 * (_size_x + 1), j * (_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 sizeKub = 5;
|
||||||
|
int counter = 0;
|
||||||
|
for (int i = 0; i < _map.GetLength(0); ++i)
|
||||||
|
{
|
||||||
|
for (int j = 0; j < _map.GetLength(1); ++j)
|
||||||
|
{
|
||||||
|
_map[i, j] = _freeRoad;
|
||||||
|
}
|
||||||
|
} while (counter < 10)
|
||||||
|
{
|
||||||
|
Random rand = new Random();
|
||||||
|
int i = rand.Next(0, 100);
|
||||||
|
int j = rand.Next(0, 100);
|
||||||
|
if (i > _map.GetLength(0) - sizeKub || j > _map.GetLength(0) - sizeKub)
|
||||||
|
continue;
|
||||||
|
for (int iKub = i; iKub < i + sizeKub; iKub++)
|
||||||
|
{
|
||||||
|
for (int jKub = j; jKub < j + sizeKub; jKub++)
|
||||||
|
{
|
||||||
|
_map[iKub, jKub] = _barrier;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
counter++;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
54
AirPlaneWithRadar/AirPlaneWithRadar/UserMap_Colums.cs
Normal file
54
AirPlaneWithRadar/AirPlaneWithRadar/UserMap_Colums.cs
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace AirPlaneWithRadar
|
||||||
|
{
|
||||||
|
internal class UserMap_Colums : AbstractMap
|
||||||
|
{
|
||||||
|
Brush barrierColor = new SolidBrush(Color.DarkGray);
|
||||||
|
Brush roadColor = new SolidBrush(Color.Aqua);
|
||||||
|
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 * (_size_x + 1), j * (_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 sizeHole = 30;
|
||||||
|
int counter = 0;
|
||||||
|
for (int i = 0; i < _map.GetLength(0); ++i)
|
||||||
|
{
|
||||||
|
for (int j = 0; j < _map.GetLength(1); ++j)
|
||||||
|
{
|
||||||
|
_map[i, j] = _freeRoad;
|
||||||
|
}
|
||||||
|
} while (counter < 3)
|
||||||
|
{
|
||||||
|
Random rand = new Random();
|
||||||
|
int iWall = rand.Next(0, 100);
|
||||||
|
int jWall = rand.Next(0, 100);
|
||||||
|
if (iWall > _map.GetLength(0) - sizeHole)
|
||||||
|
continue;
|
||||||
|
for (int i = 0; i < _map.GetLength(0); i++)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (i < iWall || i > iWall + sizeHole)
|
||||||
|
_map[jWall, i] = _barrier;
|
||||||
|
|
||||||
|
}
|
||||||
|
counter++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user