def __init__(self, player_name="Hero"):
        self.log = logging.getLogger(__name__)
        self.x = Display.TILE_SIZE
        self.y = Display.GAME_SCREEN_START + Display.TILE_SIZE
        self.rect = pygame.Rect(self.x, self.y, PLAYER_WIDTH, PLAYER_HEIGHT)

        self.colliderx = self.x  #playersize/2
        self.collidery = self.y
        self.collisionx = self.x
        self.collisiony = self.y
        self.name = player_name
        self.level = 1
        self.experience = 0
        self.meleeExp = 0
        self.rangeExp = 0
        self.score = 0
        self.health = 20
        self.maxHealth = 20  #use for leveling and stuff
        self.stamina = 10
        self.maxStamina = 10  #use for leveling and stuff
        self.damage = 5
        self.rangeDamage = 1
        self.range = 50
        self.size = 48
        self.weaponx = 0
        self.weapony = 0
        self.direction = 'down'
        self.moveUp = False
        self.moveDown = False
        self.moveLeft = False
        self.moveRight = False
        self.isAttacking = 0
        self.isTrading = False
        self.pickup = False
        self.knocksBack = True
        self.dot = False
        self.dotCount = 3
        self.width = PLAYER_WIDTH
        self.height = PLAYER_HEIGHT
        self.color = Display.RED
        self.spriteObj = SpriteAnimation.SpriteAnimation(self.player_down, 10)
        self.dungeonObj = None
        self.currRoomObj = None
        self.isDead = False
        self.currentWeapon = Weapon.MeleeWeapon()
        self.rangedWeapon = RangedWeapon.RangedWeapon(self)
        self.arrows = 1
        self.lastFired = 0
        self.updateToWeaponStats()
        self.attackRect = pygame.Rect(self.x, self.y, self.currentWeapon.range,
                                      self.currentWeapon.range)
        # TODO: sometimes self.range is being set to a float here...figure out why
        if not isinstance(self.range, int):
            self.log.warning("Player range set to invalid type %s. Value: "
                                "%s", type(self.range), str(self.range))
            self.range = int(self.range)
        self.circle = pygame.draw.circle(Display.DISPLAYSURF, Display.BLACK, (self.collisionx, self.collisiony), self.range, 1)
        self.log.debug('Player %s Initialized', self.name)
Exemple #2
0
 def initAnimations(self):
     for animation in self.animations['animations']:
         name = animation['animation']
         directions = animation['directions']
         frames = animation['frames']
         numFrames = animation['numFrames']
         frameDelay = animation['frameDelay']
         limited = animation['limited']
         surfaceName = animation['image']
         directions = self.loadDirections((directions, numFrames, frames))
         self.animations[name] = sa.SpriteAnimation(
             self.spriteSurfaces[surfaceName], frameDelay, directions,
             limited)
Exemple #3
0
    def getVerbTraits(self):
        #COME up with better and more verbs...
        #balance required
        if self.verb == 0:  #Fighting
            self.chase = True
            self.damage += 1

        elif self.verb == 1:  #Slithering
            self.speed -= 1

        elif self.verb == 2:  #Polluting
            self.verbAnimSpriteObj = SpriteAnimation.SpriteAnimation(
                self.polluting_sprite, 10)
            self.attack = "poision"

        elif self.verb == 3:  #Disgusting
            self.verbAnimSpriteObj = SpriteAnimation.SpriteAnimation(
                self.disgusting_sprite, 10)
            pass  #Player fear level?

        else:
            pass  # TODO: log
Exemple #4
0
def main():

    #pygame setup
    pygame.init()
    clock = pygame.time.Clock()
    SCREENSIZE = (1000, 1000)  # set to background size
    screen = pygame.display.set_mode(SCREENSIZE)

    img = pygame.image.load("images/pixelated_samoyed.jpg")

    # This image will always be on the bottom left corner of screen - using SCREENSIZE
    # height X width
    # img_pos = ( (SCREENSIZE[0]-SCREENSIZE[0]), (SCREENSIZE[1] - img.get_size()[1]) )

    img_pos = (0, 0)

    background_images = load_images("images/Orbitals_Background_Sprite")

    background_sprite = SpriteAnimation((0, 0), background_images)

    background_group = pygame.sprite.Group(background_sprite)

    running = True
    while running:

        # background_images = load_images("Images/Orbitals_Background_Sprite")

        #check if window was closed
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                running = False

        #draw graphics to screen
        screen.fill(WHITE)

        # sprite
        background_group.update(background_images)
        background_group.draw(screen)

        # blit image onto screen surface
        screen.blit(img, img_pos)

        pygame.display.flip()
        clock.tick(30)

    pygame.quit()
    def __init__(self):
        self.sprite = self.default_sprite1
        self.spriteObj = SpriteAnimation.SpriteAnimation(
            self.sprite_list_down, 1)
        self.isRanged = False
        self.range = RANGE
        self.damage = DAMAGE
        self.hasEffect = False
        self.effect = EFFECT
        self.speed = 0
        self.dot = 0
        self.damageUser = False
        self.damateToUser = 0
        self.originx = 0
        self.originy = 0
        self.collisionx = 0
        self.collisiony = 0
        self.direction = "none"

        # Generate a unique name for the Weapon
        # TODO: make this process generic and simplified for ALL items
        self.adjective = random.randint(0, len(WM.lladjectives) - 1)
        self.material = random.randint(0, len(WM.llmaterial) - 1)
        self.noun = random.randint(0, len(WM.llnouns) - 1)
        self.name = "{adj} {mat} {noun}".format(
            adj=WM.lladjectives[self.adjective],
            mat=WM.llmaterial[self.material],
            noun=WM.llnouns[self.noun])
        if self.isSpecial():
            self.hasSpecial = True
            self.verb = random.randint(0, len(WM.llverbs) - 1)
            self.name += " " + WM.llverbs[self.verb]
        else:
            self.hasSpecial = False

        self.font = pygame.font.SysFont("monospace", 12)
        self.text = self.font.render(self.name, 1, (0, 0, 0))

        # Get traits for the weapon
        self.getAdjectiveTraits()
        self.getMaterialTraits()
        self.getNounTraits()
Exemple #6
0
 def __init__(self):
     self.sprite = self.default_sprite1
     self.spriteObj = SpriteAnimation.SpriteAnimation(
         self.sprite_list_down, 1)
     self.isRanged = False
     self.range = RANGE
     self.damage = DAMAGE
     self.hasEffect = False
     self.effect = EFFECT
     self.speed = 0
     self.dot = 0
     self.damageUser = False
     self.damateToUser = 0
     self.originx = 0
     self.originy = 0
     self.collisionx = 0
     self.collisiony = 0
     self.direction = "none"
     self.adjective = random.randint(0, len(WM.lladjectives) - 1)
     self.material = random.randint(0, len(WM.llmaterial) - 1)
     self.noun = random.randint(0, len(WM.llnouns) - 1)
     self.hasSpecial = False
     if self.isSpecial():
         self.hasSpecial = True
         self.verb = random.randint(0, len(WM.llverbs) - 1)
         self.name = WM.lladjectives[self.adjective] + " " + WM.llmaterial[
             self.material] + " " + WM.llnouns[
                 self.noun] + " " + WM.llverbs[self.verb]
     else:
         self.name = WM.lladjectives[self.adjective] + " " + WM.llmaterial[
             self.material] + " " + WM.llnouns[self.noun]
     self.font = pygame.font.SysFont("monospace", 12)
     self.text = self.font.render(self.name, 1, (0, 0, 0))
     self.getAdjectiveTraits()
     self.getMaterialTraits()
     self.getNounTraits()
Exemple #7
0
    def __init__(self, xmlElement=None):

        self.cacheManager = annchienta.getCacheManager()
        self.elemental = {}

        if xmlElement:

            # Set our name and category
            self.name = str(xmlElement.getAttribute("name"))
            self.category = str(xmlElement.getAttribute("category"))
            self.target = int(xmlElement.getAttribute("target"))

            # Get the description
            descriptionElement = xmlElement.getElementsByTagName(
                "description")[0]
            self.description = str(descriptionElement.firstChild.data)

            # Set cost
            costElement = xmlElement.getElementsByTagName("cost")[0]
            self.cost = int(costElement.getAttribute("mp"))

            # Create a dictionary describing the elemental properties
            found = xmlElement.getElementsByTagName("elemental")
            if len(found):
                elementalElement = found[0]
                for k in elementalElement.attributes.keys():
                    self.elemental[k] = int(
                        elementalElement.attributes[k].value)

            # Set factor, hit and type
            found = xmlElement.getElementsByTagName("power")
            if len(found):
                powerElement = found[0]
                self.factor = float(powerElement.getAttribute("factor"))
                self.hit = float(powerElement.getAttribute("hit"))
                self.type = str(powerElement.getAttribute("type"))

            # Set statusEffect and statusHit
            found = xmlElement.getElementsByTagName("status")
            if len(found):
                statusElement = found[0]
                self.statusEffect = str(statusElement.getAttribute("effect"))
                self.statusHit = float(statusElement.getAttribute("hit"))

            # Set animation and animationData
            found = xmlElement.getElementsByTagName("animation")
            if len(found):

                animationElement = found[0]

                sprite, sound = None, None

                if animationElement.hasAttribute("sprite"):
                    sprite = self.cacheManager.getSurface(
                        str(animationElement.getAttribute("sprite")))

                if animationElement.hasAttribute("sound"):
                    sound = self.cacheManager.getSound(
                        str(animationElement.getAttribute("sound")))

                type = str(animationElement.getAttribute("type"))

                if type == "attack":
                    self.animation = AttackAnimation.AttackAnimation(
                        sprite, sound)
                elif type == "sprite":
                    self.animation = SpriteAnimation.SpriteAnimation(
                        sprite, sound)
                else:
                    self.animation = None
Exemple #8
0
    def __init__(self):
        # Image
        self.Image_SceneBK_Logo = load_image(
            'Resource\\Graphics\\Background\\Logo.png')
        self.Image_SceneBK_Title_Start = load_image(
            'Resource\\Graphics\\Background\\Title_Start.png')
        self.Image_SceneBK_Title_Exit = load_image(
            'Resource\\Graphics\\Background\\Title_Exit.png')
        self.Image_SceneBK_Play = load_image(
            'Resource\\Graphics\\Background\\Play.png')
        self.Image_SceneBK_Gameover = load_image(
            'Resource\\Graphics\\Background\\Gameover.png')
        self.Image_SceneBK_Ranking = load_image(
            'Resource\\Graphics\\Background\\Ranking.png')

        self.Image_UI_Box = load_image(
            'Resource\\Graphics\\Background\\UI_BOX.png')

        self.Image_Meteor_Small = load_image(
            'Resource\\Graphics\\Object\\Stone_Small.png')
        self.Image_Meteor_Big = load_image(
            'Resource\\Graphics\\Object\\Stone_Big.png')
        self.Image_Meteor_Huge = load_image(
            'Resource\\Graphics\\Object\\Stone_Huge.png')
        self.Image_Meteor_Boss_List = \
            [
                load_image('Resource\\Graphics\\Object\\Boss_Mercury1.png'),
                load_image('Resource\\Graphics\\Object\\Boss_Venus2.png'),
                load_image('Resource\\Graphics\\Object\\Boss_Mars3.png'),
                load_image('Resource\\Graphics\\Object\\Boss_Jupiter4.png'),
                load_image('Resource\\Graphics\\Object\\Boss_Saturn5.png'),
                load_image('Resource\\Graphics\\Object\\Boss_Uranus6.png'),
                load_image('Resource\\Graphics\\Object\\Boss_Neptune7.png'),
            ]

        # Sprite Image
        self.SpriteImage_MeteorEffect_Small = SpriteImage(
            'Resource\\Graphics\\Sprite\\Effect\\Effect_Small.png',
            'Small_Effect', 4)
        self.SpriteImage_MeteorEffect_Big = SpriteImage(
            'Resource\\Graphics\\Sprite\\Effect\\Effect_Big.png', 'Big_Effect',
            4)
        self.SpriteImage_MeteorEffect_Huge = SpriteImage(
            'Resource\\Graphics\\Sprite\\Effect\\Effect_Huge.png',
            'Huge_Effect', 4)
        self.SpriteImage_MeteorEffect_Boss = SpriteImage(
            'Resource\\Graphics\\Sprite\\Effect\\Effect_Boss.png',
            'Boss_Effect', 4)

        self.SpriteImage_PlayerEffect_Attack = SpriteImage(
            'Resource\\Graphics\\Sprite\\Effect\\Effect_Attack.png',
            'Attack_Effect', 6)
        self.SpriteImage_PlayerEffect_PowerUp = SpriteImage(
            'Resource\\Graphics\\Sprite\\Effect\\Effect_PowerUp.png',
            'Effect_PowerUp', 6)
        self.SpriteImage_PlayerEffect_PowerUp2 = SpriteImage(
            'Resource\\Graphics\\Sprite\\Effect\\Effect_PowerUp2.png',
            'Effect_PowerUp2', 10)
        self.SpriteImage_PlayerEffect_Kamehameha = SpriteImage(
            'Resource\\Graphics\\Sprite\\Effect\\Kamehameha.png', 'Kamehameha',
            3)

        # Sprite Animation
        # Player
        # Set Animation SpriteImage
        self.Animation_Player = SpriteAnimation()
        self.Animation_Player.set_sprite(
            'Resource\\Graphics\\Sprite\\Player\\Idle_Normal.png',
            'Idle_Normal', 6)
        self.Animation_Player.set_sprite(
            'Resource\\Graphics\\Sprite\\Player\\MoveFront.png', 'MoveFront',
            2)
        self.Animation_Player.set_sprite(
            'Resource\\Graphics\\Sprite\\Player\\MoveBack.png', 'MoveBack', 2)
        self.Animation_Player.set_sprite(
            'Resource\\Graphics\\Sprite\\Player\\Attack_Punch.png',
            'Attack_Punch', 4)
        self.Animation_Player.set_sprite(
            'Resource\\Graphics\\Sprite\\Player\\Attack_Punch_2.png',
            'Attack_Punch_2', 6)
        self.Animation_Player.set_sprite(
            'Resource\\Graphics\\Sprite\\Player\\Attack_Kick.png',
            'Attack_Kick', 6)
        self.Animation_Player.set_sprite(
            'Resource\\Graphics\\Sprite\\Player\\PowerUP.png', 'PowerUp', 6)
        # Set Animation State
        self.Animation_Player.set_state('Idle_Normal', 6, 0, 6, 6, 6)
        self.Animation_Player.set_state('MoveFront', 2, 0, 1, 2, 2)
        self.Animation_Player.set_state('MoveBack', 2, 0, 1, 2, 2)
        self.Animation_Player.set_state('Attack_Punch', 4, 0, 1, 2, 4)
        self.Animation_Player.set_state('Attack_Punch_2', 6, 0, 2, 3, 6)
        self.Animation_Player.set_state('Attack_Kick', 6, 0, 1, 2, 6)
        self.Animation_Player.set_state('PowerUp', 6, 0, 0, 0, 6)
        # Set Animation Delay
        self.Animation_Player.set_state_delay('Idle_Normal', 6, 1, 1)
        self.Animation_Player.set_state_delay('MoveFront', 5, 100, 1)
        self.Animation_Player.set_state_delay('MoveBack', 5, 100, 1)
        self.Animation_Player.set_state_delay('Attack_Punch', 3, 3, 3)
        self.Animation_Player.set_state_delay('Attack_Punch_2', 3, 3, 2)
        self.Animation_Player.set_state_delay('Attack_Kick', 3, 3, 2)
        self.Animation_Player.set_state_delay('PowerUp', 1, 1, 6)

        # Player Power Up
        # Set Animation SpriteImage
        self.Animation_Player_PowerUp = SpriteAnimation()
        self.Animation_Player_PowerUp.set_sprite(
            'Resource\\Graphics\\Sprite\\Player\\Idle_PowerUp.png',
            'Idle_Normal', 6)
        self.Animation_Player_PowerUp.set_sprite(
            'Resource\\Graphics\\Sprite\\Player\\MoveFront_PowerUp.png',
            'MoveFront', 2)
        self.Animation_Player_PowerUp.set_sprite(
            'Resource\\Graphics\\Sprite\\Player\\MoveBack_PowerUp.png',
            'MoveBack', 2)
        self.Animation_Player_PowerUp.set_sprite(
            'Resource\\Graphics\\Sprite\\Player\\Attack_Punch_PowerUp.png',
            'Attack_Punch', 4)
        self.Animation_Player_PowerUp.set_sprite(
            'Resource\\Graphics\\Sprite\\Player\\Attack_Punch_PowerUp_2.png',
            'Attack_Punch_2', 6)
        self.Animation_Player_PowerUp.set_sprite(
            'Resource\\Graphics\\Sprite\\Player\\Attack_Kick_PowerUp.png',
            'Attack_Kick', 6)
        self.Animation_Player_PowerUp.set_sprite(
            'Resource\\Graphics\\Sprite\\Player\\PowerDown.png', 'PowerDown',
            5)
        # Set Animation State
        self.Animation_Player_PowerUp.set_state('Idle_Normal', 6, 0, 6, 6, 6)
        self.Animation_Player_PowerUp.set_state('MoveFront', 2, 0, 1, 2, 2)
        self.Animation_Player_PowerUp.set_state('MoveBack', 2, 0, 1, 2, 2)
        self.Animation_Player_PowerUp.set_state('Attack_Punch', 4, 0, 1, 2, 4)
        self.Animation_Player_PowerUp.set_state('Attack_Punch_2', 6, 0, 2, 3,
                                                6)
        self.Animation_Player_PowerUp.set_state('Attack_Kick', 6, 0, 1, 2, 6)
        self.Animation_Player_PowerUp.set_state('PowerDown', 5, 0, 0, 0, 5)
        # Set Animation Delay
        self.Animation_Player_PowerUp.set_state_delay('Idle_Normal', 6, 1, 1)
        self.Animation_Player_PowerUp.set_state_delay('MoveFront', 5, 100, 1)
        self.Animation_Player_PowerUp.set_state_delay('MoveBack', 5, 100, 1)
        self.Animation_Player_PowerUp.set_state_delay('Attack_Punch', 3, 3, 3)
        self.Animation_Player_PowerUp.set_state_delay('Attack_Punch_2', 3, 3,
                                                      2)
        self.Animation_Player_PowerUp.set_state_delay('Attack_Kick', 3, 3, 2)
        self.Animation_Player_PowerUp.set_state_delay('PowerDown', 1, 1, 6)
Exemple #9
0
 def __init__(self,
              playerObj,
              locationx,
              locationy,
              adjective=random.randint(0,
                                       len(nameGenerator.adjectives) - 1),
              noun=random.randint(0,
                                  len(nameGenerator.nouns) - 1),
              verb=random.randint(0,
                                  len(nameGenerator.verbs) - 1)):
     VariableEnemy.enemyList.append(self)
     VariableEnemy.numberOfEnemies += 1
     self.adjective = adjective
     self.noun = noun
     self.verb = verb
     self.name = nameGenerator.adjectives[self.
                                          adjective] + " " + nameGenerator.verbs[self.
                                                                                 verb] + " " + nameGenerator.nouns[self.
                                                                                                                   noun]
     self.x = locationx
     self.y = locationy
     self.collisionx = self.x
     self.collisiony = self.y
     self.size = SIZE
     self.rect = pygame.Rect(self.x, self.y, self.size, self.size)
     self.range = RANGE
     self.speed = SPEED
     self.health = HEALTH
     self.damage = DAMAGE
     self.rangeDamage = 1
     self.attack = ATTACK
     self.color = COLOR
     self.drawDifferent = False
     self.isDead = False
     self.chase = True
     self.shouldFlank = False
     self.knocksBack = True
     self.dot = False
     self.dotCount = 3
     self.weaponx = 0
     self.weapony = 0
     self.dropRate = DROPRATE  #number out of 100 for how often cool stuff drops
     self.coin = Coin.Coin()
     self.font = pygame.font.SysFont("monospace", 12)
     self.text = self.font.render(self.name, 1, (0, 0, 0))
     self.spriteList = [self.outline_sprite]
     self.spriteObj = SpriteAnimation.SpriteAnimation(
         [self.outline_sprite, self.outline_sprite], 10)
     self.verbAnimSpriteObj = None
     self.playerObj = playerObj
     self.items = []
     self.inventory = 0
     #Functions To update self before spawning
     self.getAdjectiveTraits()
     self.getNounTraits()
     self.getVerbTraits()
     self.currentWeapon = Weapon.MeleeWeapon()
     self.rangedWeapon = RangedWeapon.RangedWeapon(self)
     self.arrows = 3
     self.reload = 1
     self.updateStatsToCurrentWeapon()
     self.updateInventory()