chute_lj_speedrun.py

Created by rockingchair1196

Created on July 22, 2025

10.5 KB

Chute: The Last Journey

Voici la version Speedrun de Chute: The Last Journey, un mod du jeu Chute d'Antarctus ! ;)

Si vous souhaitez publier un score dans le classement, il est complètement interdit de modifier le code ci-dessous ! 

Pour m'envoyer votre score, ajoutez-moi sur discord (RockingCha1r), ou rejoignez le discord d'Antarctus et Chute : https://discord.gg/H3xjpUc38f

Classements

Fin 1 - Subterranean Ending

1. Varmule - 15.657s

2. RockingCha1r - 37.708s

 

Fin 2 - Reaching the Clouds Ending

1. Varmule - 12.631s

2. Geek Puant - 18.641s

2. RockingCha1r - 21.866s

 

Fin 3 - The 2nd Summit

1. Varmule - 19.023s

2. RockingCha1r - 28.667s

 

Fin 4 - The Left Door Ending

1. Varmule - 24.99s

2. RockingCha1r - 42.349s

 

Fin 5 - The Ascension

- Personne -

 

Fin 5.5 - Dev Room

1. Varmule - 2.209s

2. Lolo - 6.722s

3. Geek Puant - 7.509s

4. RockingCha1r - 8.464s


_D='Chute: The Last Journey'
_C=False
_B=None
_A=True
_L=len
_P=print
_R=range
_i=int
_W=round

from kandinsky import fill_rect as E,color as O,draw_string as DD
from ion import keydown as AZ
from time import sleep as WW,monotonic as MN
from micropython import*
from math import*
kbd_intr(52)
RK=2000
SA=0
BT=0
BC=(255,)*3
PC=100,150,100
sg=255,100,0
SC=0
r,v,b,g,n=(255,0,0),(0,255,0),(0,0,255),(200,200,200),(0,0,0)
SK=[[(3,0,17,30,r),(0,3,12,10,g)],[(0,0,20,30,r),(1,1,18,28,BC)],[(3,0,17,30,r),(5,6,3,3,g),(12,6,3,3,g),[5,13,10,3,g]],[(3,5,16,25,r),(0,8,11,10,g)],[(3,0,17,26,r),(13,26,7,4,r),(3,26,6,4,r),(0,4,12,5,g)]]
LZ=0
LJ=6
MO=0
SM=0
pk=_A
pm='Crash'
FW=0
fe=0
tg=''
LP=[[360,-40],[0,0]]
class Entity:
  def __init__(self,x,y,SP,ma=_A):self.x=float(x);self.y=float(y);self.SP=SP;self.move_alone=ma;self.ch=0;self.gx=self.x+10;self.gy=self.y+30;self.dd=_C;self.cheating=_C;self.dw=[];self.kj=_B
  def dz(self):
    self.drawing_inverse=[_B]*_L(self.dw)
    for i in _R(_L(self.dw)):j=self.dw[i];self.drawing_inverse[i]=[20-j[0]-j[2],j[1],j[2],j[3],j[4]]
  def ct(self,x1,y1,x2,y2):
    if self.x<=x1<=self.x+20 or self.x<=x2<=self.x+20:
      if self.y<=y1<=self.y+30 or self.y<=y2<=self.y+30:return _A
    return _C
  def st(self):
    x=self.x;y=self.y;self.move()
    if self.x!=x or self.y!=y or _L(SH):E(_i(x),_i(y),20,30,BC);self.da()
    if IK:ds((0,)*3)
  def move(self):
    global LZ,LJ,LP,MO,SM,BT,tg
    if IK:ds(BC)
    if self.ch:
      if self.ch>0:
        if self.tomber():self.y+=_i(self.ch*.4);self.ch+=1
        elif not self.tomber():self.y=PT[self.get_plateform()][1]-30
      else:self.y+=_i(self.ch);self.ch+=.8
    if self.move_alone:
      self.x+=self.SP
      if self.tomber():self.SP*=-1;self.x+=self.SP
    else:
      if AZ(3):MO+=1
      x=AZ(3)-AZ(0)
      if x:self.SP=abs(self.SP)*x;self.x+=self.SP
      if(AZ(5)or AZ(1))and not self.tomber():SM+=1;self.y=PT[self.get_plateform()][1]-30;self.ch=-10
      if self.x>320:
        if _L(MP[LJ])>LZ+1:
          if MP[LJ][LZ+1]!=[]:self.dd=_A;LZ+=1;BT=BT*10+1
        else:self.x-=self.SP
      if self.x<0:
        if LZ>0:
          if MP[LJ][LZ-1]!=[]:self.dd=_A;LZ-=1;BT=BT*10+2
          elif LJ!=_L(MP)-4:self.x-=self.SP
        else:self.x-=self.SP
      if self.y>222:
        self.dd=_A
        if _L(MP)>LJ+1:
          if _L(MP[LJ+1])>LZ:
            if MP[LJ+1][LZ]!=[]:self.dd=_A;LJ+=1;BT=BT*10+3
      if self.y<-20 and LJ>0:
        if _L(MP[LJ-1])>LZ:
          if MP[LJ-1][LZ]!=[]:self.dd=_A;LJ-=1;BT=BT*10+4
    if self.tomber()and self.ch==0:self.ch=1
    if self.dd:
      x=_W(MN()-time_start)
      if x<10:x='0'+str(x)
      tg=tg+str(x);LP[0]=[self.x,self.y]
  def tomber(self):
    self.gx=self.x+10;self.gy=self.y+30
    for i in PT:
      if self.gy<=i[1]<=self.gy+self.ch:
        if i[0]<=self.gx-8<=i[0]+i[2]or i[0]<=self.gx+7<=i[0]+i[2]or self.gx-8<=i[0]<=self.gx+7:return _C
    return _A
  def get_plateform(self):
    for i in PT:
      if self.gy<=i[1]<=self.gy+self.ch:
        if i[0]<=self.gx-8<=i[0]+i[2]or i[0]<=self.gx+7<=i[0]+i[2]or self.gx-8<=i[0]<=self.gx+7:return PT.index(i)
  def da(self):
    if self.SP<=0:
      for i in self.dw:E(_i(self.x)+i[0],_i(self.y)+i[1],i[2],i[3],i[4])
    else:
      for i in self.drawing_inverse:E(_i(self.x)+i[0],_i(self.y)+i[1],i[2],i[3],i[4])
def dap(O):
  for i in PT:E(i[0],i[1],i[2],i[3],O)
def draw_all_entities():
  for i in ez:i.move();i.da()
IK=_B
SD=1
SH=[]
SL=[]
for i in _R(20):SL+=[[_i((15**2-(i-10)**2)**.5),i-10]]
def gu(e,kj):return[_i(e.gx),_i(e.y)+8+10,SL[kj][0]*((e.SP>0)*2-1),SL[kj][1],0]
def ds(O):c=gu(av,IK);E(c[0]+c[2]*2-5,c[1]+c[3]*2-2,10,10,O)
MP=[[[],[],[],[[],[],['The Ascension (5/6)']]],[[],[[],[]],[[[170,114,1]],[[170,214,6,8],[310,214,20,8],[170,144,6,8],[15,100,6,8],[170,60,6,8]]],[[],[[11,214,2,8],[250,220,3,2],[280,175,5,8],[157,120,6,8],[60,30,200,8]]]],[[],[[],[]],[[[135,160,1]],[[135,190,10,8],[5,140,3,8],[50,100,6,8],[170,60,6,8],[170,0,6,2]]],[[],[[155,214,10,8],[310,170,5,8],[240,110,5,8],[5,140,5,8]]]],[[],[[],[]],[[[170,184,2],[130,184,-2]],[[120,214,80,8],[10,160,5,8],[158,110,5,8],[310,60,30,8]]],[[],[[300,214,10,8],[60,214,5,8],[-10,60,30,8],[155,0,10,2]]],[],[[],[],['The 2nd Summit (3/6)']]],[[],[[],[]],[[],[]],[[],[[130,214,60,8],[10,174,10,8],[70,134,10,8],[240,94,10,8],[300,54,10,8],[300,0,10,2]]],[],[[],[[250,148,80,8],[100,100,10,8],[250,52,10,8]]],[[[50,118,4],[50,118,3],[50,118,2]],[[250,178,80,8],[0,148,60,8]]],[[],[[270,218,10,4],[70,208,10,4],[0,178,10,8]]]],[[[],[],['Dev Room (6/6)']],[],[[],[[120,217,80,5],[260,187,70,8]]],[[[130,117,1],[180,117,-1]],[[-10,187,70,8],[130,147,60,8],[260,107,70,8],[130,47,60,8],[130,0,60,2]]],[[],[[-10,107,58,8],[272,107,58,8]]],[[[240,150,1]],[[-10,107,55,8],[240,180,40,8]]],[[[160,150,-1]],[[100,180,80,8],[310,140,20,8]]],[[],[[-10,140,50,8],[110,105,10,6],[200,70,8,5],[270,40,6,4],[270,0,10,2]]]],[[[],[[-10,212,150,10],[180,212,150,10]]],[[[170,150,1]],[[-10,212,90,10],[160,190,80,10],[300,160,50,10]]],[[[153,120,1]],[[0,160,80,10],[153,150,15,5],[270,140,60,10],[270,78,15,5],[153,50,15,5],[120,0,80,2]]],[[],[[-10,140,70,10],[220,118,20,5],[148,78,20,5],[40,78,20,5],[148,140,20,5]]],[[],[]],[[],[]],[[],[[-10,218,340,4]]],[[],[[-10,218,340,4]]],[[],[[-10,218,340,4]]],[[],[[-10,218,340,4]]],[[],[[-10,218,340,4]]]],[[[],[[0,0,130,222],[190,0,140,222]]],[[[158,110,1]],[[-10,50,90,10],[270,90,60,8],[158,70,24,9],[150,140,40,9],[225,180,10,7],[270,214,60,8]]],[[[150,155,1]],[[80,130,190,8],[-10,90,20,8],[-10,214,70,8],[150,185,50,8],[310,90,20,8]]],[[[150,100,1]],[[-10,90,70,8],[140,130,40,8],[260,170,70,8]]],[[[260,140,1]],[[135,215,50,7],[-10,170,70,8],[260,170,70,8]]],[[],[[-10,170,70,8],[240,202,40,8],[260,70,70,8],[130,130,60,8]]],[[],[[-10,70,70,8],[260,70,70,8],[30,110,20,8],[270,110,20,8],[-10,0,340,2]]],[[],[[-10,70,70,8],[260,216,70,6],[-10,0,340,2]]],[[[158,80,1],[158,130,1],[158,30,1]],[[-10,216,70,6],[158,160,4,6],[158,110,4,6],[158,60,4,6],[-10,0,340,2],[260,70,70,8]]],[[],[[-10,0,340,2],[-10,70,70,8],[155,70,10,3],[155,120,10,3],[260,70,10,4]]],[[[120,40,-3],[220,40,-5]],[[-10,0,340,2],[-10,70,340,8]]],[[],[],['Reaching the Clouds Ending (2/6)']]],[[[],[[0,0,130,222],[190,0,140,222]]],[[[290,10,-1],[150,130,1]],[[260,40,70,8],[130,80,60,8],[-10,120,70,8],[130,160,60,8],[260,190,70,8],[130,220,60,2],[260,0,70,2]]],[[[130,120,.5],[270,90,.5]],[[-10,40,90,8],[130,150,40,8],[270,120,60,8],[0,190,5,8],[-10,0,70,2]]],[[[220,135,1],[80,135,1]],[[-10,120,60,8],[270,120,60,8],[80,165,30,8],[220,165,30,8]]],[[],[[-10,120,60,8],[135,0,50,7],[270,120,60,8],[80,60,30,8],[220,60,30,8]]],[[[150,60,1]],[[-10,120,70,8],[140,90,40,8],[240,50,40,8]]],[[],[]],[[],[]],[[],[]],[[],[]],[[],[]],[[],[]]],[[[[160,155,.5]],[[40,40,300,8],[0,214,30,8],[160,190,15,8],[280,150,50,8]]],[[[155,140,1]],[[-10,40,340,8],[-10,150,50,8],[130,0,60,6],[155,180,10,6],[280,151,50,8]]],[[[40,110,-.5],[300,110,3]],[[-10,40,340,8],[-10,151,70,8],[260,152,70,8]]],[[],[[-10,40,340,8],[90,180,50,8]]],[[[70,150,-1.1]],[[-10,40,340,8],[-10,180,90,8]]],[[],[[-10,40,340,8]]],[[],[[-10,40,340,8],[260,216,40,6]]],[[],[[-10,40,340,8],[40,216,60,6],[180,160,3,6]]],[[],[[-10,40,340,8]]],[[],[[-10,40,340,8],[140,216,40,6],[280,170,20,6]]],[[],[[-10,40,340,8],[80,150,20,6]]],[[],[[-10,40,340,8]]]],[[],[],[],[],[[],[[-1400,214,1750,8]]],[[],[[-20,214,360,8],[20,174,40,8],[237,132,20,8],[260,94,70,8]]],[[],[[-10,94,70,8],[150,55,10,8],[-20,214,360,8],[260,0,40,2]]],[[],[[-20,214,360,8]]],[[],[[-20,214,360,8],[300,80,40,8]]],[[],[[-20,214,3600,8],[-10,80,70,8],[140,60,40,8],[140,0,40,2]]],[],[[],[],['Subterranean Ending (1/6)']]],[[[],[]],[[],[]],[[],[]],[[],[]],[[],[]]],[[[],[[-10,40,340,8]]],[[[63,190,1]],[[-10,40,340,8],[300,214,10,8],[60,221,10,1]]],[[[145,135,1]],[[-10,40,340,8],[145,165,30,8],[20,120,20,8]]],[[[1073,184,.5]],[[180,214,5,5],[165,160,20,8],[-10,40,340,8],[20,140,10,8]]],[[],[[120,214,5,8],[-10,40,200,8]]]],[[[],[],['The Left Door Ending (4/6)']]]]
def pj(ly,lx):
  global av,ez,PT,SH,pk,LZ,LJ,FW,pk,pm,SC;map=MP[ly][lx]
  if LP[0]==LP[1]:
    if FW<9:FW+=1
    else:LZ,lx=0,0;LJ,ly=6,6;pX=30;pY=150;WW(.1)
  else:FW=0
  E(0,0,320,222,BC);SH=[];PT=map[1];pX=LP[0][0];pY=LP[0][1]
  if pX>=320:pX=10
  elif pX<0:pX=310
  if pY<=-20:pY=170
  elif pY>=222:pY=10
  LP[1]=LP[0]
  if(LZ,LJ)==(0,6):DD(_D,45,50)
  av=Entity(pX,pY,7,_C);av.dw=[i for i in SK[SC]];av.dz();ez=[av]
  for i in map[0]:ez+=[Entity(i[0],i[1],i[2])];ez[-1].dw=[(3,0,17,30,(0,255,0)),(0,3,12,10,(200,200,200))];ez[-1].dz()
  if _L(map)==3:pm=map[2][0];pk=_C
  else:av.da()
zz=MN()
KK=0
def play():
  global IK,SH,SD,ff,pb,KK,zz,RK,fe,SA
  for i in _R(_L(ez)-1,0,-1):
    for j in _R(_L(SH)-1,-1,-1):
      if ez[i].ct(SH[j][0]-5,SH[j][1]-5,SH[j][0]+5,SH[j][1]+5):E(_i(ez[i].x),_i(ez[i].y),20,30,BC);E(SH[j][0]-5,SH[j][1]-5,10,10,BC);del ez[i];del SH[j];break
  if AZ(4)or IK!=_B:
    if AZ(4):
      if IK==_B:IK=1;SA+=1
      ds(BC);IK+=SD
      if IK==_L(SL)-1 or IK==0:SD*=-1
    elif IK!=_B:SH+=[gu(av,IK)];SH[-1][0]+=SH[-1][2];SH[-1][1]+=SH[-1][3];ds(BC);IK=_B
  for i in ez:i.st()
  for i in SH:E(i[0]-5,i[1]-5,10,10,BC)
  if AZ(3):RK+=1
  for i in _R(_L(SH)-1,-1,-1):
    SH[i][0]+=SH[i][2];SH[i][1]+=SH[i][3];SH[i][3]+=1
    if SH[i][1]>222:del SH[i];continue
    E(SH[i][0]-5,SH[i][1]-5,10,10,sg)
  for i in ez[1:]:
    if i.ct(av.x,av.y,av.x+20,av.y+30):av.dd=_A
  dap(PC);KK=MN()-zz
  if KK<.017:WW(.017-KK)
  zz=MN()
  if av.dd:pj(LJ,LZ)
  fe+=1
time_start=0
def menu():
  global time_start,SC
  for i in _R(50):DD(_D,45,i);WW(.0125)
  cc=0;DD('Made by RockingCha1r',60,70);DD("Using Antarctus' work",55,90);DD('Skins by Varmule',80,202);l=1
  while not AZ(4):
    if AZ(1):cc-=1;WW(.1)
    if AZ(2):cc+=1;WW(.1)
    if cc%2==0:DD('> Jouer',45,150)
    else:DD('Jouer  ',45,150)
    if cc%2==1:DD('> Quitter',45,170)
    else:DD('Quitter  ',45,170)
    if AZ(3):SC=(SC+1)%5;WW(.1);E(190,155,40,40,O(255,255,255))
    if AZ(0):SC=(SC-1)%5;WW(.1);E(190,155,40,40,O(255,255,255))
    if l!=SC:
      DD('<   >',175,160)
      for i in SK[SC]:E(i[0]+190,i[1]+155,i[2],i[3],i[4]);l=SC
  if cc%2==0:
    E(45,120,275,120,(255,255,255));ff=_A;pb=MN();time_start=MN();pj(LJ,LZ)
    while pk:play()
  if cc%2==1:raise BaseException('Aurevoir !')
menu()
_P('Verifications Scores:')
a=''
for i in str(tg):
  if _L(a)<20:a+=str(i)
  else:_P(a);a=''
_P(a)
_P('Alpha: '+str(_W(cos((RK+5)*pi/1000),5)))
_P('Beta: '+str(BT))
_P('Delta: '+str(MO)+'x'+str(fe)+'x'+str(SM))
_P('Gamma: '+str(LP[0]))
_P('You finished the '+pm+'!')
if RK==0:_P('Jumpless!')
if SA==1:_P('Shootless!')
_P('Your time: '+str(_W(MN()-time_start,3)),' s')
E(0,0,320,222,(255,255,255))
DD(str('You finished the\n'+' '*_i((160-_L(pm)*5)/10)+pm),80,0)
DD('Chute: Last Journey',70,202)

During your visit to our site, NumWorks needs to install "cookies" or use other technologies to collect data about you in order to:

With the exception of Cookies essential to the operation of the site, NumWorks leaves you the choice: you can accept Cookies for audience measurement by clicking on the "Accept and continue" button, or refuse these Cookies by clicking on the "Continue without accepting" button or by continuing your browsing. You can update your choice at any time by clicking on the link "Manage my cookies" at the bottom of the page. For more information, please consult our cookies policy.