Vous êtes Cubito ! Baladez-vous dans des salles remplies de pièces et essayez d’avoir le meilleur score à l’arrivée. Découvrez la création de Cubito ici : https://nsi.xyz/Cubito -Version 1.11, utilisable directement sur le workshop ou sur la calculatrice.
# Cubito's Adventures v.1.1 NW 30/10/2020 # https://nsi.xyz/Cubito # par Clement Raphaël et Palix Gabin from kandinsky import * from ion import * from random import * from time import * try: get_keys() os = (192,53,53) #Se met à la couleur de l'OS alternatif Omega except: os = (255,183,52) #Se met à la couleur de l'OS de base Epsilon ja=(255,255,0) ble=(0,255,255) bl=(255,255,255) no=(0,0,0) def text_center(text,x=160,y=110,col1=(255,255,255),col2=(255,255,255)): #Centre un texte draw_string(text, x-len(text)*10 // 2, y, col1, col2) def menu(): global niveau fill_rect(0,0,320,222,no) fill_rect(0,204,320,18,os) text_center("nsi.xyz/cubito par Gab & Raph",160,204,bl,os) text_center("Bienvenue dans :",160,7,ja,no) for i in range(5,320,10): set_pixel(i,30,ja) sleep(0.05) text_center("Cubito's Adventures!",160,38,ja,(3,34,76)) text_center("Pour bouger, utilise les fleches",160,61,ja,no) text_center("Mais, attention aux trous!",160,81,ja,no) text_center("Pour gagner, essaie d'avoir le",160,121,ja,no) text_center("plus de points!",160,141,ja,no) sleep(4) text_center("A toi de jouer!",160,166,ja,no) text_center('Appuie sur "OK" ou "clear"',160,186,ja,no) while not keydown(5): if keydown(4) or keydown(17): jeu() elif keydown(36): while not keydown(5): if keydown(43): fill_rect(0,0,320,222,no) niveau=42 jeu() def initiation(): #Génère les pièces fill_rect(0,0,320,222,no) for j in range(5,222,10): for i in range(5,320,10): set_pixel(i,j,bl) initialisation() position = [0,0]#x,y mvt = [0,0]#x,y global score score=0 niveau=1 def initialisation(etat=0): global score, niveau if etat == 0: fill_rect(0,204,320,18,os) draw_string("Score :",0,204,bl,os) draw_string("Niveau :",160,204,bl,os) else: draw_string(str(score),80,204,bl,os) draw_string(str(niveau),250,204,bl,os) def personnage(aff=0): if aff==0: fill_rect(position[0], position[1], 10,10,no) else: fill_rect(position[0], position[1], 10,10,ja) def collision(): '''on vérifie les collisions, si collisions, on retourne false, sinon true on teste mvt[0] et mvt[1]''' return True def test_scale(): global position, longueur_scale, mvt if get_pixel(position[0]+4,position[1]-39)==(248,252,248): #Teste si on est en dessous d'une échelle personnage(0) position[1]-=longueur_scale+10 position[0]=position[0] mvt[1]=position[1] personnage(1) def points(): global score, position, mvt, longueur_scale if get_pixel(mvt[0]+5,mvt[1]+5)!=(248,252,248): #Teste s'il n'y pas de pièce à l'endroit du personnage score-=1 else: score+=1 def vide(): global position, mvt, score, niveau, chute_42 while get_pixel(position[0]+5,position[1]+15)!=(248,252,248) and position[1]!=190: #Teste la chute personnage(0) position[0]=position[0] position[1]+=10 mvt[1]=position[1] score-=1 personnage(1) sleep(1) if niveau==42: chute_42=True def fin_niv(): global niveau, position, mvt, score, abscisse_arrivee, ordonnee_arrivee niveau_suivant=False if niveau==1 and position[0]==310 and position[1]==190: text_center("Tu as reussi le niveau 1!",160,42,ja,no) text_center("Avec un score de "+str(score),160,62,ja,no) niveau_suivant=True elif niveau==2 and position[0]==150 and position[1]==70: text_center("Tu as reussi le niveau 2!",160,42,ja,no) text_center("Avec un score de "+str(score),160,62,ja,no) niveau_suivant=True elif niveau==3 and position[0]==50 and position[1]==100: text_center("Tu as reussi le niveau 3!",160,42,ja,no) text_center("Avec un score de "+str(score),160,62,ja,no) niveau_suivant=True elif niveau==4 and position[0]==240 and position[1]==130: text_center("Tu as reussi le niveau 4!",160,42,ja,no) text_center("Avec un score de "+str(score),160,62,ja,no) niveau_suivant=True elif niveau==5 and position[0]==130 and position[1]==190: text_center("Tu as reussi le niveau 5!",160,42,ja,no) text_center("Avec un score de "+str(score),160,62,ja,no) niveau_suivant=True elif niveau==42 and position[0]==abscisse_arrivee and position[1]==ordonnee_arrivee: text_center("Tu as reussi le niveau 42!",160,42,ja,no) text_center("Avec un score SUPREME de "+str(score),160,62,ja,no) niveau_suivant=True if niveau_suivant: sleep(4.2) if niveau==42: fin_42() else: niveau+=1 position = [0, 0] mvt = [0, 0] score=0 jeu() def scale(): #Trace l'échelle pour chaque niveau global abscisse_scale, longueur_scale, ordonnee_scale, ordonnee_scale42 longueur_scale=40 if niveau==1: ordonnee_scale=60 fill_rect(abscisse_scale,60,10,longueur_scale,bl) elif niveau==2: ordonnee_scale=80 fill_rect(abscisse_scale,80,10,longueur_scale,bl) elif niveau==3: ordonnee_scale=50 fill_rect(abscisse_scale,50,10,longueur_scale,bl) elif niveau==4: ordonnee_scale=140 fill_rect(abscisse_scale,140,10,longueur_scale,bl) elif niveau==5: ordonnee_scale=130 fill_rect(abscisse_scale,130,10,longueur_scale,bl) elif niveau==42: ordonnee_scale=ordonnee_scale42 fill_rect(abscisse_scale,ordonnee_scale42,10,longueur_scale,bl) def move(): global postion, mvt bordure = [0,0,190,310] # x min, y min, y max, x max (Pour respecter l'ordre des keydowns) while not keydown(5): vide() scale() is_key_pressed = False if keydown(0): #gauche mvt[0] = max(position[0]-10, bordure[0]) is_key_pressed = True elif keydown(1): #haut mvt[1] = max(position[1]-10, bordure[1]) is_key_pressed = True elif keydown(2): #bas mvt[1] = min(position[1]+10, bordure[2]) is_key_pressed = True elif keydown(3): #droite mvt[0] = min(position[0]+10, bordure[3]) is_key_pressed = True if is_key_pressed and collision(): test_scale() points() sleep(0.25) fin_niv() initialisation(1) personnage(0) position[0] = mvt[0] position[1] = mvt[1] personnage(1) def partie(): global niveau, position, score, abscisse_scale, ordonnee_scale42, abscisse_arrivee, ordonnee_arrivee initiation() v=[] for i in range(0,320,10): v.append(i) abscisse_scale=choice(v) ordonnee_scale42=choice(v[0:19]) if niveau==1: fill_rect(310,190,10,10,ble) elif niveau==2: fill_rect(150,70,10,10,ble) elif niveau==3: fill_rect(50,100,10,10,ble) elif niveau==4: fill_rect(240,130,10,10,ble) elif niveau==5: fill_rect(130,190,10,10,ble) elif niveau==42: x, y = [], [] for i in range(0,310,10): x.append(i) for j in range(20,190,10): y.append(j) abscisse_arrivee=choice(x) ordonnee_arrivee=choice(y) fill_rect(abscisse_arrivee,ordonnee_arrivee,10,10,ble) move() def fin_42(): fill_rect(0,0,320,222,no) text_center("Tu as fini le dernier niveau!!",160,42,bl,no) fill_rect(0,204,320,18,os) draw_string("Score :",0,204,bl,os) draw_string("Niveau :",160,204,bl,os) sleep(4.2) def jeu(): global niveau while niveau!=6: fill_rect(0,0,320,222,no) sleep(2) partie() fill_rect(0,0,320,222,no) text_center("Tu as gagné!!!",160,42,ja,no) fill_rect(0,204,320,18,os) draw_string("Score :",0,204,bl,os) draw_string("Niveau :",160,204,bl,os) sleep(4.2) menu()