from naja.widgets.text import TextWidget
from naja.events import SceneChangeEvent
-
class CreditsScene(Scene):
base_menu = None
def __init__(self):
super(CreditsScene, self).__init__()
- self.widgets.append(TextWidget((10, 10), 'Credits',
- colour=(255, 255, 255)))
+ self.widgets.append(TextWidget((60, 10), 'Credits', fontsize=32,
+ colour='white'))
+ self.widgets.append(TextWidget((60, 30),
+ 'Your mom\n'
+ 'A stranger', fontsize=32,
+ colour='white'))
- def set_base_menu(self, base_menu):
- self.base_menu = base_menu
def handle_event(self, ev):
if ev.type == pgl.KEYUP and ev.key in (pgl.K_q, pgl.K_ESCAPE):
- SceneChangeEvent.post(self.base_menu)
+ from naja.scenes.menu import MenuScene
+ menu_scene = MenuScene()
+ SceneChangeEvent.post(menu_scene)
return
Gameboard scene.
"""
+import pygame.locals as pgl
+
from .scene import Scene
+from .menu import MenuScene
+
+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.events import SceneChangeEvent
class GameScene(Scene):
"""
Gameboard scene.
"""
+
+ def __init__(self):
+ super(GameScene, self).__init__()
+ self.widgets.append(PlayerBitsWidget())
+ self.widgets.append(BoardWidget())
+ self.widgets.append(GameBitsWidget())
+ self.widgets.append(InfoAreaWidget())
+
+ def handle_event(self, ev):
+ if ev.type == pgl.KEYUP and ev.key in (pgl.K_q, pgl.K_ESCAPE):
+ SceneChangeEvent.post(scene=MenuScene())
+ return
def __init__(self):
super(MenuScene, self).__init__()
self.widgets.append(TextWidget((10, 10), 'Haai', fontsize=32,
- self.widgets.append(TextWidget((10, 10), 'Naja',
- colour=(255, 255, 255)))
- self.credits_menu = CreditsScene()
- self.credits_menu.set_base_menu(self)
+ colour='white'))
def handle_event(self, ev):
if ev.type == pgl.KEYUP and ev.key in (pgl.K_q, pgl.K_ESCAPE):
QuitGameEvent.post()
return
if ev.type == pgl.KEYUP and ev.key is pgl.K_RETURN:
- SceneChangeEvent.post(self.credits_menu)
+ credits_menu = CreditsScene()
+ SceneChangeEvent.post(credits_menu)
return
--- /dev/null
+from unittest import TestCase
+
+import pygame
+
+from naja.utils import convert_colour
+
+
+class TestConvertColour(TestCase):
+ def setUp(self):
+ self.red = pygame.Color('red')
+
+ def test_pass_through(self):
+ self.assertEqual(self.red, convert_colour(self.red))
+
+ def test_tuple(self):
+ self.assertEqual(self.red, convert_colour((255, 0, 0)))
+
+ def test_string(self):
+ self.assertEqual(self.red, convert_colour('red'))
--- /dev/null
+import pygame
+
+
+def convert_colour(colour):
+ if isinstance(colour, pygame.Color):
+ return colour
+ if isinstance(colour, tuple):
+ return pygame.Color(*colour)
+ if isinstance(colour, basestring):
+ return pygame.Color(colour)
+ raise ValueError()
--- /dev/null
+"""
+Widget that holds the game tiles.
+"""
+
+from .base import Widget
+
+
+class BoardWidget(Widget):
+ """
+ Widget which holds all the tiles that make up the gameboard.
+ """
+ def __init__(self, pos, image=None):
+ super(BoardWidget, self).__init__(pos, (96, 96))
+
+ def prepare(self):
+ pass
+
+ def draw(self, surface):
+ surface.blit(self.surface, self.rect)
--- /dev/null
+"""
+Widget that holds the games's bits.
+"""
+
+from .base import Widget
+
+
+class GameBitsWidget(Widget):
+ """
+ Widget which holds the game's bits.
+ """
+ def __init__(self, pos, image=None):
+ super(GameBitsWidget, self).__init__(pos, (96, 96))
+
+ def prepare(self):
+ pass
+
+ def draw(self, surface):
+ surface.blit(self.surface, self.rect)
--- /dev/null
+"""
+Widget for the game board information area.
+"""
+
+from .base import Widget
+
+
+class InfoAreaWidget(Widget):
+ """
+ Widget for the game board information area.
+ """
+ def __init__(self, pos, image=None):
+ super(InfoAreaWidget, self).__init__(pos, (96, 96))
+
+ def prepare(self):
+ pass
+
+ def draw(self, surface):
+ surface.blit(self.surface, self.rect)
--- /dev/null
+"""
+Widget that holds the player's bits.
+"""
+
+from .base import Widget
+
+
+class PlayerBitsWidget(Widget):
+ """
+ Widget which holds the player's bits.
+ """
+ def __init__(self, pos, image=None):
+ super(PlayerBitsWidget, self).__init__(pos, (96, 96))
+
+ def prepare(self):
+ pass
+
+ def draw(self, surface):
+ surface.blit(self.surface, self.rect)
from naja.constants import FONT, FONT_SIZE
from naja.widgets.base import Widget
from naja.resources import resources
+from naja.utils import convert_colour
class TextWidget(Widget):
self.text = text
self.fontname = fontname or FONT
self.fontsize = (fontsize or FONT_SIZE) / 2
- self.colour = colour or (0, 0, 0)
+ self.colour = convert_colour(colour or (0, 0, 0))
def prepare(self):
self.font = resources.get_font(self.fontname, self.fontsize)