Esempio n. 1
0
    def __init__(self, screen, blocksize, position=(0, 0)):
        """Initialize main panel"""
        pygame.sprite.Sprite.__init__(self)

        self.blocksize = blocksize
        self.width = blocksize * 16
        self.height = blocksize * 21

        self.image = pygame.Surface((self.width, self.height))
        self.image.fill((255, 255, 255))

        self.rect = self.image.get_rect()
        self.rect.topleft = position

        # LShape, RShape, SShape, ZShape, TShape, SquareShape, StraightShape
        self.shapes = [
            LShape, RShape, SShape, TShape, SquareShape, StraightShape, ZShape
        ]

        self.linechecker = LineChecker(self.blocksize)

        self.screen = screen
        self.background = pygame.Surface.convert(
            pygame.image.load(os.path.join("data", "background1.png")))
Esempio n. 2
0
    def __init__(self, blocksize=25):
        """Initialize"""
        pygame.mixer.pre_init(44100, -16, 2, 1024)
        pygame.init()

        self.width = 16 * blocksize
        self.height = 21 * blocksize
        self.blocksize = blocksize

        self.linechecker = LineChecker(self.blocksize)

        # LShape, RShape, SShape, ZShape, TShape, SquareShape, StraightShape
        self.shapes = [
            LShape, RShape, SShape, TShape, SquareShape, StraightShape, ZShape
        ]

        self.screen = pygame.display.set_mode((self.width, self.height))
        pygame.display.set_caption("Keltris")

        self.background = pygame.Surface.convert(
            pygame.image.load(os.path.join("data", "background.png")))

        self.update_time = 0
        self.paused = False
Esempio n. 3
0
 def __init__(self, screen, blocksize, position=(0, 0)):
     """Initialize main panel"""
     pygame.sprite.Sprite.__init__(self)
     
     self.blocksize = blocksize
     self.width = blocksize * 16
     self.height = blocksize * 21
     
     self.image = pygame.Surface((self.width, self.height))
     self.image.fill((255, 255, 255))
     
     self.rect = self.image.get_rect()
     self.rect.topleft = position
     
     # LShape, RShape, SShape, ZShape, TShape, SquareShape, StraightShape
     self.shapes = [LShape, RShape, SShape, TShape, SquareShape, StraightShape, ZShape]
     
     self.linechecker = LineChecker(self.blocksize)
     
     self.screen = screen
     self.background = pygame.Surface.convert(pygame.image.load(os.path.join("data", "background1.png")))
Esempio n. 4
0
 def __init__(self, blocksize=25):
     """Initialize"""
     pygame.mixer.pre_init(44100, -16, 2, 1024)
     pygame.init()
     
     self.width = 16*blocksize
     self.height = 21*blocksize
     self.blocksize = blocksize
     
     self.linechecker = LineChecker(self.blocksize)
     
     # LShape, RShape, SShape, ZShape, TShape, SquareShape, StraightShape
     self.shapes = [LShape, RShape, SShape, TShape, SquareShape, StraightShape, ZShape]
     
     self.screen = pygame.display.set_mode((self.width, self.height))
     pygame.display.set_caption("Keltris")
     
     self.background = pygame.Surface.convert(pygame.image.load(os.path.join("data", "background.png")))
     
     self.update_time = 0
     self.paused = False
Esempio n. 5
0
class MainPanel(pygame.sprite.Sprite):
    """Main Panel"""
    def __init__(self, screen, blocksize, position=(0, 0)):
        """Initialize main panel"""
        pygame.sprite.Sprite.__init__(self)

        self.blocksize = blocksize
        self.width = blocksize * 16
        self.height = blocksize * 21

        self.image = pygame.Surface((self.width, self.height))
        self.image.fill((255, 255, 255))

        self.rect = self.image.get_rect()
        self.rect.topleft = position

        # LShape, RShape, SShape, ZShape, TShape, SquareShape, StraightShape
        self.shapes = [
            LShape, RShape, SShape, TShape, SquareShape, StraightShape, ZShape
        ]

        self.linechecker = LineChecker(self.blocksize)

        self.screen = screen
        self.background = pygame.Surface.convert(
            pygame.image.load(os.path.join("data", "background1.png")))

    def LoadSprites(self):
        """Loads stuff"""
        self.shape = choice(self.shapes)(self.blocksize, choice(xrange(4)))
        self.bottom = pygame.sprite.RenderUpdates()
        self.sides = pygame.sprite.Group()
        self.barriers = pygame.sprite.Group()
        self.top = Wall(14 * self.blocksize, self.blocksize,
                        (self.blocksize, -self.blocksize))
        self.bottom.add(
            Wall(14 * self.blocksize, self.blocksize,
                 (self.blocksize, 20 * self.blocksize), "bottom.png"))
        self.sides.add(
            Wall(self.blocksize, 21 * self.blocksize, (0, 0), "sides.png"))
        self.sides.add(
            Wall(self.blocksize, 21 * self.blocksize, (15 * self.blocksize, 0),
                 "sides.png"))
        self.barriers.add(self.sides)
        self.barriers.add(self.bottom)
        self.barriers.add(self.top)

        self.image.blit(self.background, self.background.get_rect())
        for sprite in self.barriers:
            self.image.blit(sprite.image, sprite.rect)

    def update(self, time):
        if time > self.update_time:
            self.shape.move(K_DOWN, self.barriers)
            if pygame.sprite.groupcollide(self.shape, self.bottom, False,
                                          False):
                self.shape.backup()
                self.bottom.add(self.shape)
                self.barriers.add(self.shape)
                lines = self.linechecker.checklines(self.bottom)
                if lines:
                    updates = self.draw()
                    self.screen.blit(self.image, self.rect)
                    pygame.display.update(updates)
                self.update_level(lines)
                continue_game = self.next_shape()
                if not continue_game:
                    return True
            self.update_time = time + self.update_length
        return False

    def update_level(self, lines=None):
        if lines:
            self.lines += lines
        self.level = self.lines / 10
        self.update_length = 1000 - 100 * self.level

    def handle_event(self, event):
        if event.type == KEYDOWN:
            self.move_shape(event)

    def next_shape(self):
        self.shape = choice(self.shapes)(self.blocksize, choice(xrange(4)))
        if pygame.sprite.groupcollide(self.shape, self.bottom, False, False):
            return False
        return True

    def move_shape(self, event):
        self.shape.move(event.key, self.barriers)

    def draw(self):
        updates = self.shape.draw(self.image) + self.bottom.draw(self.image)
        return updates

    def clear(self):
        self.shape.clear(self.image, self.background)
        self.bottom.clear(self.image, self.background)

    def set_shape(self, shape):
        self.shape = shape

    def new_game(self):
        self.LoadSprites()
        self.update_time = 0
        self.update_length = 1000
        self.level = 0
        self.lines = 0
Esempio n. 6
0
class TetrisMain:
    """Main Tetris class. Initializes and creates the game."""
    def __init__(self, blocksize=25):
        """Initialize"""
        pygame.mixer.pre_init(44100, -16, 2, 1024)
        pygame.init()

        self.width = 16 * blocksize
        self.height = 21 * blocksize
        self.blocksize = blocksize

        self.linechecker = LineChecker(self.blocksize)

        # LShape, RShape, SShape, ZShape, TShape, SquareShape, StraightShape
        self.shapes = [
            LShape, RShape, SShape, TShape, SquareShape, StraightShape, ZShape
        ]

        self.screen = pygame.display.set_mode((self.width, self.height))
        pygame.display.set_caption("Keltris")

        self.background = pygame.Surface.convert(
            pygame.image.load(os.path.join("data", "background.png")))

        self.update_time = 0
        self.paused = False

    def LoadSprites(self):
        """Loads stuff?"""
        self.shape = choice(self.shapes)(self.blocksize, choice(xrange(4)))
        self.bottom = pygame.sprite.RenderUpdates()
        self.sides = pygame.sprite.Group()
        self.barriers = pygame.sprite.Group()
        self.top = Wall(14 * self.blocksize, self.blocksize,
                        (self.blocksize, -self.blocksize))

        self.bottom.add(
            Wall(14 * self.blocksize, self.blocksize,
                 (self.blocksize, 20 * self.blocksize), "bottom.png"))
        #left side, then right side
        self.sides.add(
            Wall(self.blocksize, 21 * self.blocksize, (0, 0), "sides.png"))
        self.sides.add(
            Wall(self.blocksize, 21 * self.blocksize, (15 * self.blocksize, 0),
                 "sides.png"))
        self.barriers.add(self.sides)
        self.barriers.add(self.bottom)
        self.barriers.add(self.top)

    def LoadMusic(self):
        pygame.mixer.music.load(os.path.join("data", "tetris3_tetoroika.ogg"))
        pygame.mixer.music.play(-1)

    def MainLoop(self):
        """Main loop of the game."""
        self.new_game()
        while 1:
            if self.paused:
                event = pygame.event.wait()
                while not (event.type == KEYDOWN
                           and event.key in [K_p, K_PAUSE]):
                    event = pygame.event.wait()
                self.handle_event(event)
            for event in pygame.event.get():
                self.handle_event(event)

            if pygame.time.get_ticks() > self.update_time:
                self.shape.move(K_DOWN, self.barriers)
                self.update_time = pygame.time.get_ticks() + 1000

            if pygame.sprite.groupcollide(self.shape, self.bottom, False,
                                          False):
                self.shape.backup()
                self.bottom.add(self.shape)
                self.barriers.add(self.bottom)
                self.linechecker.checklines(self.bottom)
                updates = self.shape.draw(self.screen)
                pygame.display.update(updates)
                self.shape = choice(self.shapes)(self.blocksize,
                                                 choice(xrange(4)))

            if pygame.sprite.spritecollide(self.top, self.bottom, False):
                self.end_game()

            updates = self.shape.draw(self.screen) + self.bottom.draw(
                self.screen)
            pygame.display.update(updates)
            pygame.time.wait(5)
            self.shape.clear(self.screen, self.background)
            self.bottom.clear(self.screen, self.background)

    def handle_event(self, event):
        """Handles game events"""
        if event.type == pygame.QUIT:
            sys.exit()
        elif event.type == KEYDOWN:
            if event.key in [K_ESCAPE, K_q]:
                sys.exit()
            elif event.key in [K_p, K_PAUSE]:
                if self.paused:
                    self.unpause_game()
                else:
                    self.pause_game()
            else:
                self.shape.move(event.key, self.barriers)

    def pause_game(self):
        pygame.mixer.music.fadeout(300)
        self.paused = True

    def unpause_game(self):
        pygame.mixer.music.play(-1)
        self.paused = False
        self.update_time = pygame.time.get_ticks() + 1000

    def end_game(self):
        self.new_game()

    def new_game(self):
        """Starts a new game"""
        self.LoadSprites()
        self.LoadMusic()
        self.screen.blit(self.background, self.background.get_rect())
        for sprite in self.sides:
            self.screen.blit(sprite.image, sprite.rect)
        pygame.display.update()
Esempio n. 7
0
class MainPanel(pygame.sprite.Sprite):
    """Main Panel"""
    def __init__(self, screen, blocksize, position=(0, 0)):
        """Initialize main panel"""
        pygame.sprite.Sprite.__init__(self)
        
        self.blocksize = blocksize
        self.width = blocksize * 16
        self.height = blocksize * 21
        
        self.image = pygame.Surface((self.width, self.height))
        self.image.fill((255, 255, 255))
        
        self.rect = self.image.get_rect()
        self.rect.topleft = position
        
        # LShape, RShape, SShape, ZShape, TShape, SquareShape, StraightShape
        self.shapes = [LShape, RShape, SShape, TShape, SquareShape, StraightShape, ZShape]
        
        self.linechecker = LineChecker(self.blocksize)
        
        self.screen = screen
        self.background = pygame.Surface.convert(pygame.image.load(os.path.join("data", "background1.png")))
        
    def LoadSprites(self):
        """Loads stuff"""
        self.shape = choice(self.shapes)(self.blocksize, choice(xrange(4)))
        self.bottom = pygame.sprite.RenderUpdates()
        self.sides = pygame.sprite.Group()
        self.barriers = pygame.sprite.Group()
        self.top = Wall(14*self.blocksize, self.blocksize, (self.blocksize, -self.blocksize))
        self.bottom.add(Wall(14*self.blocksize, self.blocksize, (self.blocksize, 20*self.blocksize), "bottom.png"))
        self.sides.add(Wall(self.blocksize, 21*self.blocksize, (0, 0), "sides.png"))
        self.sides.add(Wall(self.blocksize, 21*self.blocksize, (15*self.blocksize, 0), "sides.png"))
        self.barriers.add(self.sides)
        self.barriers.add(self.bottom)
        self.barriers.add(self.top)
        
        self.image.blit(self.background, self.background.get_rect())
        for sprite in self.barriers:
            self.image.blit(sprite.image, sprite.rect)
        
    def update(self, time):
    	if time > self.update_time:
	        self.shape.move(K_DOWN, self.barriers)
	        if pygame.sprite.groupcollide(self.shape, self.bottom, False, False):
	            self.shape.backup()
	            self.bottom.add(self.shape)
	            self.barriers.add(self.shape)
	            lines = self.linechecker.checklines(self.bottom)
	            if lines:
		            updates = self.draw()
		            self.screen.blit(self.image, self.rect)
		            pygame.display.update(updates)
	            self.update_level(lines)
	            continue_game = self.next_shape()
	            if not continue_game:
	            	return True
	        self.update_time = time + self.update_length
        return False
        
    def update_level(self, lines=None):
    	if lines:
    		self.lines += lines
    	self.level = self.lines/10
    	self.update_length = 1000 - 100*self.level
        
    def handle_event(self, event):
    	if event.type == KEYDOWN:
    		self.move_shape(event)
    		
    def next_shape(self):
    	self.shape = choice(self.shapes)(self.blocksize, choice(xrange(4)))
    	if pygame.sprite.groupcollide(self.shape, self.bottom, False, False):
    		return False
    	return True
        
    def move_shape(self, event):
        self.shape.move(event.key, self.barriers)
        
    def draw(self):
        updates = self.shape.draw(self.image) + self.bottom.draw(self.image)
        return updates
        
    def clear(self):
        self.shape.clear(self.image, self.background)
        self.bottom.clear(self.image, self.background)
        
    def set_shape(self, shape):
        self.shape = shape
        
    def new_game(self):
    	self.LoadSprites()
    	self.update_time = 0
        self.update_length = 1000
        self.level = 0
        self.lines = 0
Esempio n. 8
0
class TetrisMain:
    """Main Tetris class. Initializes and creates the game."""
    def __init__(self, blocksize=25):
        """Initialize"""
        pygame.mixer.pre_init(44100, -16, 2, 1024)
        pygame.init()
        
        self.width = 16*blocksize
        self.height = 21*blocksize
        self.blocksize = blocksize
        
        self.linechecker = LineChecker(self.blocksize)
        
        # LShape, RShape, SShape, ZShape, TShape, SquareShape, StraightShape
        self.shapes = [LShape, RShape, SShape, TShape, SquareShape, StraightShape, ZShape]
        
        self.screen = pygame.display.set_mode((self.width, self.height))
        pygame.display.set_caption("Keltris")
        
        self.background = pygame.Surface.convert(pygame.image.load(os.path.join("data", "background.png")))
        
        self.update_time = 0
        self.paused = False
        
    def LoadSprites(self):
        """Loads stuff?"""
        self.shape = choice(self.shapes)(self.blocksize, choice(xrange(4)))
        self.bottom = pygame.sprite.RenderUpdates()
        self.sides = pygame.sprite.Group()
        self.barriers = pygame.sprite.Group()
        self.top = Wall(14*self.blocksize, self.blocksize, (self.blocksize, -self.blocksize))
        
        self.bottom.add(Wall(14*self.blocksize, self.blocksize, (self.blocksize, 20*self.blocksize), "bottom.png"))
        #left side, then right side
        self.sides.add(Wall(self.blocksize, 21*self.blocksize, (0, 0), "sides.png"))
        self.sides.add(Wall(self.blocksize, 21*self.blocksize, (15*self.blocksize, 0), "sides.png"))
        self.barriers.add(self.sides)
        self.barriers.add(self.bottom)
        self.barriers.add(self.top)
        
    def LoadMusic(self):
        pygame.mixer.music.load(os.path.join("data", "tetris3_tetoroika.ogg"))
        pygame.mixer.music.play(-1)
    
    def MainLoop(self):
        """Main loop of the game."""
        self.new_game()
        while 1:
            if self.paused:
                event = pygame.event.wait()
                while not (event.type == KEYDOWN and event.key in [K_p, K_PAUSE]):
                    event = pygame.event.wait()
                self.handle_event(event)
            for event in pygame.event.get():
                self.handle_event(event)
            
            if pygame.time.get_ticks() > self.update_time:
                self.shape.move(K_DOWN, self.barriers)
                self.update_time = pygame.time.get_ticks() + 1000
                
            if pygame.sprite.groupcollide(self.shape, self.bottom, False, False):
                self.shape.backup()
                self.bottom.add(self.shape)
                self.barriers.add(self.bottom)
                self.linechecker.checklines(self.bottom)
                updates = self.shape.draw(self.screen)
                pygame.display.update(updates)
                self.shape = choice(self.shapes)(self.blocksize, choice(xrange(4)))
                
            if pygame.sprite.spritecollide(self.top, self.bottom, False):
                self.end_game()
               
            updates = self.shape.draw(self.screen) + self.bottom.draw(self.screen)
            pygame.display.update(updates)
            pygame.time.wait(5)
            self.shape.clear(self.screen, self.background)
            self.bottom.clear(self.screen, self.background) 
            
    def handle_event(self, event):
        """Handles game events"""
        if event.type == pygame.QUIT:
            sys.exit()
        elif event.type == KEYDOWN:
            if event.key in [K_ESCAPE, K_q]:
                sys.exit()
            elif event.key in [K_p, K_PAUSE]:
                if self.paused:
                    self.unpause_game()
                else:
                    self.pause_game()
            else:
                self.shape.move(event.key, self.barriers)
                
    def pause_game(self):
        pygame.mixer.music.fadeout(300)
        self.paused = True
        
    def unpause_game(self):
        pygame.mixer.music.play(-1)
        self.paused = False
        self.update_time = pygame.time.get_ticks() + 1000
            
    def end_game(self):
        self.new_game()
        
    def new_game(self):
        """Starts a new game"""
        self.LoadSprites()
        self.LoadMusic()
        self.screen.blit(self.background, self.background.get_rect())
        for sprite in self.sides:
            self.screen.blit(sprite.image, sprite.rect)
        pygame.display.update()