Ejemplo n.º 1
0
    def test_validateChapterKey(self):
        text = texts.Text('testing')
        text.loadFromString(self.bookWithChaptersText)

        with self.assertRaises(KeyError):
            text._validateChapterKey(None)
        with self.assertRaises(KeyError):
            text._validateChapterKey(0)
        with self.assertRaises(KeyError):
            text._validateChapterKey('1')
        text._validateChapterKey(1)
        text._validateChapterKey(2)
        text._validateChapterKey(3)
        with self.assertRaises(KeyError):
            text._validateChapterKey(4)

        text = texts.Text('testing', False)
        text.loadFromString(self.bookWithoutChaptersText)

        with self.assertRaises(KeyError):
            text._validateChapterKey(None)
        with self.assertRaises(KeyError):
            text._validateChapterKey(0)
        with self.assertRaises(KeyError):
            text._validateChapterKey('1')

        # It seems helpful to treat the number 1 as a valid
        # chapterKey.
        text._validateChapterKey(1)

        with self.assertRaises(KeyError):
            text._validateChapterKey(2)
Ejemplo n.º 2
0
    def test_allVersesInChapter(self):
        text = texts.Text('testing')
        text.loadFromString(self.bookWithChaptersText)

        # This should arrive at all verses in chapter 1.
        self.assertEqual(text._allVersesInChapter(1), [
            ((1, 1), u'In principio creavit Deus cælum et terram.'),
            ((1, 2), u'Terra autem erat inanis et vacua...'),
            ((1, 3), u'Dixitque Deus...'),
        ])

        # This should arrive at all verses in chapter 2.
        self.assertEqual(text._allVersesInChapter(2), [
            ((2, 1), u'Igitur perfecti sunt cæli et terra...'),
            ((2, 2),
             u'Complevitque Deus die septimo opus suum quod fecerat...'),
            ((2, 3), u'Et benedixit diei septimo...'),
        ])

        text = texts.Text('testing', False)
        text.loadFromString(self.bookWithoutChaptersText)

        # This should arrive at all verses in chapter 1.
        self.assertEqual(text._allVersesInChapter(1), [
            ((1, 1), u'Judas Jesu Christi servus...'),
            ((1, 2), u'Misericordia vobis...'),
            ((1, 3), u'Carissimi...'),
        ])
Ejemplo n.º 3
0
    def test_getVerse(self):
        text = texts.Text('testing')
        text.loadFromString(self.bookWithChaptersText)

        # This should return all of chapter 1.
        result = text.getVerse(addrs.Addr(1))
        self.assertEqual(result, [
            ((1, 1), u'In principio creavit Deus cælum et terram.'),
            ((1, 2), u'Terra autem erat inanis et vacua...'),
            ((1, 3), u'Dixitque Deus...'),
        ])

        # This should return all of chapter 2.
        result = text.getVerse(addrs.Addr(2))
        self.assertEqual(result, [
            ((2, 1), u'Igitur perfecti sunt cæli et terra...'),
            ((2, 2),
             u'Complevitque Deus die septimo opus suum quod fecerat...'),
            ((2, 3), u'Et benedixit diei septimo...'),
        ])

        # This should return verse 1:1.
        result = text.getVerse(addrs.Addr(1, 1))
        self.assertEqual(result, [
            ((1, 1), u'In principio creavit Deus cælum et terram.'),
        ])

        # This should return verse 1:2.
        result = text.getVerse(addrs.Addr(1, 2))
        self.assertEqual(result, [
            ((1, 2), u'Terra autem erat inanis et vacua...'),
        ])

        # This should return verse 2:3:
        result = text.getVerse(addrs.Addr(2, 3))
        self.assertEqual(result, [
            ((2, 3), u'Et benedixit diei septimo...'),
        ])

        text = texts.Text('testing', False)
        text.loadFromString(self.bookWithoutChaptersText)

        # This should return only verse 1.
        result = text.getVerse(addrs.Addr(1))
        self.assertEqual(result, [
            (1, u'Judas Jesu Christi servus...'),
        ])

        # This should return only verse 2.
        result = text.getVerse(addrs.Addr(2))
        self.assertEqual(result, [
            (2, u'Misericordia vobis...'),
        ])

        # A request for 1:2 should also return verse 2, but the
        # 'address' should have the shape of the reference.
        result = text.getVerse(addrs.Addr(1, 2))
        self.assertEqual(result, [
            ((1, 2), u'Misericordia vobis...'),
        ])
Ejemplo n.º 4
0
    def test_validateVerseKey(self):
        text = texts.Text('testing')
        text.loadFromString(self.bookWithChaptersText)

        # If the book has chapters, any verseKey by itself is cause
        # for an exception.
        with self.assertRaises(KeyError):
            text._validateVerseKey(None)
        with self.assertRaises(KeyError):
            text._validateVerseKey(0)
        with self.assertRaises(KeyError):
            text._validateVerseKey('1')
        with self.assertRaises(KeyError):
            text._validateVerseKey(1)

        text = texts.Text('testing', False)
        text.loadFromString(self.bookWithoutChaptersText)
        with self.assertRaises(KeyError):
            text._validateVerseKey(None)
        with self.assertRaises(KeyError):
            text._validateVerseKey(0)
        with self.assertRaises(KeyError):
            text._validateVerseKey('1')
        text._validateVerseKey(1)
        text._validateVerseKey(2)
        text._validateVerseKey(3)
        with self.assertRaises(KeyError):
            text._validateVerseKey(4)
Ejemplo n.º 5
0
 def Check_Hit_PowerUp(self,SpriteGroup):
     for Sprite in SpriteGroup: 
         playSound("pickup")
         player.Player.PowerupType=Sprite.type   # Grab Power up type (0=autofire 1=2 way fire 3=fire all directions)
         type_text=["Auto Fire","Two Way Fire","Four Way Fire"]
         text = texts.Text(self.game, 400, 500, type_text[Sprite.type].format(round),50,"CENTRE",3,1)
         self.game.points.append(text) 
Ejemplo n.º 6
0
    def test_firstVersesInChapter(self):
        text = texts.Text('testing')
        text.loadFromString(self.bookWithChaptersText)

        # This should produce verses 1:1-3.
        self.assertEqual(text._firstVersesInChapter(1, 1), [
            ((1, 1), u'In principio creavit Deus cælum et terram.'),
        ])

        # This should produce verses 1:2-3.
        self.assertEqual(text._firstVersesInChapter(1, 2), [
            ((1, 1), u'In principio creavit Deus cælum et terram.'),
            ((1, 2), u'Terra autem erat inanis et vacua...'),
        ])

        # This should produces verses 1:3.
        self.assertEqual(text._firstVersesInChapter(1, 3), [
            ((1, 1), u'In principio creavit Deus cælum et terram.'),
            ((1, 2), u'Terra autem erat inanis et vacua...'),
            ((1, 3), u'Dixitque Deus...'),
        ])
Ejemplo n.º 7
0
    def test_middleVersesInChapter(self):
        text = texts.Text('testing')
        text.loadFromString(self.bookWithChaptersText)

        # This should produce all three verses of chapter one.
        self.assertEqual(text._middleVersesInChapter(1, 1, 3), [
            ((1, 1), u'In principio creavit Deus cælum et terram.'),
            ((1, 2), u'Terra autem erat inanis et vacua...'),
            ((1, 3), u'Dixitque Deus...'),
        ])

        # This should produce only verse 1.
        self.assertEqual(text._middleVersesInChapter(1, 1, 1), [
            ((1, 1), u'In principio creavit Deus cælum et terram.'),
        ])

        # This should produce only verse 2.
        self.assertEqual(text._middleVersesInChapter(1, 2, 2), [
            ((1, 2), u'Terra autem erat inanis et vacua...'),
        ])

        # This should produce only verse 3.
        self.assertEqual(text._middleVersesInChapter(1, 3, 3), [
            ((1, 3), u'Dixitque Deus...'),
        ])

        # This should produce verses 1-2.
        self.assertEqual(text._middleVersesInChapter(1, 1, 2), [
            ((1, 1), u'In principio creavit Deus cælum et terram.'),
            ((1, 2), u'Terra autem erat inanis et vacua...'),
        ])

        # This should produce verses 2-3.
        self.assertEqual(text._middleVersesInChapter(1, 2, 3), [
            ((1, 2), u'Terra autem erat inanis et vacua...'),
            ((1, 3), u'Dixitque Deus...'),
        ])
Ejemplo n.º 8
0
    def test_getRangeOfVerses(self):
        text = texts.Text('testing')
        text.loadFromString(self.bookWithChaptersText)

        # Here are a few ranges entirely within the same chapter,
        # starting with 1:1-1:3.
        verses = text.getRangeOfVerses(
            addrs.AddrRange(addrs.Addr(1, 1), addrs.Addr(1, 3)))
        self.assertEqual(
            [((1, 1), u'In principio creavit Deus cælum et terram.'),
             ((1, 2), u'Terra autem erat inanis et vacua...'),
             ((1, 3), u'Dixitque Deus...')], verses)

        # 2:1-2:2
        verses = text.getRangeOfVerses(
            addrs.AddrRange(addrs.Addr(2, 1), addrs.Addr(2, 2)))
        self.assertEqual(
            [((2, 1), u'Igitur perfecti sunt cæli et terra...'),
             ((2, 2),
              u'Complevitque Deus die septimo opus suum quod fecerat...')],
            verses)

        # 3:2-3:3
        verses = text.getRangeOfVerses(
            addrs.AddrRange(addrs.Addr(3, 2), addrs.Addr(3, 3)))
        self.assertEqual(
            [((3, 2), u'Cui respondit mulier...'),
             ((3, 3), u'de fructu vero ligni quod est in medio paradisi...')],
            verses)

        # Here are some ranges in adjacent chapters, starting with
        # 1:1-2:1:
        verses = text.getRangeOfVerses(
            addrs.AddrRange(addrs.Addr(1, 1), addrs.Addr(2, 1)))
        self.assertEqual(
            [((1, 1), u'In principio creavit Deus cælum et terram.'),
             ((1, 2), u'Terra autem erat inanis et vacua...'),
             ((1, 3), u'Dixitque Deus...'),
             ((2, 1), u'Igitur perfecti sunt cæli et terra...')], verses)

        # 2:2-3:2
        verses = text.getRangeOfVerses(
            addrs.AddrRange(addrs.Addr(2, 2), addrs.Addr(3, 2)))
        self.assertEqual([
            ((2, 2),
             u'Complevitque Deus die septimo opus suum quod fecerat...'),
            ((2, 3), u'Et benedixit diei septimo...'),
            ((3, 1),
             u'Sed et serpens erat callidior cunctis animantibus terræ quæ fecerat Dominus Deus...'
             ), ((3, 2), u'Cui respondit mulier...')
        ], verses)

        # Finally, here is the case of a book in the middle: 1:3-3:1:
        verses = text.getRangeOfVerses(
            addrs.AddrRange(addrs.Addr(1, 3), addrs.Addr(3, 1)))
        self.assertEqual([
            ((1, 3), u'Dixitque Deus...'),
            ((2, 1), u'Igitur perfecti sunt cæli et terra...'),
            ((2, 2),
             u'Complevitque Deus die septimo opus suum quod fecerat...'),
            ((2, 3), u'Et benedixit diei septimo...'),
            ((3, 1),
             u'Sed et serpens erat callidior cunctis animantibus terræ quæ fecerat Dominus Deus...'
             )
        ], verses)

        # Now let's see if we can handle whole-chapter ranges like
        # 1-2:
        verses = text.getRangeOfVerses(
            addrs.AddrRange(addrs.Addr(1), addrs.Addr(2)))
        self.assertEqual(
            [((1, 1), u'In principio creavit Deus cælum et terram.'),
             ((1, 2), u'Terra autem erat inanis et vacua...'),
             ((1, 3), u'Dixitque Deus...'),
             ((2, 1), u'Igitur perfecti sunt cæli et terra...'),
             ((2, 2),
              u'Complevitque Deus die septimo opus suum quod fecerat...'),
             ((2, 3), u'Et benedixit diei septimo...')], verses)

        # What about a range like 1-1?  We don't expect this from a
        # human, but it can happen when we normalize a mix of
        # addresses and address ranges to address ranges.
        expectedVerses = [((1, 1),
                           u'In principio creavit Deus cælum et terram.'),
                          ((1, 2), u'Terra autem erat inanis et vacua...'),
                          ((1, 3), u'Dixitque Deus...')]
        self.assertEqual(
            expectedVerses,
            text.getRangeOfVerses(addrs.AddrRange(addrs.Addr(1),
                                                  addrs.Addr(1))))

        # What about a range that begins on a chapter, but ends on a
        # verse, like 1-2:2:
        verses = text.getRangeOfVerses(
            addrs.AddrRange(addrs.Addr(1), addrs.Addr(2, 2)))
        self.assertEqual(
            [((1, 1), u'In principio creavit Deus cælum et terram.'),
             ((1, 2), u'Terra autem erat inanis et vacua...'),
             ((1, 3), u'Dixitque Deus...'),
             ((2, 1), u'Igitur perfecti sunt cæli et terra...'),
             ((2, 2),
              u'Complevitque Deus die septimo opus suum quod fecerat...')],
            verses)
Ejemplo n.º 9
0
    def update(self):
        #** In the event bullet leaves screen boundaries
        #** REMOVE the bullet off the screen & memory
        #***
        for bullet in self.game.projectile:
            if bullet.rect.y < 0 or bullet.rect.y > SCREEN_HEIGHT - PLAYER_HEIGHT \
            or bullet.rect.x < 0 or bullet.rect.x-PROJECTILE_OFFSET > SCREEN_WIDTH - PLAYER_WIDTH:
                self.game.projectile.remove(bullet)
        #***
        # Grab the keyboard up/down/left/right/space
        # This construct also allows diagonal movement ie. left+down
        #*** 
        keys=pygame.key.get_pressed()
        if keys[K_LEFT]:            
            self.rect.x -= self.playerspeed            
            self.CheckX()
            self.lastdirection=K_LEFT            
            self.lasthoriz=K_LEFT
        elif keys[K_RIGHT]:
            self.rect.x += self.playerspeed
            self.CheckX()
            self.lastdirection=K_RIGHT            
            self.lasthoriz=K_RIGHT
        if keys[K_UP]:            
            self.rect.y -= self.playerspeed
            self.CheckY()
            self.lastdirection=K_UP   
            self.lastvert=K_UP         
        elif keys[K_DOWN]:
            self.rect.y += self.playerspeed
            self.CheckY()
            self.lastdirection=K_DOWN
            self.lastvert=K_DOWN

        SpriteGroup = pygame.sprite.groupcollide(self.game.powerups,self.game.PlayerSprites,True,False) 
        projectile.Projectile.Check_Hit_PowerUp(self,SpriteGroup)

        #*** Check if Player Collides with Enemy ***
        SpriteGroup =  pygame.sprite.groupcollide(self.game.PlayerSprites,self.game.enemies,False,True) 
        if SpriteGroup:
            playSound("dying")
            
            spn=len(self.game.Enemy_SPAWN_List) # Spawned            
            #hits=self.game.enemy_hits           # Enemies Destroyed on screen

            if (self.game.allspawned==True):
                self.game.enemies_level_start=len(self.game.enemies)+1 #spn-hits 
            else: 
                self.game.enemies_level_start=spn
            self.First_Time_in_Round=False
            
            text = texts.Text(self.game, 550, SCREEN_HEIGHT-15, str(self.game.enemies_level_start)+" enemies remaining",15,"CENTRE",3,1)
            self.game.points.append(text)

            bs=175
            cv=145
            for i in range(5):
                self.DyingEffect(bs,cv,0,0)
                self.DyingEffect(-bs,cv,0,0)
            self.DyingEffect(bs,cv,cv,0)
            #reset values to original
            self.image = pygame.Surface((self.width,self.height))        
            self.image.fill((YELLOW))
            self.game.draw()                               
            pygame.sprite.Group.empty(self.game.enemies)
            pygame.sprite.Group.empty(self.game.projectile)
            self.game.playing=False
            self.game.SetPlayerDead()
            self.game.Enemy_SPAWN_List.clear()           
            pygame.sprite.Group.empty(self.game.enemies)
            pygame.sprite.Group.empty(self.game.projectile)            
            pygame.sprite.Group.empty(self.game.powerups)
            self.game.enemies_spawned=0
            self.image.fill((BLACK))
            return            

        if  Player.PowerupType>=0 or keys[K_SPACE]:
            if self.projectilecooldown==0 :
                #stopSound("walking")
                playSound("firing")
                #*** After cooldown period, FIRE a BULLET!! In direction player last moved on screen
                self.projectilecooldown=self.maxprojectilecooldown
                projectile1=projectile.Projectile(self.game,self.lastdirection,self.rect.x,self.rect.y)                                        
                self.game.projectile.add(projectile1)

                directions=[K_UP,K_DOWN,K_LEFT,K_RIGHT]
                if Player.PowerupType==2:  # Power up to fire in all directions 
                    if self.lastdirection in directions:
                        directions.remove(self.lastdirection)  # Dont fire in this direction (..already did a few lines above)
                    for newbullet in directions: # add projectiles in the three other directions
                        projectile1=projectile.Projectile(self.game,newbullet,self.rect.x,self.rect.y)                                        
                        self.game.projectile.add(projectile1)
                if Player.PowerupType==1:  # Power up to fire in two directions
                    if self.lastdirection in [K_UP,K_DOWN]:
                        xlastvert=K_UP
                        if self.lastvert==K_LEFT:
                            xlastvert=K_RIGHT
                        if self.lastvert==K_RIGHT:
                            xlastvert=K_LEFT

                        projectile1=projectile.Projectile(self.game,self.lasthoriz,self.rect.x,self.rect.y)                                        
                        self.game.projectile.add(projectile1)
                    else: 
                        xlasthoriz=K_DOWN
                        if self.lasthoriz==K_UP:
                            xlasthoriz=K_DOWN
                        if self.lasthoriz==K_DOWN:
                            xlasthoriz=K_UP

                        projectile1=projectile.Projectile(self.game,self.lastvert,self.rect.x,self.rect.y)                                        
                        self.game.projectile.add(projectile1)                                           
            else:
                self.projectilecooldown-=1