소스 검색

lifegame cocos: manager grip positionning

Bastien Sevajol 8 년 전
부모
커밋
5c9b00c9e4
1개의 변경된 파일23개의 추가작업 그리고 2개의 파일을 삭제
  1. 23 2
      sandbox/life_game/gui.py

+ 23 - 2
sandbox/life_game/gui.py 파일 보기

@@ -16,15 +16,36 @@ cell_scale = ScaleBy(1.1, duration=0.25)
16 16
 cell_rotate = RotateBy(360, duration=30)
17 17
 
18 18
 
19
+class GridManager(object):
20
+    def __init__(self, square_width: int, border: int=0):
21
+        self.square_width = square_width
22
+        self.border = border
23
+
24
+    @property
25
+    def final_width(self):
26
+        return self.square_width + self.border
27
+
28
+    def scale_sprite(self, sprite: Sprite):
29
+        sprite.scale_x = self.final_width / sprite.image.width
30
+        sprite.scale_y = self.final_width / sprite.image.height
31
+
32
+    def position_sprite(self, sprite: Sprite, grid_position):
33
+        grid_x = grid_position[0]
34
+        grid_y = grid_position[1]
35
+        sprite.position = grid_x * self.final_width, grid_y * self.final_width
36
+
37
+
19 38
 class Cells(Layer):
20 39
     def __init__(self):
21 40
         super().__init__()
22 41
         self.cells = {}
42
+        self.grid_manager = GridManager(32, border=2)
23 43
 
24 44
     def born(self, grid_position):
25 45
         cell = Sprite('resources/cells_l.png')
26
-        cell.position = grid_position[0] * 30, grid_position[1] * 30
27
-        cell.scale = 0.50
46
+        cell.rotation = randint(0, 360)
47
+        self.grid_manager.scale_sprite(cell)
48
+        self.grid_manager.position_sprite(cell, grid_position)
28 49
         cell.do(Repeat(cell_scale + Reverse(cell_scale)))
29 50
         cell.do(Repeat(cell_rotate + Reverse(cell_rotate)))
30 51
         self.cells[grid_position] = cell