Exemplo n.º 1
0
    def create(self, spriteName):
        ''' Metoda szablonowa, tworząca obiekt. Należy ją wywołać aby
        stworzyć obiekt
        objName      : Pod jaką nazwą zarejestrować obiekt w fabryce obiektów
        spriteName   : Jakiego sprite'a załadować
        '''

        #
        # FIXME:
        #
        # opis metody sugeruje jeszcze argument objName. Coś go nie widać :-/
        #

        self.spriteName = spriteName

        self.parser = SpriteScriptParser(self.spriteName)
        self.parser.parse()

        self.create_object()  # implementacja w klasie pochodnej

        self.object.set_sprite_name(self.spriteName)
        self.spriteStrategy = SpriteScriptStrategy(
            self.parser.get_logic_part())
        self.object.set_sprite_strategy(self.spriteStrategy)

        self.create_ai_strategy()  # implementacja w klasie pochodnej

        self.object.set_ai_strategy(self.aiStrategy)
        self.spriteManager.load_sprite(self.spriteName,
                                       self.parser.get_sprite_part())
        self.create_related_objects()

        return self.object
Exemplo n.º 2
0
    def create(self, spriteName):
        ''' Metoda szablonowa, tworząca obiekt. Należy ją wywołać aby
        stworzyć obiekt
        objName      : Pod jaką nazwą zarejestrować obiekt w fabryce obiektów
        spriteName   : Jakiego sprite'a załadować
        '''

        #
        # FIXME:
        #
        # opis metody sugeruje jeszcze argument objName. Coś go nie widać :-/
        #

        self.spriteName = spriteName
        
        self.parser = SpriteScriptParser( self.spriteName )
        self.parser.parse()
        
        self.create_object()      # implementacja w klasie pochodnej
        
        self.object.set_sprite_name( self.spriteName )
        self.spriteStrategy = SpriteScriptStrategy( self.parser.get_logic_part() )
        self.object.set_sprite_strategy( self.spriteStrategy )
        
        self.create_ai_strategy() # implementacja w klasie pochodnej

        self.object.set_ai_strategy( self.aiStrategy )
        self.spriteManager.load_sprite( self.spriteName, self.parser.get_sprite_part() )
        self.create_related_objects()
        
        return self.object
Exemplo n.º 3
0
class GameObjectCreator(object):
    ''' Enkapsulacja algorytmu tworzenia obiektu. Dla każdego istotnie
    różnego obiektu należy utworzyć jedną podklasę tej klasy,
    implementując konkretny algorytm tworzenia obiektu

    Tworzenie oznacza zwrócenie przez metodę create świeżo
    wypieczonego egzemplarza odpowiedniej klasy
    '''

    def __init__(self, spriteManager):
        '''
        objectFactory: Fabryka obiektów
        spriteManager: Zarządca sprite'ów
        '''
        self.spriteManager  = spriteManager # zarządca sprite'ów
        self.spriteName     = None      # nazwa ładowanego sprite'a

        self.parser         = None      # parser plików konfiguracyjnych
        self.spriteStrategy = None      # strategia zarządzania spritem
        self.aiStrategy     = None      # strategia ai nowego obiektu

        self.object         = None      # wynik wypiekania obiektu

    def create(self, spriteName):
        ''' Metoda szablonowa, tworząca obiekt. Należy ją wywołać aby
        stworzyć obiekt
        objName      : Pod jaką nazwą zarejestrować obiekt w fabryce obiektów
        spriteName   : Jakiego sprite'a załadować
        '''

        #
        # FIXME:
        #
        # opis metody sugeruje jeszcze argument objName. Coś go nie widać :-/
        #

        self.spriteName = spriteName
        
        self.parser = SpriteScriptParser( self.spriteName )
        self.parser.parse()
        
        self.create_object()      # implementacja w klasie pochodnej
        
        self.object.set_sprite_name( self.spriteName )
        self.spriteStrategy = SpriteScriptStrategy( self.parser.get_logic_part() )
        self.object.set_sprite_strategy( self.spriteStrategy )
        
        self.create_ai_strategy() # implementacja w klasie pochodnej

        self.object.set_ai_strategy( self.aiStrategy )
        self.spriteManager.load_sprite( self.spriteName, self.parser.get_sprite_part() )
        self.create_related_objects()
        
        return self.object

    #
    # Poniższe metody powinny być CHRONIONE. Należy je w ten sposób
    # traktować.  Jedynym poprawnym ich zastosowaniem jest
    # dostarczenie ich implementacji w podklasach metoda create, która
    # jest publiczna, dba o prawidłowe ich wywoływanie
    #
        
    def create_object(self): abstract
    ''' Implementując tę metodę należy utworzyć obiekt self.object
        np. self.object = PlayerGameObject() '''

    def create_ai_strategy(self): abstract
    ''' Implmeentując tę metodę należy utworzyć pole
    self.aiStrategy. Powinna to być strategia zachowania (AI), która
    ma być przypisana do obiektu.

    przykładowo:
    self.aiStrategy = HeliAIStrategy( self.object, self.spriteStrategy, self.gameWorld )
    '''

    def create_related_objects(self):
        ''' Tworzenie powiązanych obiektów. Np. helikopter powinien
        utworzyć rakiety i pociski, a jeep działko i pociski. Kaczucha
        może chcieć utworzyć części składowe itp.

        Ideą jest swtorzenie wszystkich obiektów potrzebnych do
        funkcjonowania obiektu głównego

        Jeżeli obiekt nie tworzy tego typu obiektów, to nie ma powodu,
        żeby dostarczał tę metodę.
        '''
        pass
Exemplo n.º 4
0
#!/usr/bin/python
# -*- coding: utf-8 -*-

import sys
sys.path.append("../src")

from spriteScriptParser import SpriteScriptParser

parser = SpriteScriptParser("test_sprite")
parser.parse()

logic = parser.get_logic_part()
sprite = parser.get_sprite_part()

failed_count = 0


def test(value, correctValue, description):
    print description + ": ",
    if value == correctValue:
        print "OK"
        return 0
    else:
        print "FAILED: should be", correctValue, "got", value
        return 1


failed_count += test(logic['leci'].duration, 100, "leci.duration")
failed_count += test(logic['leci'].frames_count, 7, "leci.frames_count")
failed_count += test(sprite['leci'].y_offset, 0, "leci.y_offset")
failed_count += test(sprite['leci'].x_offset, 0, "leci.x_offset")
Exemplo n.º 5
0
class GameObjectCreator(object):
    ''' Enkapsulacja algorytmu tworzenia obiektu. Dla każdego istotnie
    różnego obiektu należy utworzyć jedną podklasę tej klasy,
    implementując konkretny algorytm tworzenia obiektu

    Tworzenie oznacza zwrócenie przez metodę create świeżo
    wypieczonego egzemplarza odpowiedniej klasy
    '''
    def __init__(self, spriteManager):
        '''
        objectFactory: Fabryka obiektów
        spriteManager: Zarządca sprite'ów
        '''
        self.spriteManager = spriteManager  # zarządca sprite'ów
        self.spriteName = None  # nazwa ładowanego sprite'a

        self.parser = None  # parser plików konfiguracyjnych
        self.spriteStrategy = None  # strategia zarządzania spritem
        self.aiStrategy = None  # strategia ai nowego obiektu

        self.object = None  # wynik wypiekania obiektu

    def create(self, spriteName):
        ''' Metoda szablonowa, tworząca obiekt. Należy ją wywołać aby
        stworzyć obiekt
        objName      : Pod jaką nazwą zarejestrować obiekt w fabryce obiektów
        spriteName   : Jakiego sprite'a załadować
        '''

        #
        # FIXME:
        #
        # opis metody sugeruje jeszcze argument objName. Coś go nie widać :-/
        #

        self.spriteName = spriteName

        self.parser = SpriteScriptParser(self.spriteName)
        self.parser.parse()

        self.create_object()  # implementacja w klasie pochodnej

        self.object.set_sprite_name(self.spriteName)
        self.spriteStrategy = SpriteScriptStrategy(
            self.parser.get_logic_part())
        self.object.set_sprite_strategy(self.spriteStrategy)

        self.create_ai_strategy()  # implementacja w klasie pochodnej

        self.object.set_ai_strategy(self.aiStrategy)
        self.spriteManager.load_sprite(self.spriteName,
                                       self.parser.get_sprite_part())
        self.create_related_objects()

        return self.object

    #
    # Poniższe metody powinny być CHRONIONE. Należy je w ten sposób
    # traktować.  Jedynym poprawnym ich zastosowaniem jest
    # dostarczenie ich implementacji w podklasach metoda create, która
    # jest publiczna, dba o prawidłowe ich wywoływanie
    #

    def create_object(self):
        abstract

    ''' Implementując tę metodę należy utworzyć obiekt self.object
        np. self.object = PlayerGameObject() '''

    def create_ai_strategy(self):
        abstract

    ''' Implmeentując tę metodę należy utworzyć pole
    self.aiStrategy. Powinna to być strategia zachowania (AI), która
    ma być przypisana do obiektu.

    przykładowo:
    self.aiStrategy = HeliAIStrategy( self.object, self.spriteStrategy, self.gameWorld )
    '''

    def create_related_objects(self):
        ''' Tworzenie powiązanych obiektów. Np. helikopter powinien
        utworzyć rakiety i pociski, a jeep działko i pociski. Kaczucha
        może chcieć utworzyć części składowe itp.

        Ideą jest swtorzenie wszystkich obiektów potrzebnych do
        funkcjonowania obiektu głównego

        Jeżeli obiekt nie tworzy tego typu obiektów, to nie ma powodu,
        żeby dostarczał tę metodę.
        '''
        pass
Exemplo n.º 6
0
#!/usr/bin/python
# -*- coding: utf-8 -*-

import sys
sys.path.append("../src")

from spriteScriptParser import SpriteScriptParser

parser = SpriteScriptParser("test_sprite")
parser.parse()

logic  = parser.get_logic_part()
sprite = parser.get_sprite_part()

failed_count = 0

def test(value, correctValue, description):
    print description + ": ",
    if value == correctValue:
        print "OK"
        return 0
    else:
        print "FAILED: should be", correctValue, "got", value
        return 1

failed_count += test(logic['leci'].duration, 100, "leci.duration")
failed_count += test(logic['leci'].frames_count, 7, "leci.frames_count")
failed_count += test(sprite['leci'].y_offset, 0, "leci.y_offset")
failed_count += test(sprite['leci'].x_offset, 0, "leci.x_offset")
failed_count += test(sprite['leci'].frame_width, 130, "leci.frame_width")
failed_count += test(sprite['leci'].frame_height, 90, "leci.frame_height")