Finally a working hex map that expands.
This commit is contained in:
parent
3ae9251780
commit
937d6b8b9b
|
@ -1,13 +1,14 @@
|
||||||
from kivy.app import App
|
from kivy.app import App
|
||||||
from kivy.core.window import Window
|
|
||||||
from kivy.graphics import *
|
from kivy.graphics import *
|
||||||
from kivy.uix.widget import Widget
|
from kivy.uix.widget import Widget
|
||||||
from kivy.utils import get_color_from_hex, get_random_color
|
from kivy.utils import get_color_from_hex
|
||||||
|
|
||||||
MAP_EDGE = 20
|
|
||||||
HEX_SIZE = 100
|
HEX_SIZE = 100
|
||||||
NUMBER_OF_HEXES = 2
|
NUMBER_OF_HEXES = 2
|
||||||
|
|
||||||
|
HORIZONTAL_BUFFER = 0.9
|
||||||
|
VERTICAL_BUFFER = 0.8
|
||||||
|
|
||||||
|
|
||||||
class HexMap(Widget):
|
class HexMap(Widget):
|
||||||
|
|
||||||
|
@ -20,32 +21,44 @@ class HexMap(Widget):
|
||||||
|
|
||||||
def redraw_scene(self, *args):
|
def redraw_scene(self, *args):
|
||||||
with self.canvas:
|
with self.canvas:
|
||||||
# Draw border around entire field.
|
# Clear scene
|
||||||
Color(*get_color_from_hex("#abcd00"))
|
Color(*get_color_from_hex("#000000ff"))
|
||||||
Rectangle(pos=(0, 0), size=(self.width, self.height))
|
|
||||||
Color(*get_color_from_hex("#000000"))
|
|
||||||
Rectangle(
|
Rectangle(
|
||||||
pos=(MAP_EDGE, MAP_EDGE),
|
pos=(0, 0),
|
||||||
size=(self.width - (2 * MAP_EDGE), self.height - (2 * MAP_EDGE)))
|
size=(self.width, self.height)
|
||||||
|
)
|
||||||
|
|
||||||
# Draw a hexagon in a decent spot.
|
# Draw a hexagon in a decent spot.
|
||||||
tiles_in_row = (self.width - MAP_EDGE * 2) / HEX_SIZE
|
tiles_in_row = int(self.width / (HEX_SIZE * HORIZONTAL_BUFFER))
|
||||||
|
# TODO: Add a tiles in alternating row.
|
||||||
|
tiles_in_col = int(self.height / (HEX_SIZE * VERTICAL_BUFFER))
|
||||||
|
|
||||||
for i in range(tiles_in_row):
|
for y in range(tiles_in_col):
|
||||||
Color(*get_color_from_hex("#00dd0055"))
|
|
||||||
Ellipse(
|
|
||||||
pos=(MAP_EDGE + i * HEX_SIZE * 0.9, MAP_EDGE),
|
|
||||||
segments=6,
|
|
||||||
size=(HEX_SIZE, HEX_SIZE),
|
|
||||||
)
|
|
||||||
|
|
||||||
for i in range(tiles_in_row):
|
if y % 2 == 0:
|
||||||
Color(*get_color_from_hex("#00dd0055"))
|
hex_color = "#0000dd55"
|
||||||
Ellipse(
|
even_row = True
|
||||||
pos=(MAP_EDGE + (i * HEX_SIZE * 0.9) + (0.5 * HEX_SIZE * 0.9), MAP_EDGE + (HEX_SIZE * 0.8)),
|
else:
|
||||||
segments=6,
|
hex_color = "#dd000055"
|
||||||
size=(HEX_SIZE, HEX_SIZE),
|
even_row = False
|
||||||
)
|
|
||||||
|
for x in range(tiles_in_row):
|
||||||
|
Color(*get_color_from_hex(hex_color))
|
||||||
|
|
||||||
|
if even_row:
|
||||||
|
Ellipse(
|
||||||
|
pos=(x * HEX_SIZE * HORIZONTAL_BUFFER, y * HEX_SIZE * VERTICAL_BUFFER),
|
||||||
|
segments=6,
|
||||||
|
size=(HEX_SIZE, HEX_SIZE),
|
||||||
|
)
|
||||||
|
|
||||||
|
else:
|
||||||
|
Ellipse(
|
||||||
|
pos=((x * HEX_SIZE * HORIZONTAL_BUFFER) + (0.5 * HEX_SIZE * HORIZONTAL_BUFFER),
|
||||||
|
y * HEX_SIZE * VERTICAL_BUFFER),
|
||||||
|
segments=6,
|
||||||
|
size=(HEX_SIZE, HEX_SIZE),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class HexMapApp(App):
|
class HexMapApp(App):
|
||||||
|
|
Loading…
Reference in New Issue