From aba03789ef85ad047b3e807b14f793710297462b Mon Sep 17 00:00:00 2001 From: Danila_Mochalov Date: Sat, 8 Oct 2022 20:43:57 +0400 Subject: [PATCH] Added & fixed SpikeMap --- FormMap.java | 1 + SpikeMap.java | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 SpikeMap.java diff --git a/FormMap.java b/FormMap.java index 9741bc5..2208630 100644 --- a/FormMap.java +++ b/FormMap.java @@ -44,6 +44,7 @@ public class FormMap extends JComponent { _abstractMap = new SimpleMap(); break; case ("Spike Map"): + _abstractMap = new SpikeMap(); break; case ("Rail Map"): break; diff --git a/SpikeMap.java b/SpikeMap.java new file mode 100644 index 0000000..4e41c4d --- /dev/null +++ b/SpikeMap.java @@ -0,0 +1,53 @@ +import java.awt.*; + +public class SpikeMap extends AbstractMap{ + /// Цвет участка закрытого + private final Color barrierColor = Color.BLACK; + /// Цвет участка открытого + private final Color roadColor = Color.GREEN; + + @Override + protected void DrawBarrierPart(Graphics g, int i, int j) + { + g.setColor(barrierColor); + g.fillRect( (int)(i * _size_x), (int)(j * _size_y), (int)(i * (_size_x + + 1)), (int)(j * (_size_y + 1))); + } + + @Override + protected void DrawRoadPart(Graphics g, int i, int j) + { + g.setColor(roadColor); + g.fillRect( (int)(i * _size_x), (int)(j * _size_y), (int)(i * (_size_x + + 1)),(int)( j * (_size_y + 1))); + } + @Override + protected void GenerateMap() + { + _map = new int[100][100]; + _size_x = (float)_width / _map.length; + _size_y = (float)_height / _map[0].length; + int counter = 0; + for (int i = 0; i < _map.length; ++i) + { + for (int j = 0; j < _map[0].length; ++j) + { + _map[i][j] = _freeRoad; + } + } + while (counter < 15) + { + int x = _random.nextInt(95) + 1; + int y = _random.nextInt(95) + 1; + if (_map[x][y] == _freeRoad) + { + _map[x][y] = _barrier; + if (_map[x + 1][y] == _freeRoad) _map[x + 1][y] = _barrier; + if (_map[x - 1][y] == _freeRoad) _map[x - 1][y] = _barrier; + if (_map[x][y + 1] == _freeRoad) _map[x][y + 1] = _barrier; + if (_map[x][y - 1] == _freeRoad) _map[x][y - 1] = _barrier; + counter++; + } + } + } +}