Esempio n. 1
0
    def create_window_layout(self):
        action_group = Gtk.ActionGroup("my_actions")

        self.add_file_menu_actions(action_group)
        uimanager = self.create_ui_manager()
        uimanager.insert_action_group(action_group)
        menubar = uimanager.get_widget("/MenuBar")
        window_box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
        window_box.pack_start(menubar, False, False, 0)

        self.stage_grid = Gtk.Grid()
        self.sidebar = Sb.SideBar(self.on_changed)
        self.create_animation_frame()
        window_box.add(self.stage_grid)

        menu_frame = Gtk.Frame(label="Settings")
        menu_frame.set_border_width(5)

        menu_frame.add(self.sidebar)
        self.stage_grid.attach_next_to(menu_frame, self.animation_frame,
                                       Gtk.PositionType.RIGHT, 1, 1)

        self.add(window_box)
Esempio n. 2
0
 def __init__(self):
     super(Game,self).__init__()
     pygame.init()
     self.font = pygame.font.Font(None, 36)
     self.cont=True
     self.screen=pygame.display.set_mode(SCREEN)
     self.screen_rect=self.screen.get_rect()
     self.clock=pygame.time.Clock()
     self.scrollspeed=2
     self.scrollind=0
     self.hscrollspeed=18
     self.hscrollind=0
     self.diff=0
     self.lastspawned=0
     self.obstaclealarm=60
     
     
     #Miniboss Timer
     self.minitimer=600
     self.minidefeated=False
     self.minispawned=False
     self.finaltimer=self.minitimer*2
     self.finalspawned=False
     
     
     self.bar=SideBar(self,self.font)
     self.player=Player(300,200,self)
     self.playerbullets=pygame.sprite.Group()
     self.enemies=pygame.sprite.Group()
     self.obstacles=pygame.sprite.Group()
     self.bossparts=pygame.sprite.Group()
     self.bossbody=pygame.sprite.Group()
     self.particles=pygame.sprite.Group()
     self.powerups=pygame.sprite.Group()
     self.explosions=pygame.sprite.Group()
     
     #Controls are defined here.
     self.keysdict={pygame.K_UP:"up",pygame.K_DOWN:"down",pygame.K_LEFT:"left",pygame.K_RIGHT:"right",pygame.K_z:"action1",pygame.K_x:"action2",pygame.K_c:"action3",pygame.K_SPACE:"action4",pygame.K_a:"action5"}
     
     #Sprites
     self.spr_playerwalk = pygame.image.load('images/Zensiro_spritesheet.png').convert_alpha()
     self.spr_spikes = pygame.image.load('images/small spike.png').convert_alpha()
     self.spr_turret1=pygame.image.load('images/turret1.png').convert_alpha()
     self.spr_turret2=pygame.image.load('images/turret2.png').convert_alpha()
     self.spr_Oni1=pygame.image.load('images/oni1_animation.png').convert_alpha()
     self.spr_Oni2=pygame.image.load('images/Oni2.png').convert_alpha()
     self.spr_Miniboss=pygame.image.load('images/tengu_head.png').convert_alpha()
     self.spr_MinibossBody=pygame.image.load('images/Tengu_body_animation.png').convert_alpha()
     self.spr_Samurai=pygame.image.load('images/Samurai_jets3.png').convert_alpha()
     self.spr_Fireball=pygame.image.load('images/Fireball_bullet.png').convert_alpha()
     self.spr_Missile=pygame.image.load('images/Missle_bullet.png').convert_alpha()
     self.spr_FireWave=pygame.image.load('images/TempFireWave.png').convert_alpha()
     self.spr_FirePillar=pygame.image.load('images/TempFirePillar.png').convert_alpha()
     self.spr_PlayerBullet=pygame.image.load('images/Player_bullet.png').convert_alpha()
     self.spr_EnemySword=pygame.image.load('images/Enemy_sword.png').convert_alpha()
     self.spr_EnemyBullet=pygame.image.load('images/Enemy_bullet.png').convert_alpha()
     self.spr_Laser=pygame.image.load('images/Laser.png').convert_alpha()
     self.spr_LeadLaser=pygame.image.load('images/Lead_laser2.png').convert_alpha()
     self.spr_PlayerSword=pygame.image.load('images/sword_attack.png').convert_alpha()
     self.spr_PlayerSwordIdle=pygame.image.load('images/Zenshiro_swordimg.png').convert_alpha()
     self.spr_EnemyTurret=pygame.image.load('images/turret1_animation.png').convert_alpha()
     self.spr_MissileTurret=pygame.image.load('images/turret2_animation.png').convert_alpha()
     self.spr_BossEyeL=pygame.image.load('images/B_left_eye.png').convert_alpha()
     self.spr_BossEyeLDeact=pygame.image.load('images/B_left_eye_deactivate.png').convert_alpha()
     self.spr_BossEyeR=pygame.image.load('images/B_right_eye.png').convert_alpha()
     self.spr_BossEyeRDeact=pygame.image.load('images/B_right_eye_deactivate.png').convert_alpha()
     self.spr_BossMouth=pygame.image.load('images/B_mouth.png').convert_alpha()
     self.spr_PlayerBomb=pygame.image.load('images/Zenshiro_bomb.png').convert_alpha()
     self.spr_Explosion=pygame.image.load('images/Explosion_animation.png').convert_alpha()
     self.spr_BossBody=pygame.image.load('images/Boss.png').convert_alpha()
     #Tiles
     self.spr_tile=[
         pygame.image.load('images/scales5.png').convert_alpha(),
         pygame.image.load('images/scales2.png').convert_alpha(),
         pygame.image.load('images/scales3.png').convert_alpha(),
         pygame.image.load('images/scales1.png').convert_alpha(),
         pygame.image.load('images/scales4.png').convert_alpha(),
         pygame.image.load('images/scales6.png').convert_alpha()]
     
     self.tilelist=[4,1,1,1,1,1,1,1,2,3,3,3,3,3,3,3,3,3,3,3,3]
     
     self.tilesurf=pygame.Surface((32*len(self.tilelist)*3,32))
     i=0
     while(i<len(self.tilelist)):
         self.tilesurf.blit(self.spr_tile[self.tilelist[i]],pygame.Rect(i*32,0,0,0))
         i+=1
     self.tilesurf.blit(self.tilesurf,(32*len(self.tilelist)*1,0))
     #self.tilesurf.blit(self.tilesurf,(32*len(self.tilelist)*2,0))
     self.hofflist=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
     
     self.enemyalarm=15
     
     self.addObstacle(256,32,0)
     
     # for codes
     self.codestate = 0
     self.explode = pygame.mixer.Sound("./Sounds/Explosion1.wav")
Esempio n. 3
0
class Game(object):
    def __init__(self):
        super(Game,self).__init__()
        pygame.init()
        self.font = pygame.font.Font(None, 36)
        self.cont=True
        self.screen=pygame.display.set_mode(SCREEN)
        self.screen_rect=self.screen.get_rect()
        self.clock=pygame.time.Clock()
        self.scrollspeed=2
        self.scrollind=0
        self.hscrollspeed=18
        self.hscrollind=0
        self.diff=0
        self.lastspawned=0
        self.obstaclealarm=60
        
        
        #Miniboss Timer
        self.minitimer=600
        self.minidefeated=False
        self.minispawned=False
        self.finaltimer=self.minitimer*2
        self.finalspawned=False
        
        
        self.bar=SideBar(self,self.font)
        self.player=Player(300,200,self)
        self.playerbullets=pygame.sprite.Group()
        self.enemies=pygame.sprite.Group()
        self.obstacles=pygame.sprite.Group()
        self.bossparts=pygame.sprite.Group()
        self.bossbody=pygame.sprite.Group()
        self.particles=pygame.sprite.Group()
        self.powerups=pygame.sprite.Group()
        self.explosions=pygame.sprite.Group()
        
        #Controls are defined here.
        self.keysdict={pygame.K_UP:"up",pygame.K_DOWN:"down",pygame.K_LEFT:"left",pygame.K_RIGHT:"right",pygame.K_z:"action1",pygame.K_x:"action2",pygame.K_c:"action3",pygame.K_SPACE:"action4",pygame.K_a:"action5"}
        
        #Sprites
        self.spr_playerwalk = pygame.image.load('images/Zensiro_spritesheet.png').convert_alpha()
        self.spr_spikes = pygame.image.load('images/small spike.png').convert_alpha()
        self.spr_turret1=pygame.image.load('images/turret1.png').convert_alpha()
        self.spr_turret2=pygame.image.load('images/turret2.png').convert_alpha()
        self.spr_Oni1=pygame.image.load('images/oni1_animation.png').convert_alpha()
        self.spr_Oni2=pygame.image.load('images/Oni2.png').convert_alpha()
        self.spr_Miniboss=pygame.image.load('images/tengu_head.png').convert_alpha()
        self.spr_MinibossBody=pygame.image.load('images/Tengu_body_animation.png').convert_alpha()
        self.spr_Samurai=pygame.image.load('images/Samurai_jets3.png').convert_alpha()
        self.spr_Fireball=pygame.image.load('images/Fireball_bullet.png').convert_alpha()
        self.spr_Missile=pygame.image.load('images/Missle_bullet.png').convert_alpha()
        self.spr_FireWave=pygame.image.load('images/TempFireWave.png').convert_alpha()
        self.spr_FirePillar=pygame.image.load('images/TempFirePillar.png').convert_alpha()
        self.spr_PlayerBullet=pygame.image.load('images/Player_bullet.png').convert_alpha()
        self.spr_EnemySword=pygame.image.load('images/Enemy_sword.png').convert_alpha()
        self.spr_EnemyBullet=pygame.image.load('images/Enemy_bullet.png').convert_alpha()
        self.spr_Laser=pygame.image.load('images/Laser.png').convert_alpha()
        self.spr_LeadLaser=pygame.image.load('images/Lead_laser2.png').convert_alpha()
        self.spr_PlayerSword=pygame.image.load('images/sword_attack.png').convert_alpha()
        self.spr_PlayerSwordIdle=pygame.image.load('images/Zenshiro_swordimg.png').convert_alpha()
        self.spr_EnemyTurret=pygame.image.load('images/turret1_animation.png').convert_alpha()
        self.spr_MissileTurret=pygame.image.load('images/turret2_animation.png').convert_alpha()
        self.spr_BossEyeL=pygame.image.load('images/B_left_eye.png').convert_alpha()
        self.spr_BossEyeLDeact=pygame.image.load('images/B_left_eye_deactivate.png').convert_alpha()
        self.spr_BossEyeR=pygame.image.load('images/B_right_eye.png').convert_alpha()
        self.spr_BossEyeRDeact=pygame.image.load('images/B_right_eye_deactivate.png').convert_alpha()
        self.spr_BossMouth=pygame.image.load('images/B_mouth.png').convert_alpha()
        self.spr_PlayerBomb=pygame.image.load('images/Zenshiro_bomb.png').convert_alpha()
        self.spr_Explosion=pygame.image.load('images/Explosion_animation.png').convert_alpha()
        self.spr_BossBody=pygame.image.load('images/Boss.png').convert_alpha()
        #Tiles
        self.spr_tile=[
            pygame.image.load('images/scales5.png').convert_alpha(),
            pygame.image.load('images/scales2.png').convert_alpha(),
            pygame.image.load('images/scales3.png').convert_alpha(),
            pygame.image.load('images/scales1.png').convert_alpha(),
            pygame.image.load('images/scales4.png').convert_alpha(),
            pygame.image.load('images/scales6.png').convert_alpha()]
        
        self.tilelist=[4,1,1,1,1,1,1,1,2,3,3,3,3,3,3,3,3,3,3,3,3]
        
        self.tilesurf=pygame.Surface((32*len(self.tilelist)*3,32))
        i=0
        while(i<len(self.tilelist)):
            self.tilesurf.blit(self.spr_tile[self.tilelist[i]],pygame.Rect(i*32,0,0,0))
            i+=1
        self.tilesurf.blit(self.tilesurf,(32*len(self.tilelist)*1,0))
        #self.tilesurf.blit(self.tilesurf,(32*len(self.tilelist)*2,0))
        self.hofflist=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
        
        self.enemyalarm=15
        
        self.addObstacle(256,32,0)
        
        # for codes
        self.codestate = 0
        self.explode = pygame.mixer.Sound("./Sounds/Explosion1.wav")
        
    def process_events(self):
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                sys.exit()
                #self.cont=False
            if event.type==pygame.KEYDOWN:
                if event.key != konamicode[self.codestate]:
                    self.codestate = 0
                if event.key == konamicode[self.codestate]:
                    self.codestate += 1
                if self.codestate == len(konamicode):
                    self.codestate = 0
                    self.konamicode()
                if event.key==pygame.K_ESCAPE:
                    sys.exit()
                    #self.cont=False
                if event.key==pygame.K_f:
                    self.screen=pygame.display.set_mode(SCREEN, pygame.FULLSCREEN)
                if event.key==pygame.K_q:
                    sys.exit()
                # testing keys
                if event.key==pygame.K_p:
                    #spawn final boss
                    self.addBoss(self)
                if event.key==K_o:
                    #spawn miniboss
                    self.addMiniboss(320,16,self)
                if event.key==K_m:
                    Menu.show_menu()
                if event.key==K_n:
                    show_end(self)
        for tkey in self.keysdict:
            if pygame.key.get_pressed()[tkey]:
                self.player.controls[self.keysdict[tkey]]+=1
            else:
                self.player.controls[self.keysdict[tkey]]=0

    def update(self):
        self.spawning()
        self.player.update()
        self.playerbullets.update()
        self.obstacles.update()
        self.enemies.update()
        self.bossparts.update()
        self.bossbody.update()
        self.particles.update()
        self.powerups.update()
        self.explosions.update()
        
        self.scrollind+=self.scrollspeed
        if self.scrollind%32==0 and self.scrollspeed!=0:
            self.hofflist[0]+=self.hscrollspeed
            if self.hofflist[0]>=len(self.tilelist)*32:
                self.hofflist[0]-=len(self.tilelist)*32
            if self.hofflist[0]<0:
                self.hofflist[0]+=len(self.tilelist)*32
            i=len(self.hofflist)-1
            while i>0:
                self.hofflist[i]=self.hofflist[i-1]
                i-=1
    def difficulty(self,level):
        self.diff=level
    def stopScrolling(self): #- for use with miniboss/main boss
        self.scrollspeed=0
    def resumeScrolling(self): #- for use with miniboss
        self.scrollspeed=2
    def draw(self):
        self.screen.fill((0,0,0))
        self.drawtiles()
        for obstacle in self.obstacles:
            obstacle.draw(self.screen)
        self.bar.draw(self.screen,self.player)
        for bossbody in self.bossbody:
            bossbody.draw(self.screen)
        for bullet in self.playerbullets:
            bullet.draw(self.screen)
        for enemy in self.enemies:
            enemy.draw(self.screen)
        for bosspart in self.bossparts:
            bosspart.draw(self.screen)
        if self.player.jumping==False:
            self.player.draw(self.screen)
        if self.player.jumping==True:
            self.player.draw(self.screen)
        for part in self.particles:
            part.draw(self.screen)
        for powerup in self.powerups:
            powerup.draw(self.screen)
        for explosion in self.explosions:
            explosion.draw(self.screen)
    def drawtiles(self):
        i=-1
        while(i<17):
            self.drawtilerow(-64+32*i+(self.scrollind%32),self.hofflist[i])
            i+=1
    def drawtilerow(self,y,hoff):
        trect=pygame.Rect(32+hoff%(len(self.tilelist)*32),0,12*32,32)
        tsurf=self.tilesurf.subsurface(trect)        
        self.screen.blit(tsurf,(32+32,y))
        
        trect=pygame.Rect(hoff%(len(self.tilelist)*32),0,32,32)
        tsurf=self.tilesurf.subsurface(trect)
        ttsurf=pygame.transform.scale(tsurf,(16,32))
        self.screen.blit(ttsurf,(48,y))
        
        trect=pygame.Rect(hoff%(len(self.tilelist)*32)+(14*32)-32,0,32,32)
        tsurf=self.tilesurf.subsurface(trect)
        ttsurf=pygame.transform.scale(tsurf,(16,32))
        self.screen.blit(ttsurf,(14*32,y))
        
    def addPlayerBullet(self,x,y,hspeed,vspeed):
        self.playerbullets.add(PlayerBullet(x,y,hspeed,vspeed,self))
    def addPlayerSword(self,xoffs,yoffs,time,follow):
        self.playerbullets.add(PlayerSword(xoffs,yoffs,time,follow,self))
    def addPlayerBomb(self,xoffs,yoffs,time,follow):
        self.playerbullets.add(PlayerBomb(xoffs,yoffs,time,follow,self))
    def removePlayerBullet(self,bullet):
        self.playerbullets.remove(bullet)
    def addEnemy(self,x,y,type):
        if type==self.lastspawned:
            type+=1
        if type==0:
            grouptype=random.randint(0,1)
            if grouptype==0:
                self.enemies.add(Enemy(x,y,4,2,self))
                self.enemies.add(Enemy(480-x,y,4,2,self))
            if grouptype==1:
                self.enemies.add(Enemy(40,y,4,1,self))
                self.enemies.add(Enemy(440,y,-4,1,self))
        elif type==1:
            self.enemies.add(MissileTurret(x-40,y,self))
            self.enemies.add(MissileTurret(480-x,y,self))
        elif type==2:
            grouptype=random.randint(0,1)
            if grouptype==0:
                self.enemies.add(MeleeEnemy(240,y,0,20,self))
                self.enemies.add(MeleeEnemy(40,y,5,10,self))
                self.enemies.add(MeleeEnemy(440,y,-5,10,self))
            if grouptype==1:
                self.enemies.add(MeleeEnemy(440,y,-10,10,self))
                self.enemies.add(MeleeEnemy(320,y,-10,7,self))
                self.enemies.add(MeleeEnemy(40,y,10,7,self))
                self.enemies.add(MeleeEnemy(160,y,10,7,self))
        elif type==3:
            self.enemies.add(EnemyTurret(x,y,self))
        self.lastspawned=type
			
    def addObstacle(self,x,y,type):
        if type==0:
            self.obstacles.add(Spikes(x,y,self))
        if type==1:
            self.obstacles.add(FireWave(x,y,self))
        if type==2:
            self.obstacles.add(FirePillar(x,y,self))
    def removeObstacle(self,obstacle):
        self.obstacles.remove(obstacle)
    def addPowerup(self,x,y):
        self.powerups.add(Powerup(x,y,self))
    def addMiniboss(self,x,y,creator):
        self.bossparts.add(Miniboss(x,y,creator))
    def addMinibossBody(self,creator,game):
        self.bossbody.add(MinibossBody(creator,self))
    def addExplosion(self,x,y):
        self.explosions.add(Explosion(x,y,self))
    def removeExplosion(self,other):
        self.explosions.remove(other)
    def addBoss(self,creator):
        self.bossbody.add(Boss(creator))
    def addEye(self,x,y,boss,creator):
        self.bossparts.add(Eye(x,y,boss,creator))
    def addMouth(self,x,y,boss,creator):
        self.bossparts.add(Mouth(x,y,boss,creator))
    def addEnemyBullet(self,x,y,hspeed,vspeed):
        self.enemies.add(EnemyBullet(x,y,hspeed,vspeed,self))
    def addHomingMissile(self,x,y,hspeed,vspeed):
        self.enemies.add(HomingMissile(x,y,hspeed,vspeed,self))
    def addEnemySword(self,xoff,yoff,follow):
        self.enemies.add(EnemySword(xoff,yoff,follow,self))
    def addFirePart(self,x,y,hspeed,vspeed,life):
        self.particles.add(FirePart(x,y,hspeed,vspeed,life,self))
    def removeparticle(self,part):
        self.particles.remove(part)
    def addFireball(self,x,y,hspeed,vspeed):
        self.enemies.add(Fireball(x,y,hspeed,vspeed,self))
    def addLaser(self,x,y):
        self.enemies.add(Laser(x,y,self))
    def addLaserLead(self,x,y):
        self.enemies.add(LaserLead(x,y,self))
    def removeEnemy(self,enemy):
        self.enemies.remove(enemy)
    def removePowerup(self,powerup):
        self.powerups.remove(powerup)
    def removeBoss(self,boss):
        self.bossparts.remove(boss)
    def removeBossBase(self,boss):
        self.bossbody.remove(boss)
    def eyeDeath(self):
        for parts in self.bossparts:
            if isinstance(parts,Mouth):
                parts.eyeDeath()
    def changeVuln(self):
        for bosspart in self.bossparts:
            if isinstance(bosspart,Mouth) or isinstance(bosspart,Eye):
                bosspart.changeVuln()
    def collisions(self):
        #Collisions with enemies and player bullets
        colls=pygame.sprite.groupcollide(self.enemies,self.playerbullets,False,False)
        for enemy in colls.keys():
            for other in colls[enemy]:
                enemy.collision(other)
        #Collisions with enemies and the player
        playergroup=pygame.sprite.Group(self.player)
        colls=pygame.sprite.groupcollide(playergroup,self.enemies,False,False)
        for player in colls.keys():
            for other in colls[player]:
                player.collision(other,0)
        colls=pygame.sprite.groupcollide(playergroup,self.powerups,False,False)
        for player in colls.keys():
            for other in colls[player]:
                player.collision(other,0)
        #Collisions with obstacles and player
        playergroup=pygame.sprite.Group(self.player)
        colls=pygame.sprite.groupcollide(playergroup,self.obstacles,False,False)
        for player in colls.keys():
            for other in colls[player]:
                player.collision(other,1)
        #Collisions with boss parts and player
        playergroup=pygame.sprite.Group(self.player)
        colls=pygame.sprite.groupcollide(playergroup,self.bossparts,False,False)
        for player in colls.keys():
            for other in colls[player]:
                player.collision(other,2)
        #Collisions with boss parts and player bullets
        colls=pygame.sprite.groupcollide(self.bossparts,self.playerbullets,False,False)
        for bosspart in colls.keys():
            for other in colls[bosspart]:
                bosspart.collision(other)
    def spawning(self):
        self.enemyalarm-=1
        self.minitimer-=1
        self.obstaclealarm-=1
        if self.minispawned==False or self.minidefeated==True:
            self.finaltimer-=1
        if self.minitimer<=0 and self.minispawned==False and self.minidefeated==False:
            self.addMiniboss(320,16,self)
            self.minispawned=True
        if self.finaltimer<=0 and self.finalspawned==False and self.minidefeated==True:
            self.addBoss(self)
            self.finalspawned=True
        elif self.minitimer>0 or self.minidefeated==True and self.finalspawned==False:   
            if self.enemyalarm<=0:
                enemytype=random.randint(0,3)
                self.addEnemy(random.randint(80,440),-16,enemytype)
                self.enemyalarm=60
            if self.obstaclealarm<=0:
                self.addObstacle(random.randint(40,400),-16,0)
                self.obstaclealarm=180
                
    def konamicode(self):
        self.player.lives += 30