Draw robot on the world
authorNeil <neil@dip.sun.ac.za>
Sun, 11 May 2014 21:23:49 +0000 (23:23 +0200)
committerNeil <neil@dip.sun.ac.za>
Sun, 11 May 2014 21:30:25 +0000 (23:30 +0200)
naja/constants.py
naja/scenes/game.py
naja/widgets/robot.py [new file with mode: 0644]

index 99dd99c97928caa730eec83829d5825c9c56051d..7442eb60a4ecdfe388b90d57276839f222efe606 100644 (file)
@@ -49,3 +49,4 @@ TILE_SIZE = (96, 96)
 BOARD_SIZE = (5 * TILE_SIZE[0], 5 * TILE_SIZE[1])
 BIT_SIZE = (5 * TILE_SIZE[0], (SCREEN[1] - 5 * TILE_SIZE[1]) // 2)
 INFO_SIZE = (SCREEN[0] - 5 * TILE_SIZE[0], SCREEN[1])
+PLAYER_SIZE = (64, 96)
index 2b6bbf2481dd8065a0e0392df12bf1c8876fb075..54368cbcd99a330324e34af5cb0937855275c456 100644 (file)
@@ -10,6 +10,7 @@ from naja.widgets.board import BoardWidget
 from naja.widgets.player_bits import PlayerBitsWidget
 from naja.widgets.game_bits import GameBitsWidget
 from naja.widgets.info_area import InfoAreaWidget
+from naja.widgets.robot import RobotWidget
 
 
 class GameScene(Scene):
@@ -23,6 +24,7 @@ class GameScene(Scene):
         self.add(BoardWidget((0, 60), state))
         self.add(GameBitsWidget((0, 540)))
         self.add(InfoAreaWidget((480, 0)))
+        self.add(RobotWidget(state))
 
     def handle_scene_event(self, ev):
         from naja.scenes.menu import MenuScene
diff --git a/naja/widgets/robot.py b/naja/widgets/robot.py
new file mode 100644 (file)
index 0000000..cfdb750
--- /dev/null
@@ -0,0 +1,35 @@
+"""Widget to draw the player on the screen"""
+import pygame
+import pygame.locals as pgl
+
+from naja.constants import PLAYER_SIZE, BIT_SIZE, TILE_SIZE, BITS
+from naja.resources import resources
+from naja.widgets.base import Widget
+
+IMG_MAP = {
+        BITS.CYAN: 'board/robot_cyan.png',
+        BITS.YELLOW: 'board/robot_yellow.png',
+        BITS.MAGENTA: 'board/robot_magenta.png',
+        }
+
+
+class RobotWidget(Widget):
+    """Widget which holds a tile on the game board."""
+    def __init__(self, state):
+        pos = (state.player.position[0] * TILE_SIZE[0] + 32,
+               state.player.position[1] * TILE_SIZE[1] + BIT_SIZE[1])
+        super(RobotWidget, self).__init__(pos, PLAYER_SIZE)
+        self.state = state
+
+    def prepare(self):
+        # Look up the required bits on the board location
+        self.pos = (self.state.player.position[0] * TILE_SIZE[0] + 32,
+                    self.state.player.position[1] * TILE_SIZE[1] + BIT_SIZE[1])
+        self.surface = resources.get_image('board/robot.png')
+        for bit, img_name in IMG_MAP.iteritems():
+            if self.state.player.bits.check_bit(bit):
+                bit_img = resources.get_image(img_name)
+                self.surface.blit(bit_img, (0, 0))
+
+    def draw(self, surface):
+        surface.blit(self.surface, self.rect)