Пример #1
0
    def __init__(self):
        # initialize game window, etc
        pg.init()
        pg.mixer.init()
        # dimension of window
        self.winWidth = 500
        self.winLength = 281
        # window set-up
        self.screen = pg.display.set_mode(size=(self.winWidth, self.winLength))
        pg.display.set_caption("Shinobi Warrior")
        self.keys = pg.key.get_pressed()
        self.clock = pg.time.Clock()
        self.background_no = 1
        self.last_update = 0
        self.playing = False
        self.running = True
        self.score = 0
        self.font2 = pg.font.Font('../fonts/Bank_Gothic_Medium_BT.ttf', 15)
        self.font = pg.font.Font('../fonts/Bank_Gothic_Medium_BT.ttf', 20)
        self.red = Enemy(420, 188)
        self.health_bar = pg.sprite.Group()
        self.enemies = pg.sprite.Group()
        self.kunais = pg.sprite.Group()

        self.red = Enemy(420, 188)

        self.health_bar.add(Health(30, 10))
        self.health_bar.add(Health(60, 10))
        self.health_bar.add(Health(90, 10))
        self.enemies.add(self.red)

        self.kunais.add(Kunai())
Пример #2
0
 def __init__(self):
     health = 20
     Health.__init__(self, health, "health")
     self.countDamage = 0
     posX = 0
     posY = 0
     self.setPosition(posX, posY)
     self.animate()
Пример #3
0
 def draw(self):
     if self.is_death:
         self.image.draw(self.x,self.y, 150, 60)
     else:
         self.body_image.clip_draw(105 * int(self.body_frame), self.body_bottom, 60, 60, self.body_x, self.body_y)
         self.image.clip_draw(int(self.frame) * 80 + self.left, 0, 80, 80, self.x, self.y)
     for Health in self.heartArray:
         Health.draw()
Пример #4
0
 def __init__(self):
     self.x, self.y = BackGround_Width//2, BackGround_Height//2
     self.frame = 0
     self.image = load_image('resource/isaac_head.png')
     self.velocity_x = 0
     self.velocity_y = 0
     self.velocity = RUN_SPEED_PPS
     self.left = 0
     self.body_x, self.body_y = self.x-5, self.y-50
     self.body_frame = 0
     self.body_image = load_image('resource/isaac_body.png')
     self.body_is_move = False
     self.body_bottom = 90
     self.start_health = 3
     self.now_health = 3
     self.health_index = self.start_health-1
     self.heartArray = [Health(60*(i+1)) for i in range(self.start_health)]
     self.is_death = False
     self.hurt_sound1 = load_wav('sound/hurt1.wav')
     self.hurt_sound1.set_volume(32)
     self.hurt_sound2 = load_wav('sound/hurt2.wav')
     self.hurt_sound2.set_volume(32)
     self.hurt_sound3 = load_wav('sound/hurt3.wav')
     self.hurt_sound3.set_volume(32)
     self.health_item_sound = load_wav('sound/heartIntake.wav')
     self.health_item_sound.set_volume(32)
     self.upgradeBullet_item_sound = load_wav('sound/bulletUpgrade.wav')
     self.upgradeBullet_item_sound.set_volume(32)
Пример #5
0
    def __init__(self):

        self.name = "ERROR"
        self.clearance = Clearances.Infrared
        self.sector = "ERROR"
        self.clone = 1
        self.player = "ERROR"
        self.skills = Skills()
        self.health = Health()
Пример #6
0
 def __init__(self, displaywidth, displayheight):
     self.white = (255, 255, 255)
     self.black = (0, 0, 0)
     self.red = (255, 0, 0)
     self.green = (0, 255, 0)
     self.blue = (0, 0, 255)
     self.width = displaywidth
     self.height = displayheight
     self.path_height = int(self.height / 15)
     self.screen = pygame.display.set_mode((self.width, self.height))
     bgimage = pygame.image.load("media/images/grassy_area.jpg").convert()
     self.backgroundImage = pygame.transform.scale(
         bgimage, (self.width, self.height))
     lostImage = pygame.image.load("media/images/wasted.png")
     self.lost_image = pygame.transform.scale(lostImage,
                                              (self.width, self.height))
     self.player = Player(self.screen, self.path_height)
     self.level = Level(self.screen, self.player, self.path_height)
     self.health = Health(self.screen)
     self.score = Score(self.screen)
     self.w_sound = pygame.mixer.Sound("media/sounds/YouWon.wav")
     self.l_sound = pygame.mixer.Sound("media/sounds/chickens.wav")
     pygame.display.set_caption("Frogger")
Пример #7
0
def generate_entity(id: int, team: 'Team' = None) -> Entity:
    """
    Generate entity
    :param team:
    :param id:
    :return: new entity
    """
    default_ai = ai.Ai()
    name = names.get_full_name()

    fast_attack = Action(f'fast hit', 'enemy', 1, 2, get_melee_cooldown(1))
    normal_attack = Action(f'normal attack', 'enemy', 1, 5,
                           get_melee_cooldown(2))
    heavy_attack = Action(f'heavy strike', 'enemy', 1, 7,
                          get_melee_cooldown(3))
    pistol_shot = Action('pistol shot', 'enemy', 1, 20,
                         get_perk_cooldown(10))  # pistol
    simple_heal = Action('hp potion', 'ally', 0, -10,
                         get_perk_cooldown(5))  # drink potion

    entity = Entity(
        id,
        (0, 0),
        f'{name}',
        Health(25),
        default_ai,
        dict(),
        {
            fast_attack,
            normal_attack,
            heavy_attack,
            pistol_shot,
            simple_heal,
        },
        team=team,
    )
    return entity
Пример #8
0
class FroggerGame():
    def __init__(self, displaywidth, displayheight):
        self.white = (255, 255, 255)
        self.black = (0, 0, 0)
        self.red = (255, 0, 0)
        self.green = (0, 255, 0)
        self.blue = (0, 0, 255)
        self.width = displaywidth
        self.height = displayheight
        self.path_height = int(self.height / 15)
        self.screen = pygame.display.set_mode((self.width, self.height))
        bgimage = pygame.image.load("media/images/grassy_area.jpg").convert()
        self.backgroundImage = pygame.transform.scale(
            bgimage, (self.width, self.height))
        lostImage = pygame.image.load("media/images/wasted.png")
        self.lost_image = pygame.transform.scale(lostImage,
                                                 (self.width, self.height))
        self.player = Player(self.screen, self.path_height)
        self.level = Level(self.screen, self.player, self.path_height)
        self.health = Health(self.screen)
        self.score = Score(self.screen)
        self.w_sound = pygame.mixer.Sound("media/sounds/YouWon.wav")
        self.l_sound = pygame.mixer.Sound("media/sounds/chickens.wav")
        pygame.display.set_caption("Frogger")

    def event(self):
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                quit()
            self.player.movement(event)

    def clean_events(self):
        for event in pygame.event.get():
            pass

    def completed_level(self, Player):
        if Player.y <= 0:
            return True
        return False

    def show(self):
        self.screen.blit(self.backgroundImage, (0, 0))
        self.level.show()
        self.player.show()
        self.health.show()
        self.score.show()
        pygame.display.update()

    def creat_text(self, text, color=(255, 0, 0), locationX=0, locationY=0):
        text = Text(self.screen, text, 80, color, locationX, locationY)
        text.show()
        pygame.display.update()
        return (text)

    def reset_game(self):
        self.screen.blit(self.lost_image, (0, 0))
        self.instruction = self.creat_text("(press space to play again)",
                                           (255, 0, 0), 0, self.height - 80)
        wait = True
        while wait:
            for event in pygame.event.get():
                if event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE:
                    self.health.reset_health()
                    self.score.reset_score()
                    self.player.reset()
                    self.level = Level(self.screen, self.player,
                                       self.path_height)
                    self.player.image = self.player.u_image
                    wait = False

    def run(self):
        while True:
            self.event()
            self.show()
            self.level.traffic(self.player)
            if self.level.failed(self.player):
                pygame.mixer.Sound.play(self.l_sound)
                if not self.health.loose_health():
                    self.reset_game()
                else:
                    time.sleep(1)
                    self.player.reset()
                    self.level = Level(self.screen, self.player,
                                       self.path_height)
                    self.clean_events()
                    self.player.image = self.player.u_image
                pygame.mixer.Sound.stop(self.l_sound)
            if self.player.player_won():
                self.score.add_score()
                self.creat_text("Level completed!", (0, 255, 0))
                pygame.mixer.Sound.play(self.w_sound)
                time.sleep(1)
                self.player.reset()
                self.level = Level(self.screen, self.player, self.path_height)
                self.player.image = self.player.u_image
Пример #9
0
    def drawGame(self, screen):
        screen.fill(self.bgColor)
        w, h, m = self.width, self.height, self.margin

        scoreFont = pygame.font.Font("DINPro.otf", 40)
        scoreText = scoreFont.render('%d' % (self.score), True, WHITE)
        scoreRect = scoreText.get_rect()
        scoreRect.centerx, scoreRect.centery = w // 2, h // 2

        titleFont = pygame.font.Font("DINPro.otf", 20)
        textTitle = titleFont.render("planet parasite", True, WHITE)
        textTitlerect = textTitle.get_rect()
        textTitlerect.centerx, textTitlerect.centery = w // 2, (m // 2)

        #add inhabited planets
        if self.frameCount % 60 == 0:
            inhabitedNew = Inhabited(0, 0)
            self.inhabitedGroup.add(inhabitedNew)
            # print ('new uninhabited')

        #add a planet every so often
        if self.frameCount % 60 == 0:
            planet = Planet(2, WHITE)
            self.planetGroup.add(planet)
            # print ('new planet')

        #add eat me powerups at random time
        if self.frameCount % random.randrange(500, 600) == 0:
            eatMeColors = [YELLOW, BLUE, GREEN]
            eatMe = Planet(0, random.choice(eatMeColors))
            if eatMe.color == YELLOW:  #if invincibility planet
                self.eatMeInvGroup.add(eatMe)
            elif eatMe.color == BLUE:  #if stop
                self.eatMeStopGroup.add(eatMe)
            elif eatMe.color == GREEN:  #if ten len
                self.eatMeTenGroup.add(eatMe)

        #add a life at random times, less frequent
        if self.frameCount % random.randrange(1000, 1500) == 0:
            eatMe = Health()
            self.eatMeLifeGroup.add(eatMe)

        #collision detections:
        for parasite in self.parasite:
            if self.attack:
                collisionAttackList = pygame.sprite.spritecollide(
                    parasite, self.inhabitedGroup, False,
                    pygame.sprite.collide_circle)
                for attacked in collisionAttackList:
                    self.inhabitedGroup.remove(attacked)

            elif not self.attack:  # if attack mode off and invincibility not enabled
                #if collision with a planet
                collisionPlanetsList = pygame.sprite.spritecollide(
                    parasite, self.planetGroup, False,
                    pygame.sprite.collide_circle)
                for capturedPlanet in collisionPlanetsList:
                    self.planetGroup.remove(capturedPlanet)
                    self.score += 10
                #if collision with heart
                collisionEatMeLifeList = pygame.sprite.spritecollide(
                    parasite, self.eatMeLifeGroup, False,
                    pygame.sprite.collide_circle)
                for eatMeLife in collisionEatMeLifeList:
                    self.eatMeLifeGroup.remove(eatMeLife)
                    self.lives += 1
                    self.lives = min(self.lives, 5)
                #if collision with eat me stop
                collisionEatMeStopList = pygame.sprite.spritecollide(
                    parasite, self.eatMeStopGroup, False,
                    pygame.sprite.collide_circle)
                for eatMeStop in collisionEatMeStopList:
                    self.eatMeStopGroup.remove(eatMeStop)
                    self.eatMeStop = "collected"
                #if collision with eat me invincible
                collisionEatMeInvList = pygame.sprite.spritecollide(
                    parasite, self.eatMeInvGroup, False,
                    pygame.sprite.collide_circle)
                for eatMeInv in collisionEatMeInvList:
                    self.eatMeInvGroup.remove(eatMeInv)
                    self.eatMeInv = "collected"
                #if collision with ten len invincible
                collisionEatMeInvList = pygame.sprite.spritecollide(
                    parasite, self.eatMeTenGroup, False,
                    pygame.sprite.collide_circle)
                for eatMeTen in collisionEatMeInvList:
                    self.eatMeTenGroup.remove(eatMeTen)
                    self.eatMeTen = "collected"
                #if invincibility is not on, inhabited can harm parasite
                if not self.eatMeInv == "enabled":
                    collisionInhabitedList = pygame.sprite.spritecollide(
                        parasite, self.formedInhabitedGroup, False,
                        pygame.sprite.collide_circle)
                    for hitInhabited in collisionInhabitedList:
                        hitInhabited.stopUpdating(
                            PINK
                        )  #turn the hit inhabited planet pink for right now
                        self.formedInhabitedGroup.remove(
                            hitInhabited)  #remove inhabited
                        self.lives -= 1

        # change length of tentacles based on lives
        if not self.eatMeTen == "enabled":
            if self.lives == 4:
                self.tentaclesMin = 25
                self.tentaclesMax = 35
                self.divisions = 100
            if self.lives == 3:
                self.tentaclesMin = 15
                self.tentaclesMax = 25
                self.divisions = 90
            if self.lives == 2:
                self.tentaclesMin = 5
                self.tentaclesMax = 15
                self.divisions = 80
            if self.lives == 1:
                self.tentaclesMin = 3
                self.tentaclesMax = 6
                self.divisions = 70
            if self.lives == 0:
                self.gamePlay = False
                self.tentaclesMin = 35
                self.tentaclesMax = 45
                self.highScore = self.score

        #reduce radius by a few pixels to get make appearance better
        self.parasite.update(self.tentaclesMax - 7)

        #DRAW STATEMENTS
        self.inhabitedGroup.draw(
            screen)  #keep this at bottom of all draw statements
        for star in self.starList:
            pygame.draw.circle(screen, DARKGREY, (star[0], star[1]), 2)
        self.planetGroup.draw(screen)
        self.formedInhabitedGroup.draw(screen)
        self.parasite.draw(screen)
        self.eatMeInvGroup.draw(screen)
        self.eatMeStopGroup.draw(screen)
        self.eatMeTenGroup.draw(screen)
        self.eatMeLifeGroup.draw(screen)

        #draw tentacles
        for div in range(self.divisions):
            divAngle = div * ((math.pi * 2) / self.divisions)
            self.length = random.randrange(self.tentaclesMin,
                                           self.tentaclesMax)
            outerDivX = w // 2 + (
                (self.parasiteSize + self.length) * math.cos(divAngle))
            outerDivY = h // 2 + (
                (self.parasiteSize + self.length) * math.sin(divAngle))
            innerDivX = w // 2 + ((self.parasiteSize + 6) * math.cos(divAngle))
            innerDivY = h // 2 + ((self.parasiteSize + 6) * math.sin(divAngle))
            pygame.draw.line(screen, self.tentacleColor,
                             (innerDivX, innerDivY), (outerDivX, outerDivY), 1)

        #draw lives
        hX = self.width // 20
        for i in range(self.lives):
            hY = (self.height // 25) * (8 + i)
            screen.blit(self.heartFilled, (hX - 12, hY))
        for i in range(5):
            hY = (self.height // 25) * (8 + i)
            screen.blit(self.heartEmpty, (hX - 12, hY))

        # eatMeStop discontinue growth of developing planets (BLUE 1)
        eSX = self.width // 20
        eSY = (self.height // 28) * 19
        if self.eatMeStop == "collected":
            pygame.draw.rect(screen, BLUE, (eSX - 20, eSY, 40, 40))
            if self.frameCount % 5 == 0:  #inhabited planets get larger and larger as time goes on
                for inhabited in self.inhabitedGroup:
                    #if inhabited planet gets larger than a certain size
                    if (inhabited.inhabitedSize >=
                            .15 * min(inhabited.imageX, inhabited.imageY)):
                        inhabited.stopUpdating(WHITE)
                        inhabited.dotted()
                        self.formedInhabitedGroup.add(inhabited)
                        self.inhabitedGroup.remove(inhabited)
                    else:
                        inhabited.update()
        if self.eatMeStop == "enabled":
            self.eatMeStopCount += 1
            pygame.draw.rect(screen, RED, (eSX - 20, eSY, 40, 40))
            if self.eatMeStopCount >= 100:  #timer ends for eatme powerup
                self.eatMeStop = "empty"
                self.eatMeStopCount = 0
        if self.eatMeStop == "empty":
            pygame.draw.rect(screen, CHARCOAL, (eSX - 20, eSY, 40, 40))
            if self.frameCount % 5 == 0:  #inhabited planets get larger and larger as time goes on
                for inhabited in self.inhabitedGroup:
                    #if inhabited planet gets larger than a certain size
                    if (inhabited.inhabitedSize >=
                            .15 * min(inhabited.imageX, inhabited.imageY)):
                        inhabited.stopUpdating(WHITE)
                        inhabited.dotted()
                        self.formedInhabitedGroup.add(inhabited)
                        self.inhabitedGroup.remove(inhabited)
                    else:
                        inhabited.update()
        if self.eatMeCurr == 1:
            pygame.draw.rect(screen, WHITE, (eSX - 20, eSY, 40, 40),
                             self.eatMeCurrLine)
        elif not self.eatMeCurr == 1:
            pygame.draw.rect(screen, WHITE, (eSX - 20, eSY, 40, 40), 1)
        pygame.draw.circle(screen, GREY, (eSX, eSY + 20), 10, 1)
        pygame.draw.line(screen, GREY, (eSX - 7, eSY - 7 + 20),
                         (eSX + 7, eSY + 7 + 20), 1)

        # eatMeInv invincibility (YELLOW 2)
        eIX = self.width // 20
        eIY = (self.height // 28) * 17
        if self.eatMeInv == "collected":
            pygame.draw.rect(screen, YELLOW, (eIX - 20, eIY, 40, 40))
        if self.eatMeInv == "enabled":
            self.eatMeStopCount += 1
            pygame.draw.rect(screen, RED, (eIX - 20, eIY, 40, 40))
            if self.eatMeStopCount >= 100:  #timer ends for eatme powerup
                self.eatMeInv = "empty"
                self.eatMeStopCount = 0
        if (self.eatMeInv == "empty"):
            pygame.draw.rect(screen, CHARCOAL, (eIX - 20, eIY, 40, 40))
        if self.eatMeCurr == 2:
            pygame.draw.rect(screen, WHITE, (eIX - 20, eIY, 40, 40),
                             self.eatMeCurrLine)  #border box
        elif not self.eatMeCurr == 2:
            pygame.draw.rect(screen, WHITE, (eIX - 20, eIY, 40, 40),
                             1)  #border box
        screen.blit(self.shield, (eIX - 9, eIY + 10))

        # eatMeTen increase tentacle lengths regardless of lives (GREEN 3)
        eTX = self.width // 20
        eTY = (self.height // 28) * 15
        if self.eatMeTen == "collected":
            pygame.draw.rect(screen, GREEN, (eTX - 20, eTY, 40, 40))
        if self.eatMeTen == "enabled":
            self.eatMeTenCount += 1
            self.tentaclesMin = 45
            self.tentaclesMax = 60
            pygame.draw.rect(screen, RED, (eTX - 20, eTY, 40, 40))
            if self.eatMeTenCount >= 300:  #timer ends for eatme powerup
                self.eatMeTen = "empty"
                self.eatMeTenCount = 0
        if (self.eatMeTen == "empty"):
            pygame.draw.rect(screen, CHARCOAL, (eTX - 20, eTY, 40, 40))
        if self.eatMeCurr == 3:
            pygame.draw.rect(screen, WHITE, (eTX - 20, eTY, 40, 40),
                             self.eatMeCurrLine)  #border box
        elif not self.eatMeCurr == 3:
            pygame.draw.rect(screen, WHITE, (eTX - 20, eTY, 40, 40),
                             1)  #border box
        pygame.draw.line(screen, GREY, (eTX, eTY + 15), (eTX, eTY + 25),
                         1)  #plus sign vertical
        pygame.draw.line(screen, GREY, (eTX - 5, eTY + 20),
                         (eTX + 5, eTY + 20), 1)  #plus sign horizontal
        screen.blit(self.tentImage, (eTX - 17, eTY + 5))

        # attack Mode
        if self.attack:
            self.tentacleColor = RED
            self.attackMeter -= 3  #reduce attack meter faster
            if self.attackMeter <= 0:
                self.attackMeter = 0  #keep attack meter at minimum of 0
        if not self.attack:
            self.tentacleColor = WHITE
            if self.frameCount % 30 == 0:  #regain attack meter slowly
                self.attackMeter += 1
                self.attackMeter = min(self.attackMeter,
                                       100)  #keep attackmeter at max of 100
        aX = self.width // 20
        aY0 = (self.height // 14) * 13
        aY1 = aY0 - (1.5 * self.attackMeter)
        pygame.draw.rect(screen, WHITE, (aX - 5, aY0 - 150, 12, 150),
                         1)  # border for bar
        if self.attackMeter > 0:
            pygame.draw.line(screen, self.tentacleColor, (aX, aY0), (aX, aY1),
                             12)
        elif self.attackMeter <= 0:
            pygame.draw.line(screen, self.tentacleColor, (aX, aY0), (aX, aY0),
                             12)
        attackFont = pygame.font.Font("DINPro.otf", 16)
        attackText = attackFont.render('%d' % (max(self.attackMeter, 0)), True,
                                       WHITE)
        attackRect = attackText.get_rect()
        attackRect.centerx = aX
        attackRect.centery = aY0 + 15

        #draw text
        screen.blit(scoreText, scoreRect)
        screen.blit(textTitle, textTitlerect)
        screen.blit(attackText, attackRect)
Пример #10
0
    def __init__(self):
        self.attr = Attributes()

        self.health = Health()
        self.transient = Transient()
Пример #11
0
 def __init__(self, health):
     Health.__init__(self, health, "zombie_health")
     self.animate()
Пример #12
0
 def __init__(self):
     self.__health = Health(100)