From 74d3560d2f0eea96a596c137c644e70bc095fd85 Mon Sep 17 00:00:00 2001 From: Neil Date: Sun, 11 May 2014 23:23:49 +0200 Subject: [PATCH] Draw robot on the world --- naja/constants.py | 1 + naja/scenes/game.py | 2 ++ naja/widgets/robot.py | 35 +++++++++++++++++++++++++++++++++++ 3 files changed, 38 insertions(+) create mode 100644 naja/widgets/robot.py diff --git a/naja/constants.py b/naja/constants.py index 99dd99c..7442eb6 100644 --- a/naja/constants.py +++ b/naja/constants.py @@ -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) diff --git a/naja/scenes/game.py b/naja/scenes/game.py index 2b6bbf2..54368cb 100644 --- a/naja/scenes/game.py +++ b/naja/scenes/game.py @@ -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 index 0000000..cfdb750 --- /dev/null +++ b/naja/widgets/robot.py @@ -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) -- 2.34.1