示例#1
0
def main():
    #cause I don't want to pass these around
    global WINDOW, REN, SPRITE_FACTORY, SPRITE_RENDERER, MUSIC

    SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO)

    WINDOW = ext.Window("Tetromino", size=(WINDOWWIDTH, WINDOWHEIGHT))
    REN = ext.Renderer(WINDOW)
    WINDOW.show()

    font_file = sysfont.get_font("freesans", sysfont.STYLE_BOLD)
    font_manager = ext.FontManager(font_file, size=18)

    #fontmanager=font_manager will be default_args passed to every sprite creation method
    SPRITE_FACTORY = ext.SpriteFactory(renderer=REN,
                                       fontmanager=font_manager,
                                       free=True)
    SPRITE_RENDERER = SPRITE_FACTORY.create_sprite_render_system(WINDOW)

    sdlmixer.Mix_Init(sdlmixer.MIX_INIT_OGG)
    sdlmixer.Mix_OpenAudio(22050, sdlmixer.MIX_DEFAULT_FORMAT, 2, 1024)
    #BEEP1 = sdlmixer.Mix_LoadWAV(b"beep1.ogg")

    showTextScreen("Tetromino")
    while True:
        if random.randint(0, 1) == 0:
            MUSIC = sdlmixer.Mix_LoadMUS(b"tetrisb.mid")
        else:
            MUSIC = sdlmixer.Mix_LoadMUS(b"tetrisc.mid")
        sdlmixer.Mix_PlayMusic(MUSIC, -1)
        runGame()
        sdlmixer.Mix_HaltMusic()
        showTextScreen("Game Over")
示例#2
0
    def test_FontManager_add(self):
        fm = sdl2ext.FontManager(RESOURCES.get_path("tuffy.ttf"))
        assert "tuffy" in fm.aliases
        assert "tuffy" in fm.fonts
        assert 16 in fm.fonts["tuffy"]
        assert isinstance(fm.fonts["tuffy"][16].contents, sdlttf.TTF_Font)

        # Do some metrics tests
        # NOTE: Ascent & other font metrics changed in FreeType 2.10, so we
        # test against both < 2.10 and >= 2.10 values
        font = fm.fonts["tuffy"][16]
        assert sdlttf.TTF_FontAscent(font) in [13, 16]
        fm.add(RESOURCES.get_path("tuffy.ttf"), size=12)
        font = fm.fonts["tuffy"][12]
        assert sdlttf.TTF_FontAscent(font) in [10, 12]

        with pytest.raises(IOError):
            fm.add("inexistent.ttf")
        # I don't find a scenario raising a TTF_Error.
        # self.assertRaises(sdl2ext.SDLError, fm.add, "resources/tuffy.ttf",
        #                   size=-1)

        # Close the font manager and add a new font
        fm.close()
        fm.add(RESOURCES.get_path("tuffy.ttf"), size=12)
        assert isinstance(fm.fonts["tuffy"][12].contents, sdlttf.TTF_Font)
示例#3
0
 def test_FontManager(self):
     fm = sdl2ext.FontManager(RESOURCES.get_path("tuffy.ttf"),
                              bg_color=(100, 0, 0))
     self.assertIsInstance(fm, sdl2ext.FontManager)
     self.assertEqual(fm.default_font, "tuffy")
     self.assertEqual(fm.size, 16)
     self.assertEqual(fm.bg_color, sdl2ext.Color(100, 0, 0, 0))
示例#4
0
 def test_FontManager(self):
     fm = sdl2ext.FontManager(RESOURCES.get_path("tuffy.ttf"),
                              bg_color=(100, 0, 0))
     assert isinstance(fm, sdl2ext.FontManager)
     assert fm.default_font == "tuffy"
     assert fm.size == 16
     assert fm.bg_color == sdl2ext.Color(100, 0, 0, 0)
示例#5
0
 def test_FontManager_default_font(self):
     fm = sdl2ext.FontManager(RESOURCES.get_path("tuffy.ttf"))
     self.assertEqual(fm.default_font, "tuffy")
     self.assertEqual(fm.size, 16)
     with self.assertRaises(ValueError):
         fm.default_font = "Inexistent Alias"
     fm.add(RESOURCES.get_path("tuffy.copy.ttf"), size=10)
     fm.default_font = "tuffy.copy"
     fm.size = 10
     self.assertEqual(fm.default_font, "tuffy.copy")
     self.assertEqual(fm.size, 10)
     fm.default_font = "tuffy.copy"
     fm.size = 16
     self.assertEqual(fm.default_font, "tuffy.copy")
     self.assertEqual(fm.size, 16)
示例#6
0
 def test_FontManager_default_font(self):
     fm = sdl2ext.FontManager(RESOURCES.get_path("tuffy.ttf"))
     assert fm.default_font == "tuffy"
     assert fm.size == 16
     with pytest.raises(ValueError):
         fm.default_font = "Inexistent Alias"
     fm.add(RESOURCES.get_path("tuffy.copy.ttf"), size=10)
     fm.default_font = "tuffy.copy"
     fm.size = 10
     assert fm.default_font == "tuffy.copy"
     assert fm.size == 10
     fm.default_font = "tuffy.copy"
     fm.size = 16
     assert fm.default_font == "tuffy.copy"
     assert fm.size == 16
示例#7
0
    def test_FontManager_render(self):
        fm = sdl2ext.FontManager(RESOURCES.get_path("tuffy.ttf"))
        text_surf = fm.render("text")
        self.assertIsInstance(text_surf, surface.SDL_Surface)
        self.assertTrue(text_surf.w > 1)

        text_surf = fm.render("text", size=10)
        self.assertIsInstance(text_surf, surface.SDL_Surface)

        text_surf = fm.render("""
text long enough to have it wrapped at 100 px width.""", size=20, width=100)
        self.assertIsInstance(text_surf, surface.SDL_Surface)
        self.assertTrue(text_surf.w > 1)
        self.assertTrue(text_surf.w == 100)
        self.assertRaises(KeyError, fm.render, "text", alias="inexistent")
示例#8
0
    def test_FontManager_render(self):
        fm = sdl2ext.FontManager(RESOURCES.get_path("tuffy.ttf"))
        text_surf = fm.render("text")
        assert isinstance(text_surf, surface.SDL_Surface)
        assert text_surf.w > 1

        text_surf = fm.render("text", size=10)
        assert isinstance(text_surf, surface.SDL_Surface)

        text_surf = fm.render("""
text long enough to have it wrapped at 100 px width.""",
                              size=20,
                              width=100)
        assert isinstance(text_surf, surface.SDL_Surface)
        assert text_surf.w > 1
        assert text_surf.w == 100
        with pytest.raises(KeyError):
            fm.render("text", alias="inexistent")
    def test_SpriteFactory_from_text(self):
        sfactory = sdl2ext.SpriteFactory(sdl2ext.SOFTWARE)
        fm = sdl2ext.FontManager(RESOURCES.get_path("tuffy.ttf"))

        # No Fontmanager passed
        self.assertRaises(KeyError, sfactory.from_text, "Test")

        # Passing various keywords arguments
        sprite = sfactory.from_text("Test", fontmanager=fm)
        self.assertIsInstance(sprite, sdl2ext.SoftwareSprite)

        sprite = sfactory.from_text("Test", fontmanager=fm, alias="tuffy")
        self.assertIsInstance(sprite, sdl2ext.SoftwareSprite)

        # Get text from a texture sprite factory
        window = sdl2ext.Window("Test", size=(1, 1))
        renderer = sdl2ext.Renderer(window)
        tfactory = sdl2ext.SpriteFactory(sdl2ext.TEXTURE,
                                         renderer=renderer,
                                         fontmanager=fm)
        sprite = tfactory.from_text("Test", alias="tuffy")
        self.assertIsInstance(sprite, sdl2ext.TextureSprite)
        dogc()
示例#10
0
    def test_FontManager_add(self):
        fm = sdl2ext.FontManager(RESOURCES.get_path("tuffy.ttf"))
        self.assertIn("tuffy", fm.aliases)
        self.assertIn("tuffy", fm.fonts)
        self.assertIn(16, fm.fonts["tuffy"])
        self.assertIsInstance(fm.fonts["tuffy"][16].contents, sdlttf.TTF_Font)

        # Do some metrics tests
        font = fm.fonts["tuffy"][16]
        self.assertEqual(16, sdlttf.TTF_FontAscent(font))
        fm.add(RESOURCES.get_path("tuffy.ttf"), size=12)
        font = fm.fonts["tuffy"][12]
        self.assertEqual(12, sdlttf.TTF_FontAscent(font))

        self.assertRaises(IOError, fm.add, "inexistent.ttf")
        # I don't find a scenario raising a TTF_Error.
        # self.assertRaises(sdl2ext.SDLError, fm.add, "resources/tuffy.ttf",
        #                   size=-1)

        # Close the font manager and add a new font
        fm.close()
        fm.add(RESOURCES.get_path("tuffy.ttf"), size=12)
        self.assertIsInstance(fm.fonts["tuffy"][12].contents, sdlttf.TTF_Font)
示例#11
0
 def test_FontManager_close(self):
     fm = sdl2ext.FontManager(RESOURCES.get_path("tuffy.ttf"))
     fm.add(RESOURCES.get_path("tuffy.ttf"), size=20)
     fm.add(RESOURCES.get_path("tuffy.ttf"), alias="Foo", size=10)
     fm.close()
     self.assertEqual(fm.fonts, {})