Changeset 794
- Timestamp:
- 07/20/10 22:57:13 (7 weeks ago)
- Files:
-
- 1 modified
-
confluence/randombubble.py (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
confluence/randombubble.py
r793 r794 5 5 6 6 import random 7 from copy import deepcopy 7 8 from networkx import Graph, connected_components, draw 8 9 … … 32 33 33 34 class RandomRow(Row): 34 def __init__(self, row_index, selection ):35 def __init__(self, row_index, selection, symmetric): 35 36 super(RandomRow, self).__init__(row_index) 36 self.balls = [Ball(random.choice(selection)) for b in range(self.num_balls())] 37 if symmetric: 38 startballs = [Ball(random.choice(selection)) for b in range(4)] 39 self.balls = startballs + list(reversed(deepcopy(startballs)[:self.num_balls()/2])) 40 else: 41 self.balls = [Ball(random.choice(selection)) for b in range(self.num_balls())] 37 42 38 43 class BlankRow(Row): … … 43 48 class Level(object): 44 49 BALLS = range(8) 50 ASYM, SYM_HORIZ, SYM_BOTH = range(3) 45 51 46 def __init__(self, fill_rows, colours, density ):52 def __init__(self, fill_rows, colours, density, symmetry): 47 53 self.rows = [] 48 54 49 55 selection = random.sample(self.BALLS, colours) + [None] * density 56 symmetric_rows = symmetry > 0 50 57 51 for row in range(fill_rows): 52 self.rows.append(RandomRow(row, selection)) 58 if symmetry > 1: 59 for row in range((fill_rows + 1)/2): 60 self.rows.append(RandomRow(row, selection, symmetric_rows)) 61 for rand_row in reversed(self.rows[:fill_rows/2]): 62 self.rows.append(deepcopy(rand_row)) 63 else: 64 for row in range(fill_rows): 65 self.rows.append(RandomRow(row, selection, symmetric_rows)) 53 66 54 67 for row in range(fill_rows, 10): … … 99 112 colours = kwargs.get("colours", random.randint(1,8)) 100 113 density = kwargs.get("density", random.randint(1,4)) 101 level = Level(fill_rows, colours, density) 114 symmetry = kwargs.get("symmetry", random.randint(0,2)) 115 level = Level(fill_rows, colours, density, symmetry) 102 116 if level.valid(): 103 117 self.levels.append(level)
