added random colours to the hexagons

This commit is contained in:
Amy Wooding 2016-06-04 23:04:53 -07:00
parent f5aaa50433
commit 8b5b258be7
3 changed files with 31 additions and 48 deletions

View File

@ -1110,10 +1110,24 @@
"What did we learn? \n", "What did we learn? \n",
"\n", "\n",
"* angle 0 appears to be straight up for a circle or ellipse\n", "* angle 0 appears to be straight up for a circle or ellipse\n",
"* The radius of the hexagon is 2*height\n", "* The radius of the hexagon is $2*height$ for a pointed top hexagon, and for flat top, the radius of the hexagon is $2*width$\n",
"* Make sure you fix the aspect ratio of the rectangles you're basing things now\n", "* Make sure you fix the aspect ratio of the rectangles you're basing things now\n",
"* " "* segments are inscribed **inside** the circle\n",
"* tiling problems are hard!!! get a mathematician.\n",
"* there is a utility for hex codes for colours\n",
"* draw the hexagon using a Line with a circle to make an outline instead of an Ellipse\n",
"\n",
"Cleaned some stuff up and added colours to the hexagons. "
] ]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
} }
], ],
"metadata": { "metadata": {

59
main.py
View File

@ -1,11 +1,14 @@
import collections import collections
import random import random
import math import math
from kivy import app, properties from kivy import app, properties
from kivy.uix import button, label from kivy.uix import button, label
from kivy.uix.floatlayout import FloatLayout from kivy.uix.floatlayout import FloatLayout
from kivy.graphics import Color, Ellipse, Line from kivy.graphics import Color, Ellipse, Line
from kivy.logger import Logger from kivy.logger import Logger
import kivy.utils
from kivy.vector import Vector
MapCoords = collections.namedtuple('MapCoords', ['row', 'col']) MapCoords = collections.namedtuple('MapCoords', ['row', 'col'])
@ -24,7 +27,7 @@ class StrategyGame(FloatLayout):
col = region % self.map_cols col = region % self.map_cols
# Add hex cells to make up the map. # Add hex cells to make up the map.
hex_cell = self.pick_hex_cell(row=row, col=col) hex_cell = HexMapCell()
self.main_map.add_widget(hex_cell) self.main_map.add_widget(hex_cell)
# Add overlay conditionally. # Add overlay conditionally.
@ -32,65 +35,31 @@ class StrategyGame(FloatLayout):
print('({}, {})'.format(row, col)) print('({}, {})'.format(row, col))
#radius = math.sqrt(hex_cell.width**2 + hex_cell.height**2) #radius = math.sqrt(hex_cell.width**2 + hex_cell.height**2)
radius = 2*hex_cell.height radius = 2*hex_cell.height
solid_x = hex_cell.x - hex_cell.height*2
solid_y = hex_cell.y - hex_cell.height*2
solid_size = (4*hex_cell.height, 4*hex_cell.height)
with hex_cell.canvas.after: with hex_cell.canvas.after:
Color(1,0,1,1) Color(1,0,1,1)
hex_cell.ell = Line(circle=(hex_cell.x, hex_cell.y,radius, 0, 360, 6), width=2) hex_cell.ell = Line(circle=(hex_cell.x, hex_cell.y,radius, 0, 360, 6), width=2)
Color(*kivy.utils.get_random_color(alpha = .5))
hex_cell.solid = Ellipse(pos = (solid_x, solid_y), size = solid_size, segments = 6 )
hex_cell.bind(pos=hex_cell.update_pos, size=hex_cell.update_pos) hex_cell.bind(pos=hex_cell.update_pos, size=hex_cell.update_pos)
@staticmethod
def pick_hex_cell(row, col):
row_mod = row % 6
if col % 2 == 0:
if row_mod == 0:
return BU()
elif row_mod in (1, 2):
return L()
elif row_mod == 3:
return TD()
elif row_mod in (4, 5):
return R()
else:
if row_mod == 0:
return TD()
elif row_mod in (1, 2):
return R()
elif row_mod == 3:
return BU()
elif row_mod in (4, 5):
return L()
class HexMapCell(label.Label): class HexMapCell(label.Label):
def __init__(self, row=0, col=0, **kwargs): def __init__(self, row=0, col=0, **kwargs):
super(HexMapCell, self).__init__(**kwargs) super(HexMapCell, self).__init__(**kwargs)
self.coords = MapCoords(row, col) self.coords = MapCoords(row, col)
def update_pos(self, instance, value): def update_pos(self, instance, value):
Logger.info("StratGame: {}".format(instance))
#radius = math.sqrt(self.width**2 + self.height**2) #radius = math.sqrt(self.width**2 + self.height**2)
radius = 2*self.height radius = 2*self.height
solid_x = self.x - self.height*2
solid_y = self.y - self.height*2
solid_size = (4*self.height, 4*self.height)
self.ell.circle = (self.x, self.y, radius, 0, 360, 6) self.ell.circle = (self.x, self.y, radius, 0, 360, 6)
self.solid.pos = (solid_x, solid_y)
self.solid.size = solid_size
class BU(HexMapCell):
pass
class TD(HexMapCell):
pass
class L(HexMapCell):
pass
class R(HexMapCell):
pass
class HexMapControlCell(button.Button): class HexMapControlCell(button.Button):
def __init__(self, hex_bind=None, **kwargs): def __init__(self, hex_bind=None, **kwargs):

View File

@ -1,5 +1,5 @@
#:import math math #:import math math
#:include debug.kv ##:include debug.kv
<StrategyGame>: <StrategyGame>:
id: _game id: _game