Example #1
0
def resetGame(mySnake):
    # Recreate Level 1
    nibble.level = 1
    global currentLevel
    currentLevel = Level(1, nibble.total_columns, nibble.total_lines)

    # Draw level
    nibble.drawLevel(currentLevel)

    # Zero out total score
    nibble.score = 0

    # Reset snake's attributes
    mySnake.resetSnake(nibble.center_x, nibble.center_y)
    mySnake.lives = 3

    # Zero the apples eaten
    global apples_eaten
    apples_eaten = 0

    # Show the first Apple
    global apple
    apple = Apple(nibble.total_columns, nibble.total_lines, currentLevel,
                  mySnake)
    pygame.draw.rect(
        nibble.screen, (0, 255, 0),
        pygame.Rect(apple.getX(), apple.getY(), mySnake.size, mySnake.size), 0)
Example #2
0
def resetLevel(mySnake):
    # Recreate Level 1
    global currentLevel
    currentLevel = Level(nibble.level,nibble.total_columns,nibble.total_lines) 

    # Draw level
    nibble.drawLevel(currentLevel)
    
    # Reset snake's attributes
    mySnake.resetSnake(nibble.center_x,nibble.center_y)
	
	# Zero the apples eaten
    global apples_eaten
    apples_eaten = 0
    
	# Show the first Apple
    global apple
    apple = Apple(nibble.total_columns,nibble.total_lines,currentLevel,mySnake)
    pygame.draw.rect(nibble.screen, (0,255, 0), pygame.Rect(apple.getX(), apple.getY(), mySnake.size, mySnake.size),0)	
Example #3
0
# Create level
currentLevel = Level(1, nibble.total_columns, nibble.total_lines)

# Draw level
nibble.drawLevel(currentLevel)
nibble.displayMessage("Level" + str(nibble.level) + ",        Push Space")
nibble.drawLevel(currentLevel)

# Create a Snake
mySnake = Snake(nibble.center_x, nibble.center_y)

# Show the first Apple
apple = Apple(nibble.total_columns, nibble.total_lines, currentLevel, mySnake)
pygame.draw.rect(
    nibble.screen, (0, 255, 0),
    pygame.Rect(apple.getX(), apple.getY(), mySnake.size, mySnake.size), 0)

pygame.mixer.init(48000, -16, 1, 1024)
sound_eat = pygame.mixer.Sound(
    os.path.dirname(os.path.abspath(__file__)) + '/hit.wav')
sound_crash = pygame.mixer.Sound(
    os.path.dirname(os.path.abspath(__file__)) + '/sounds/crash.ogg')
sound_game_over = pygame.mixer.Sound(
    os.path.dirname(os.path.abspath(__file__)) + '/sounds/reverse.ogg')


def resetLevel(mySnake):
    # Recreate Level 1
    global currentLevel
    currentLevel = Level(nibble.level, nibble.total_columns,
                         nibble.total_lines)
Example #4
0
class SnakeGame():
    def __init__(self):
        self.score = 0
        self.snake = Snake(SCREEN_SIZE[0] // 2, SCREEN_SIZE[1] // 2)
        self.apple = Apple()
        self.apple.placeApple(self.snake.getBody(), SCREEN_SIZE[0],
                              SCREEN_SIZE[1])
        self.scorePosX = SCREEN_SIZE[0] // 2 - 10
        self.eatingSound = pygame.mixer.Sound('Eating.ogg')

    def reset(self):
        self.score = 0
        self.snake = Snake(SCREEN_SIZE[0] // 2, SCREEN_SIZE[1] // 2)
        self.apple.placeApple(self.snake.getBody(), SCREEN_SIZE[0],
                              SCREEN_SIZE[1])

    def isSnakeCollision(self):
        body = self.snake.getBody()
        head = body[0]
        # check left and righside screen
        if ((head[0] < 0 or head[0] >
             (SCREEN_SIZE[0] - self.snake.getSize()))):
            return True
        # check top and bottom of screen
        if ((head[1] < 0 or head[1] >
             (SCREEN_SIZE[1] - self.snake.getSize()))):
            return True
        # check if snake hit self
        if (len(body) > 3):
            for i in range(3, len(body)):
                if isSquareHit(head, body[i], self.snake.getSize()):
                    return True
        return False

    def isAppleCollision(self):
        head = self.snake.getBody()[0]
        return isSquareHit((self.apple.getX(), self.apple.getY()), head,
                           self.snake.getSize())

    def drawScore(self, surface):
        scoreFont = pygame.font.Font(None, 40)
        scoreSurface = scoreFont.render(str(self.score), True, (255, 255, 255))
        surface.blit(scoreSurface, (self.scorePosX, 0))

    def drawSplashScreen(self, surface, text, color):
        """ Surface, String --> void
        Draws text centered at the center of the given Surface.
        """
        splashFont = pygame.font.Font(None, 100)
        splashSurface = splashFont.render(text, True, color)
        textXPos = (SCREEN_SIZE[0] // 2) - (splashFont.size(text)[0] // 2)
        textYpos = (SCREEN_SIZE[1] // 2) - (splashFont.size(text)[1] // 2)
        surface.blit(splashSurface, (textXPos, textYpos))

    def handleQuit(self, event):
        if event.type == KEYDOWN:
            if event.key == K_ESCAPE:
                pygame.quit()
                exit()
        elif event.type == QUIT:
            pygame.quit()
            exit()

    def play(self):
        self.drawSplashScreen(SCREEN, "SNAKE", (255, 255, 255))
        pygame.display.flip()
        while True:  # starting splashcreen
            event = pygame.event.wait()
            self.handleQuit(event)
            if event.type == KEYDOWN:
                break

        while True:  # main loop for running the game
            pygame.event.pump()
            SCREEN.blit(BG, (0, 0))  # Makes clean background
            self.apple.drawApple(SCREEN, self.snake.getSize())
            self.snake.drawSnake(SCREEN)
            self.drawScore(SCREEN)
            pygame.display.flip()

            # Handle Key events
            didChangeDir = False
            for event in pygame.event.get():
                self.handleQuit(event)
                if event.type == KEYDOWN and not didChangeDir:
                    didChangeDir = self.snake.changeDir(event)

            # Move the snake
            self.snake.moveSnake()

            # Handle Collisions
            if self.isSnakeCollision():
                self.snake.drawSnake(
                    SCREEN)  # update the snake's position to when it crashed
                self.drawSplashScreen(SCREEN, "GAME OVER", (169, 169, 169))
                pygame.display.flip()
                while True:  # game over screen
                    event = pygame.event.wait()
                    self.handleQuit(event)
                    if event.type == KEYDOWN:
                        self.reset()
                        break
            if self.isAppleCollision():
                self.eatingSound.play()
                self.apple.placeApple(self.snake.getBody(), SCREEN_SIZE[0],
                                      SCREEN_SIZE[1])
                self.snake.addSegment()
                self.score += 1

            # Game Speed
            pygame.time.delay(80)
Example #5
0
print "script's dir: " + os.path.dirname(os.path.abspath(__file__))

# Create level
currentLevel = Level(1,nibble.total_columns,nibble.total_lines)
    
# Draw level
nibble.drawLevel(currentLevel)
nibble.displayMessage("Level" + str(nibble.level) + ",        Push Space")
nibble.drawLevel(currentLevel)

# Create a Snake
mySnake = Snake(nibble.center_x,nibble.center_y)

# Show the first Apple
apple = Apple(nibble.total_columns,nibble.total_lines,currentLevel,mySnake)
pygame.draw.rect(nibble.screen, (0, 255, 0), pygame.Rect(apple.getX(), apple.getY(), mySnake.size, mySnake.size),0)

pygame.mixer.init(48000, -16, 1, 1024)
sound_eat = pygame.mixer.Sound(os.path.dirname(os.path.abspath(__file__)) + '/hit.wav')
sound_crash = pygame.mixer.Sound(os.path.dirname(os.path.abspath(__file__)) + '/sounds/crash.ogg')
sound_game_over = pygame.mixer.Sound(os.path.dirname(os.path.abspath(__file__)) + '/sounds/reverse.ogg')

def resetLevel(mySnake):
    # Recreate Level 1
    global currentLevel
    currentLevel = Level(nibble.level,nibble.total_columns,nibble.total_lines) 

    # Draw level
    nibble.drawLevel(currentLevel)
    
    # Reset snake's attributes
Example #6
0
class App:
    def __init__(self):
        self.width = 600
        self.height = 600
        self.player = Player()
        self.block = 10
        self.background = (0, 0, 0)
        pygame.init()
        self.screen = pygame.display.set_mode((self.width, self.height))
        self.running = True
        self.clock = pygame.time.Clock()
        self.apple = Apple()
        self.active = False
        Tk().wm_withdraw()

    def drawSnake(self):
        # get positions of snake and turn into rectangles
        snake_size = len(self.player.x)

        for i in range(snake_size):

            if i == 0:  # if snake head
                head = pygame.Rect(self.player.x[i], self.player.y[i],
                                   self.block, self.block)
                pygame.draw.rect(self.screen, self.player.head_color, head)

            else:  # if body
                rect = pygame.Rect(self.player.x[i], self.player.y[i],
                                   self.block, self.block)
                pygame.draw.rect(self.screen, self.player.body_color, rect)

    def drawGame(self):
        for y in range(self.height // 10):
            for x in range(self.width // 10):
                rect = pygame.Rect(x * self.block, y * self.block, self.block,
                                   self.block)
                pygame.draw.rect(self.screen, self.background, rect)

    def updateGame(self):
        self.screen.fill(self.background)
        self.drawSnake()
        self.drawApple()
        pygame.display.set_caption('Snake Game. Your Score is: %s' %
                                   (self.player.score))
        pygame.display.update()

    def drawApple(self):
        apple = pygame.Rect(self.apple.getX(), self.apple.getY(), self.block,
                            self.block)
        pygame.draw.rect(self.screen, self.apple.color, apple)

    def startOver(self):
        self.player.score = 0
        self.player.length = 0
        self.player.direction = None
        self.player.x = [50]
        self.player.y = [50]
        self.player.speed = 0
        self.active = False

    def endApp(self):
        self.running = False

    def startApp(self):
        self.drawGame()
        self.drawSnake()
        self.drawApple()
        pygame.display.flip()
        self.player.speed = 0

        while self.running:
            if self.active:
                self.clock.tick(40 + (self.player.speed * 5))
                for event in pygame.event.get():
                    if event.type == pygame.QUIT:
                        self.endApp()

                    if event.type == pygame.KEYDOWN:
                        self.player.change_direction(event.key)

                # if snake eats apple
                if self.player.snakeHeadPos() == self.apple.pos():

                    # add snake body
                    self.player.add_body()

                    # generate new apple
                    self.apple.newApple()

                    #increase score and speed
                    self.player.incScore()
                    self.player.speed += 1

                # if snake hits itself
                if self.player.snakeHeadPos() in self.player.snakeBodyPos():
                    if messagebox.askyesnocancel(
                            'Game over.',
                            'You ran into yourself! Do you want to start over?'
                    ) == True:
                        self.startOver()
                    else:
                        self.endApp()

                #if snake hits edge of window
                if self.player.snakeHeadY() < 0 or self.player.snakeHeadY(
                ) == 600 or self.player.snakeHeadX(
                ) < 0 or self.player.snakeHeadX() == 600:
                    if messagebox.askyesnocancel(
                            'Game over.',
                            'You ran into yourself! Do you want to start over?'
                    ) == True:
                        self.startOver()
                    else:
                        self.endApp()

                self.player.move()
                self.updateGame()

            else:
                #waits for key input
                for event in pygame.event.get():
                    if event.type == pygame.QUIT:
                        self.endApp()

                    if event.type == pygame.KEYDOWN:
                        self.player.change_direction(event.key)
                        self.active = True