1

is there a way to select parts of my code to hide? I mean like this, I'm trying to code a game with python using vscode, and i would like to hide some parts of it

import pygame, random, os
from pygame.locals import *
pygame.init()
screen = pygame.display.set_mode((1020, 585))
pygame.display.set_caption('2snakes!')

#files location
current_path = os.path.dirname(__file__)
data_path = os.path.join(current_path, 'data')
icon = pygame.image.load(os.path.join(data_path, 'icon.png'))
pygame.display.set_icon(icon)

#variables
direction = 'RIGHT'
direction2 = 'RIGHT'
change_to = direction
change2_to = direction2
fps = 12

#snake
size = 15
s_pos = 60
snake = [(s_pos + size * 2, s_pos),(s_pos + size, s_pos),(s_pos, s_pos)]
s_skin = pygame.Surface((size, size))
s_skin.fill((82,128,208))

#snake2
size2 = 15
s2_pos = 195
snake2 = [(s2_pos + size2 * 2, s2_pos),(s2_pos + size2, s2_pos),(s2_pos, s2_pos)]
s2_skin = pygame.Surface((size2, size2))
s2_skin.fill((208,128,82))

#apple
apple = pygame.Surface((size, size))
apple_pos = ((random.randint(0, 68) * 15, (random.randint(0, 39)) * 15))

#collission
def collision(c1,c2):
    return (c1[0] == c2[0]) and (c1[1] == c2[1])

#game over
def gameOverBlue():
    #pygame.quit()
    print("gameoverblue")

def gameOverRed():
    print("gameoverred")

#update
while True:
    
    #fps
    pygame.time.Clock().tick(fps)

    #quit game
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()

        #input
        elif event.type == pygame.KEYDOWN:
            #snake
            if event.key == ord('w'):
                change_to = 'UP'
            if event.key == ord('s'):
                change_to = 'DOWN'
            if event.key == ord('a'):
                change_to = 'LEFT'
            if event.key == ord('d'):
                change_to = 'RIGHT'   
                    
            #snake2
            if event.key == pygame.K_UP:
                change2_to = 'UP'
            if event.key == pygame.K_DOWN:
                change2_to = 'DOWN'
            if event.key == pygame.K_LEFT:
                change2_to = 'LEFT'
            if event.key == pygame.K_RIGHT:
                change2_to = 'RIGHT'

            #quit game
            if event.key == pygame.K_ESCAPE:
                pygame.event.post(pygame.event.Event(pygame.QUIT))

    
    #smooth snake movement
        #snake
    if change_to == 'UP' and direction != 'DOWN':
        direction = 'UP'
    if change_to == 'DOWN' and direction != 'UP':
        direction = 'DOWN'
    if change_to == 'LEFT' and direction != 'RIGHT':
        direction = 'LEFT'
    if change_to == 'RIGHT' and direction != 'LEFT':
        direction = 'RIGHT'
        
        #snake2
    if change2_to == 'UP' and direction2 != 'DOWN':
        direction2 = 'UP'
    if change2_to == 'DOWN' and direction2 != 'UP':
        direction2 = 'DOWN'
    if change2_to == 'LEFT' and direction2 != 'RIGHT':
        direction2 = 'LEFT'
    if change2_to == 'RIGHT' and direction2 != 'LEFT':
        direction2 = 'RIGHT'

    #movement
        #snake
    new_pos = None
    if direction == 'DOWN':
        new_pos = (snake[0][0], snake[0][1] + size)
    if direction == 'UP':
        new_pos = (snake[0][0], snake[0][1] - size)
    if direction == 'LEFT':
        new_pos = (snake[0][0] - size, snake[0][1])
    if direction == 'RIGHT':
        new_pos = (snake[0][0] + size, snake[0][1])
    if new_pos:
        snake = [new_pos] + snake
        del snake[-1]
    
    new_pos2 = None
    if direction2 == 'DOWN':
        new_pos2 = (snake2[0][0], snake2[0][1] + size2)
    if direction2 == 'UP':
        new_pos2 = (snake2[0][0], snake2[0][1] - size2)
    if direction2 == 'LEFT':
        new_pos2 = (snake2[0][0] - size2, snake2[0][1])
    if direction2 == 'RIGHT':
        new_pos2 = (snake2[0][0] + size2, snake2[0][1])
    if new_pos2:
        snake2 = [new_pos2] + snake2
        del snake2[-1]

   #snake apple collision
    if collision(snake[0], apple_pos):
        snake.append((-20,-20))
        apple_pos = ((random.randint(0, 68) * 15, (random.randint(0, 39)) * 15))
    #snake2 apple collision
    if collision(snake2[0], apple_pos):
        snake2.append((-20,-20))
        apple_pos = ((random.randint(0, 68) * 15, (random.randint(0, 39)) * 15))

    #snake wall collisison
    if snake[0][0] < 0 or snake[0][1] < 0:
        gameOver()
    elif snake[0][0] > 1020 or snake[0][1] > 585:
        gameOver()

    #snake2 wall collisison
    if snake2[0][0] < 0 or snake2[0][1] < 0:
        gameOverRed()
    elif snake2[0][0] > 1020 or snake2[0][1] > 585:
        gameOverRed()

    #self collisison
        if snake[0] in snake[1:]:
            print("self collision")
            print(snake2[0], "is in", snake2[2:])
    if snake2[0] in snake2[1:]:
            print("self collision")
            print(snake2[0], "is in", snake2[2:])

    #rendering
    apple.fill((255,0,0))
    screen.fill((0,0,0))
    screen.blit(apple,apple_pos)
    for pos in snake:
        screen.blit(s_skin,pos)
    for pos2 in snake2:
        screen.blit(s2_skin,pos2)
    pygame.display.update()

this is my code and the code in #smooth snake movement is the part i want to hide, is a big chunk of code that just confuse me when i am looking for some bug or thing in the code

def collision(c1,c2):
    return (c1[0] == c2[0]) and (c1[1] == c2[1])

i would like to just hide it like i can do with a def in vscode for example, is there a way to do it?

Rabbid76
  • 202,892
  • 27
  • 131
  • 174
zac
  • 139
  • 7
  • You can do some [*refactoring*](https://en.wikipedia.org/wiki/Code_refactoring) and spread your code in different files, which is common practice. – Olvin Roght Oct 25 '20 at 21:08
  • Th is question is not related to pygame or python. The question is how parts of the source code can be hidden in general. – Rabbid76 Oct 25 '20 at 21:12

1 Answers1

2

yes, when you have code under a tab: code more code even more code you can click near the "code" on the left and it will automatically shrink all the code inside (in this case the "more code" and the "even more code".

you can also try to find a code shrinker on the "extensions" button on the left of vscode.