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)
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)
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
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()
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()
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
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)
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()