fromsnake_kart_8_assets_1import*classGgeror:def__init__(s):s.elim,s.menuin,s.refresh,s.deltatime,s.deltainit,s.nbofplayers,s.butselect,s.coolclick,s.mapen,s.nbofcheckp,s.glonboftour,s.tempslimite,s.courseaelim,s.nombredebots,s.aipower,s.tempsparelim,=False,0,True,0,0,1,0,-1,0,3,3,60,0,3,2,10defcheckdecode(checkli,G):G.checklist=[(checkli[c][0],checkli[c][1],c,checkli[c][2])forcinrange(len(checkli))];G.nbofcheckp=len(checkli)-1definitmap(G):G.Gscene,G.timer,G.classement,G.timeelim,G.elim,G.checklist=[],-5,[],-5,False,[]fill_rect(0,0,320,40,"black")forupinrange(G.nombredebots+G.nbofplayers):draw_string("J"+str(up+1),up*60,0,"yellow","black")ifG.courseaelim:draw_string("0/oo",up*60,20,"yellow","black")else:draw_string("0/"+str(G.glonboftour),up*60,20,"yellow","black")preground(G.mapen);mapdecode(getmapecode(G.mapen));checkdecode(getcheckcode(G.mapen),G);decodecode(getdecocode(G.mapen))cp=0foraddinrange(G.nbofplayers):G.Gscene.append(Kart(idi=cp,ai=False,G=G))cp+=1foraddinrange(G.nombredebots):G.Gscene.append(Kart(idi=cp,ai=True,G=G))cp+=1defGupdate(G):G.timer+=G.deltatimeG.timeelim+=G.deltatimeifG.timer>=0:draw_string(str(round(G.timer,3)),270,0,"yellow","black")elifG.timer>=-3.5:nb=abs(floor(G.timer))ifnb>3:nb=3draw_string(str(nb)[0:6],270,0,"orange","black")ifG.courseaelim:ifG.timeelim>G.tempsparelim:G.elim=TrueG.timeelim=0ifG.elim:G.elim=Falsenb=G.nombredebots+G.nbofplayersforeleinG.Gscene:nb-=ele.iseliminatedifnb==2:G.menuin=3G.tempget=[]forsnainG.Gscene:ifnotsna.iseliminated:G.tempget.append(sna)iflen(G.tempget)==1:G.classement.insert(0,G.tempget[0].idi)else:G.tempscore=[]forxinrange(len(G.tempget)):G.nbtoadd=(G.tempget[x].nboftour)*G.nbofcheckpifG.tempget[x].nbofcheck==-1:G.nbtoadd+=G.nbofcheckp-1else:G.nbtoadd+=G.tempget[x].nbofcheckG.tempscore.append(G.nbtoadd)forxinrange(len(G.tempscore)):ifG.tempscore.count(min(G.tempscore))>1:G.toelim=-9G.getequa=[]forxinrange(len(G.tempget)):ifG.tempget[x].nbofcheck==-1:G.nbtoadd=(G.tempget[x].nboftour)*G.nbofcheckp+G.nbofcheckp-1else:G.nbtoadd=(G.tempget[x].nboftour)*G.nbofcheckp+G.tempget[x].nbofcheckifG.nbtoadd==min(G.tempscore):G.getequa.append(G.tempget[x])G.getequadist=[]foreleinG.getequa:ifele.nbofcheck+1==G.nbofcheckp:nb=G.nbofcheckp-1else:nb=ele.nbofcheck+1forsrcinG.checklist:ifsrc[2]==nb:G.getequadist.append(distance(ele.x,ele.y,src[0],src[1]))G.toelim=G.getequa[G.getequadist.index(min(G.getequadist))].idiG.classement.append(G.toelim)fortuinG.tempget:iftu.idi==G.toelim:G.tempscore[G.tempget.index(tu)]=G.glonboftour*20*G.nbofcheckpelse:G.classement.insert(0,G.tempget[G.tempscore.index(min(G.tempscore))].idi)G.tempscore[G.tempscore.index(min(G.tempscore))]=G.glonboftour*20*G.nbofcheckpelse:G.tempall=G.GsceneG.tempget=[]forxinrange(G.nombredebots+G.nbofplayers):G.tempget.append(G.tempall[x])G.tempscore=[]forxinrange(len(G.tempget)):ifG.tempget[x].nbofcheck==-1:G.nbtoadd=(G.tempget[x].nboftour)*G.nbofcheckp+G.nbofcheckp-1else:G.nbtoadd=(G.tempget[x].nboftour)*G.nbofcheckp+G.tempget[x].nbofcheckG.tempscore.append(G.nbtoadd)ifG.tempscore.count(min(G.tempscore))>1:G.toelim=-9G.getequa=[]forxinrange(len(G.tempget)):ifG.tempget[x].nbofcheck==-1:G.nbtoadd=(G.tempget[x].nboftour)*G.nbofcheckp+G.nbofcheckp-1else:G.nbtoadd=(G.tempget[x].nboftour)*G.nbofcheckp+G.tempget[x].nbofcheckifG.nbtoadd==min(G.tempscore):G.getequa.append(G.tempget[x])G.getequadist=[]foreleinG.getequa:ifele.nbofcheck+1==G.nbofcheckp:nb=G.nbofcheckp-1else:nb=ele.nbofcheck+1forsrcinG.checklist:ifsrc[2]==nb:G.getequadist.append(distance(ele.x,ele.y,src[0],src[1]))G.toelim=G.getequa[G.getequadist.index(min(G.getequadist))].idielse:G.toelim=G.tempscore.index(min(G.tempscore))forsnainG.Gscene:ifsna.idi==G.toelim:sna.iseliminated=Truewrite_croix(sna.idi)sna.nboftour=G.glonboftour*2G.classement.insert(0,sna.idi)foreleinG.checklist:forkatinG.Gscene:ifkat.nbofcheck+1==ele[2]:ifkat.isia:if (kat.nboftour+1==G.glonboftourandnotG.courseaelim)andkat.nbofcheck==-1:var=distance(ele[0],ele[1],kat.x,kat.y)<ele[3]else:a=sqrt(distance(ele[0],ele[1],kat.x,kat.y))var=kat.lastdist<aifvar:kat.lastdist=2000kat.x=ele[0]kat.y=ele[1]else:kat.lastdist=aelse:var=distance(ele[0],ele[1],kat.x,kat.y)<ele[3]*ele[3]ifvar:kat.nbofcheck+=1ifkat.nbofcheck==0:kat.nboftour+=1fill_rect(kat.idi*60,20,60,20,"black")draw_string(str(kat.nboftour)+"/oo",kat.idi*60,20,"yellow","black")ifkat.nbofcheck==G.nbofcheckp:kat.nbofcheck=-1kat.resdir(G)else:iflen(G.classement)==(G.nombredebots+G.nbofplayers)orG.timer>G.tempslimite:G.menuin=3G.tempall=G.Gsceneiflen(G.classement)!=(G.nombredebots+G.nbofplayers):G.tempget=[]forxinrange(G.nombredebots+G.nbofplayers):ifG.tempall[x].idinotinG.classement:G.tempget.append(G.tempall[x])iflen(G.tempget)>1:G.tempscore=[]forxinrange(len(G.tempget)):ifG.tempget[x].nbofcheck==-1:G.nbtoadd=G.nbofcheckp-1else:G.nbtoadd=(G.tempget[x].nboftour)*G.nbofcheckp+G.tempget[x].nbofcheckG.tempscore.append(G.nbtoadd)forxinrange(len(G.tempscore)):G.classement.append(G.tempget[G.tempscore.index(max(G.tempscore))].idi)G.tempscore[G.tempscore.index(max(G.tempscore))]=-1else:G.classement.append(G.tempget[0].idi)forkatinG.Gscene:ele=G.checklist[kat.nbofcheck+1]ifkat.isia:ifkat.nboftour+1==G.glonboftourandkat.nbofcheck==-1:var=distance(ele[0],ele[1],kat.x,kat.y)<(ele[3]*ele[3])else:a=sqrt(distance(ele[0],ele[1],kat.x,kat.y))var=kat.lastdist<aifvar:kat.x=ele[0]kat.y=ele[1]kat.lastdist=2000else:kat.lastdist=aelse:var=distance(ele[0],ele[1],kat.x,kat.y)<(ele[3]*ele[3])ifvar:kat.nbofcheck+=1ifkat.nbofcheck==0:kat.nboftour+=1fill_rect(kat.idi*60,20,60,20,"black")draw_string(str(kat.nboftour)+"/"+str(G.glonboftour),kat.idi*60,20,"yellow","black")ifkat.nboftour==G.glonboftour:kat.isarrived=TrueG.classement.append(kat.idi)cmap=Falsefordrxinrange(10):fordryinrange(7):fill_rect(kat.idi*60+drx*2+33,20+dry*2,2,2,"white"ifcmapelse"black")cmap=notcmapifkat.nbofcheck==G.nbofcheckp:kat.nbofcheck=-1ifkat.nboftour!=G.glonboftour:kat.resdir(G)foreleinG.Gscene:ele.update(G)ele.affich()defpodiumupdate(G):ifkeydown(KEY_SHIFT):G.menuin=0refreshmenu(G)classKart:def__init__(s,idi,ai,G):s.idi=idis.isia=aiele=G.checklist[0]s.x=ele[0]s.y=ele[1]s.nboftour=0s.nbofcheck=0s.isarrived=Falseele=G.checklist[1]s.dir=angle_to_point(s.x,s.y,ele[0],ele[1])infoforallset(s)defresdir(s,G):ifs.isia:ele=G.checklist[s.nbofcheck+1]s.dir=angle_to_point(s.x,s.y,ele[0],ele[1])defaffich(s):precosval=s.preframecospresinval=s.preframesinstx=0sty=0forxin(0,1,2,3,4,5,6,7,8,9):stx+=precosvalsty+=presinvalset_pixel(int(s.oldx+stx),int(s.oldy+sty),(155,79,3))predirval=0.01745329251994329*s.dirprecosval=cos(predirval)presinval=sin(predirval)stx=0sty=0forxin(0,1,2,3,4,5,6,7,8,9):stx+=precosvalsty+=presinvalset_pixel(int(s.x+stx),int(s.y+sty),s.color)s.preframecos=precosvals.preframesin=presinvals.oldx=s.xs.oldy=s.ys.olddir=s.dirdefupdate(s,G):ifs.iseliminated:returns.cango-=G.deltatime*(s.cango>-1)ifG.timer<0:ifs.isia:returnifkeydown(s.keyso[1]):s.chargingstartval+=G.deltatimeelse:s.chargingstartval=0returnstartinfo(s)ifs.cango<=0andnots.isia:if (s.nboftour!=G.glonboftourorG.courseaelim):speedgeror(s,G.deltatime)predirval=0.01745329251994329*s.dirprecosval=cos(predirval)presinval=sin(predirval)ifs.isiaand(s.nboftour!=G.glonboftourorG.courseaelim):s.speed=randrange(50+10*G.aipower,70+10*G.aipower)s.x+=precosval*s.speed*G.deltatimes.y+=presinval*s.speed*G.deltatimesetx=0sety=0forxtein(-1,0,1,2,3,4,5,6,7,8,9,10):setx+=precosvalsety+=presinvalifs.x+setx>320:s.x=320-setxs.speed=0ifs.y+sety>220:s.y=220-setys.speed=0ifs.x+setx<0:s.x=-setxs.speed=0ifs.y+sety<40:s.y=40-setys.speed=0ifget_pixel(int(s.x+setx),int(s.y+sety))==(255,60,57):s.x-=precosval*s.speed*G.deltatimes.y-=presinval*s.speed*G.deltatimes.speed=0ifs.speed>0andnotkeydown(s.keyso[1]):s.speed-=G.deltatime*30elifs.speed<0andnotkeydown(s.keyso[0]):s.speed+=G.deltatime*30ifabs(s.speed)<0.1andnot(keydown(s.keyso[0])orkeydown(s.keyso[0])):s.speed=0ifkeydown(s.keyso[4])andnots.isiaand(s.nboftour!=G.glonboftourorG.courseaelim)ands.cango<=0:s.coolres-=G.deltatimeifs.coolres<0:s.cango=4s.speed=0forseinG.checklist:nb=s.nbofcheckifnb==-1:nb=len(G.checklist)-1ifse[2]==nb:s.x=se[0]s.y=se[1]ifse[2]==s.nbofcheck+1:s.dir=angle_to_point(s.x,s.y,se[0],se[1])else:s.coolres=3defrefreshpodium(G):basepodium()fillserps(["green","blue","yellow","pink"],G.classement)draw_string("Shift pour aller au menu",20,20,"orange",(0,200,200))defaideupdate(G):ifkeydown(KEY_SHIFT):G.refresh=TrueG.menuin=0defrefreshmenu(G):fill_rect(0,0,320,320,(40,60,250))draw_string("Snake Kart 8",50,0,(255,100,10),(40,60,250))draw_string("Aide",50,18,"orange"ifG.butselect==0else"red",(40,60,250))draw_string("Jouer",50,36,"orange"ifG.butselect==1else"red",(40,60,250))racemodemenuprint(G.butselect,18,G.nbofplayers,G.glonboftour,G.mapen,G.tempslimite,G.courseaelim,G.nombredebots,G.aipower,G.tempsparelim,(40,60,250))defmenuupdate(G):ifmonotonic()-G.coolclick>0.2:ifkeydown(KEY_DOWN):ifG.butselect==9:G.butselect=0else:G.butselect+=1G.refresh=TrueG.coolclick=monotonic()ifkeydown(KEY_UP):G.refresh=TrueG.coolclick=monotonic()ifG.butselect==0:G.butselect=9else:G.butselect-=1ifG.butselect==0:ifkeydown(KEY_OK):G.menuin=1G.refresh=TrueelifG.butselect==1:ifkeydown(KEY_OK):G.menuin=2G.refresh=Trueinitmap(G)elifG.butselect==2:G.nombredebots,G.nbofplayers,G.refresh,G.coolclick=getnbofbotchnage(G.nombredebots,G.nbofplayers,G.refresh,G.coolclick)elifG.butselect==3:ifkeydown(KEY_RIGHT):G.glonboftour+=1G.refresh=TrueG.coolclick=monotonic()ifkeydown(KEY_LEFT):ifG.glonboftour!=1:G.glonboftour-=1G.refresh=TrueG.coolclick=monotonic()elifG.butselect==4:ifkeydown(KEY_RIGHT):ifG.mapen!=4:G.mapen+=1G.refresh=TrueG.coolclick=monotonic()ifkeydown(KEY_LEFT):ifG.mapen!=0:G.mapen-=1G.refresh=TrueG.coolclick=monotonic()elifG.butselect==5:G.tempslimite,G.refresh,G.coolclick=changetimeval(G.tempslimite,G.coolclick,G.refresh)elifG.butselect==6:ifkeydown(KEY_RIGHT)orkeydown(KEY_LEFT):G.courseaelim=0ifG.courseaelimelse1G.refresh=TrueG.coolclick=monotonic()elifG.butselect==7:G.nombredebots,G.nbofplayers,G.refresh,G.coolclick=getnbofplayerchnage(G.nombredebots,G.nbofplayers,G.refresh,G.coolclick)elifG.butselect==8:G.aipower,G.refresh,G.coolclick=changeaipower(G.aipower,G.refresh,G.coolclick)elifG.butselect==9:G.tempsparelim,G.refresh,G.coolclick=changetimeperelim(G.tempsparelim,G.refresh,G.coolclick)defGloop(G):while1:G.deltainit=monotonic()ifG.menuin==2:Gupdate(G)elifG.menuin==0:ifG.refresh:G.refresh=Falserefreshmenu(G)menuupdate(G)elifG.menuin==1:ifG.refresh:G.refresh=Falserefreshaide(G)aideupdate(G)elifG.menuin==3:ifG.refresh:refreshpodium(G)podiumupdate(G)G.refresh=FalseG.deltatime=monotonic()-G.deltainitifG.deltatime!=0:draw_string(str(1/G.deltatime),240,20)launcherwindow();Gloop(Ggeror())
During your visit to our site, NumWorks needs to install "cookies" or use other technologies to collect data about you in order to:
Ensure the proper functioning of the site (essential cookies); and
Track your browsing to send you personalized communications if you have created a professional account on the site and can be contacted (audience measurement cookies).
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.