<commit_before>#!/usr/bin/env python
#--------------------------------------------------
# S1mplePlatformer
# Un semplice platform game privo di scorrimento
# By Penaz
#--------------------------------------------------
#Imports
#--------------------------------------------------
import pygame
from pygame.locals import *
from sys import exit
#--------------------------------------------------
#Inizializziamo Pygame, schermo, clock e titolo della finestra
#--------------------------------------------------
pygame.init()
screen=pygame.display.set_mode((640,480),0,32)
pygame.display.set_caption("The Glitch 0.0.1 SNAPSHOT")
clock=pygame.time.Clock()           #Il clock serve per evitare differenze prestazionali
#--------------------------------------------------
# Variabili
#--------------------------------------------------
todraw=pygame.sprite.Group()            #Gruppo di sprite da disegnare
plats=pygame.sprite.Group()             #Gruppo di piattaforme
glitches={"WallClimb":False,"StickyCeil":False,"MultiJump":False,"HighJump":False,"Invincibility":False,"PermBodies":False}
#--------------------------------------------------
# Classe piattaforma
#--------------------------------------------------
class Platform(pygame.sprite.Sprite):
    def __init__(self,x,y):
        pygame.sprite.Sprite.__init__(self)     #Inizializzo la superclasse Sprite
        self.image=pygame.Surface((20,20))      #L'immagine è un quadrato 20x20px
        self.image.fill((0,255,0))              #Il colore è rosso
        self.rect=self.image.get_rect()         #Ricavo il rect per le collisioni
        self.rect.x=x                           #Posizionamento orizzontale
        self.rect.y=y                           #Posizionamento verticale
        plats.add(self)                         #Aggiungo al gruppo piattaforme
    def update(self):
        screen.blit(self.image, (self.rect.x, self.rect.y))     #Stampa su schermo l'immagine della piattaforma
#--------------------------------------------------v
# Classe spike
#--------------------------------------------------v
class Spike(Platform):
    def __init__(self,x,y):
        Platform.__init__(self,x,y)
        self.image.fill((255,0,0))
#--------------------------------------------------v
# Classe giocatore
#--------------------------------------------------
class Player(pygame.sprite.Sprite):
    move_x=0            #Movimento orizzontale
    move_y=0            #Movimento Verticale
    onground=False      #Bool che rappresenta lo stato in aria/a terra del giocatore
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image=pygame.Surface((10,10))      #È un quadrato 10x10px
        self.image.fill((255,255,255))          #Colore Bianco
        self.rect=self.image.get_rect()
        self.rect.x=20
        self.rect.y=30
        todraw.add(self)
    def update(self):
        self.rect.x+=self.move_x                #Muovi orizzontalmente
        xcoll()                                 #Controlla le eventuali collisioni destra/sinistra
        self.rect.y+=self.move_y                #Muovi verticalmente
        ycoll()                                 #Controlla le collisioni sopra/sotto
        #Le 4 operazioni precedenti vanno fatte in quest'ordine altrimenti potrebbero esserci dei problemi di movimento
        screen.blit(self.image, (self.rect.x, self.rect.y))
#----------------------------------------------------------------------------------------------------
# Le collisioni vengono controllate separatamente per ogni asse, altrimenti
# potrebbero esserci degli strani "teletrasporti"
#----------------------------------------------------------------------------------------------------
#--------------------------------------------------
# Controllo Collisione orizzontale
#--------------------------------------------------
def xcoll():
    collision=pygame.sprite.spritecollide(player, plats, False)     #Controllo la collisione e ricavo i blocchi con cui collido
    for block in collision:         #Per ogni blocco con cui collido
        if player.move_x>0:             #Se mi muovevo verso destra
            player.rect.right=block.rect.left       #Il lato destro del giocatore corrisponderà con quello sinistro del blocco
            if glitches["WallClimb"]:
                player.move_y=-1
        if player.move_x<0:                         #|
            player.rect.left=block.rect.right       #|Viceversa per il lato sinistro
            if glitches["WallClimb"]:
                player.move_y=-1
#--------------------------------------------------
# Controllo collisione verticale
#--------------------------------------------------
def ycoll():
        collision=pygame.sprite.spritecollide(player, plats, False)         #Controllo la collisione e ricavo i blocchi con cui collido
        player.onground=False           #Porto a falso la variabile "giocatore poggia sul terreno", necessario per le cadute dalle piattaforme
        for block in collision:     #Per ogni blocco con cui collido
            if player.move_y==0:            #Se non mi muovo
                player.onground=True        #Sono a terra
            if player.move_y<0:         #Se mi muovo verso l'alto
                player.rect.top=block.rect.bottom       #La parte alta del giocatore corrisponderà con quella bassa del blocco
                if glitches["StickyCeil"]:
                    player.move_y=-1
                else:
                    player.move_y=0     #serve per evitare che il giocatore si "appiccichi" temporaneamente al soffitto
                player.onground=False       #Il giocatore sta saltando
            if player.move_y>0:         #Se mi muovo verso il basso (sto cadendo)
                player.rect.bottom=block.rect.top       #La parte inferiore del giocatore corrisponderà a quella superiore del blocco
                player.onground=True                    #Il giocatore poggia su una superficie
            if isinstance(block,Spike):
                if glitches["Invincibility"]:
                    pass
                else:
                    if glitches["PermBodies"]:
                        #TODO: Code the permanent bodies glitch
                    #Player death
                    #TODO: Code the player death
#--------------------------------------------------
# Costruzione del livello
#--------------------------------------------------
def build():
    #----------------------------------------------------------------------------------------------------
    # Una semplice routine per costruire il livello, ogni "#" corrisponde<commit_msg>Added coding declaration. Small bugfix<commit_after>#!/usr/bin/env python
# -*- coding: utf-8 -*-
#--------------------------------------------------
# S1mplePlatformer
# Un semplice platform game privo di scorrimento
# By Penaz
#--------------------------------------------------
#Imports
#--------------------------------------------------
import pygame
from pygame.locals import *
from sys import exit
#--------------------------------------------------
#Inizializziamo Pygame, schermo, clock e titolo della finestra
#--------------------------------------------------
pygame.init()
screen=pygame.display.set_mode((640,480),0,32)
pygame.display.set_caption("The Glitch 0.0.1 SNAPSHOT")
clock=pygame.time.Clock()           #Il clock serve per evitare differenze prestazionali
#--------------------------------------------------
# Variabili
#--------------------------------------------------
todraw=pygame.sprite.Group()            #Gruppo di sprite da disegnare
plats=pygame.sprite.Group()             #Gruppo di piattaforme
glitches={"WallClimb":False,"StickyCeil":False,"MultiJump":False,"HighJump":False,"Invincibility":False,"PermBodies":False}
#--------------------------------------------------
# Classe piattaforma
#--------------------------------------------------
class Platform(pygame.sprite.Sprite):
    def __init__(self,x,y):
        pygame.sprite.Sprite.__init__(self)     #Inizializzo la superclasse Sprite
        self.image=pygame.Surface((20,20))      #L'immagine è un quadrato 20x20px
        self.image.fill((0,255,0))              #Il colore è rosso
        self.rect=self.image.get_rect()         #Ricavo il rect per le collisioni
        self.rect.x=x                           #Posizionamento orizzontale
        self.rect.y=y                           #Posizionamento verticale
        plats.add(self)                         #Aggiungo al gruppo piattaforme
    def update(self):
        screen.blit(self.image, (self.rect.x, self.rect.y))     #Stampa su schermo l'immagine della piattaforma
#--------------------------------------------------v
# Classe spike
#--------------------------------------------------v
class Spike(Platform):
    def __init__(self,x,y):
        Platform.__init__(self,x,y)
        self.image.fill((255,0,0))
#--------------------------------------------------v
# Classe giocatore
#--------------------------------------------------
class Player(pygame.sprite.Sprite):
    move_x=0            #Movimento orizzontale
    move_y=0            #Movimento Verticale
    onground=False      #Bool che rappresenta lo stato in aria/a terra del giocatore
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image=pygame.Surface((10,10))      #È un quadrato 10x10px
        self.image.fill((255,255,255))          #Colore Bianco
        self.rect=self.image.get_rect()
        self.rect.x=20
        self.rect.y=30
        todraw.add(self)
    def update(self):
        self.rect.x+=self.move_x                #Muovi orizzontalmente
        xcoll()                                 #Controlla le eventuali collisioni destra/sinistra
        self.rect.y+=self.move_y                #Muovi verticalmente
        ycoll()                                 #Controlla le collisioni sopra/sotto
        #Le 4 operazioni precedenti vanno fatte in quest'ordine altrimenti potrebbero esserci dei problemi di movimento
        screen.blit(self.image, (self.rect.x, self.rect.y))
#----------------------------------------------------------------------------------------------------
# Le collisioni vengono controllate separatamente per ogni asse, altrimenti
# potrebbero esserci degli strani "teletrasporti"
#----------------------------------------------------------------------------------------------------
#--------------------------------------------------
# Controllo Collisione orizzontale
#--------------------------------------------------
def xcoll():
    collision=pygame.sprite.spritecollide(player, plats, False)     #Controllo la collisione e ricavo i blocchi con cui collido
    for block in collision:         #Per ogni blocco con cui collido
        if player.move_x>0:             #Se mi muovevo verso destra
            player.rect.right=block.rect.left       #Il lato destro del giocatore corrisponderà con quello sinistro del blocco
            if glitches["WallClimb"]:
                player.move_y=-1
        if player.move_x<0:                         #|
            player.rect.left=block.rect.right       #|Viceversa per il lato sinistro
            if glitches["WallClimb"]:
                player.move_y=-1
#--------------------------------------------------
# Controllo collisione verticale
#--------------------------------------------------
def ycoll():
        collision=pygame.sprite.spritecollide(player, plats, False)         #Controllo la collisione e ricavo i blocchi con cui collido
        player.onground=False           #Porto a falso la variabile "giocatore poggia sul terreno", necessario per le cadute dalle piattaforme
        for block in collision:     #Per ogni blocco con cui collido
            if player.move_y==0:            #Se non mi muovo
                player.onground=True        #Sono a terra
            if player.move_y<0:         #Se mi muovo verso l'alto
                player.rect.top=block.rect.bottom       #La parte alta del giocatore corrisponderà con quella bassa del blocco
                if glitches["StickyCeil"]:
                    player.move_y=-1
                else:
                    player.move_y=0     #serve per evitare che il giocatore si "appiccichi" temporaneamente al soffitto
                player.onground=False       #Il giocatore sta saltando
            if player.move_y>0:         #Se mi muovo verso il basso (sto cadendo)
                player.rect.bottom=block.rect.top       #La parte inferiore del giocatore corrisponderà a quella superiore del blocco
                player.onground=True                    #Il giocatore poggia su una superficie
            if isinstance(block,Spike):
                if glitches["Invincibility"]:
                    pass
                else:
                    if glitches["PermBodies"]:
                        #TODO: Code the permanent bodies glitch
                        pass
                    #Player death
                    #TODO: Code the player death
#--------------------------------------------------
# Costruzione del livello
#--------------------------------------------------
def build():
    #----------------------------------------------------------------------------------------------------
    # Una semplice routine per costruire il livello, ogni "#" corrisponde
{'fraction_non_alphanumeric': 0.25597834260791097, 'fraction_numerical': 0.009700706873214017, 'mean_word_length': 1.2445569620253165, 'pattern_counts': {'":': 12, '<': 7, '<?xml version=': 0, '>': 7, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 4, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7157481', 'n_tokens_mistral': 3470, 'n_tokens_neox': 3400, 'n_words': 854}