Quest (version2)
Game
good luck!
Sincerely,
Wilson
from math import * from kandinsky import fill_rect as F from random import * from ion import * from kandinsky import * from time import * from random import randint as R from random import randrange as RR from random import choice as CH from ion import keydown as K from kandinsky import draw_string as STR edefeat=0 game=1 SW=322 SH=222 low=100 med=150 H=255 BL=(0,0,0) bg=(R(0,H),R(0,H),R(0,H)) area=0 world=1 Mdir=0 Mt=0 Me=20 Mx=R(low,H) My=190 Mw=16 Mh=10 Mc=(R(0,H),R(0,H),R(0,H)) #stars c1=(R(0,H),R(0,H),R(0,H)) c2=(H,0,0) crit_t=0 star_t=0 nb=R(20,60) st = [0]*nb pr = [0]*nb NR=BL def point(): return [RR(SW),0,RR(1,10)] for i in range(nb): st[i] = point() #? F(0,0,SW,SH,NR) J=0 fall=0 J_c=0 max_j=med Left=0 Right=1 Gy=R(90,215) Lw=R(40,100) Lx=R(100,SW-Lw) Lh=150 Ly=Gy Lc=BL Lfall=0 Lrise=0 psc=0 pe=20 pscale=5 pw=12 ph=22 px=30 py=Ly-ph pc=(7,20,170) pside=25 #food Qt=0 Qsize=1 Qx=R(low,200) Qy=R(-200,0) Qw=2*Qsize Qh=2*Qsize Qc=(R(0,H),R(0,H),R(0,H)) def pLeft(): global px,py,pw,ph,bg,Left,Right Left=0 Right=0 px-=1 F(px+pw,py,1,ph,bg) F(px,py+2,6,7,"cyan") def pRight(): global px,py,pw,ph,bg,Right,Left Right=0 Left=0 px+=1 F(px-1,py,1,ph,bg) F(px+5,py+2,6,7,"cyan") def pUp(): global px,py,pw,ph,bg py-=2 F(px,py+ph+1,pw,1,bg) def pDOWN(): global px,py,pw,ph,bg py+=1 F(px,py-1,pw,1,bg) F(0,0,SW,SH,bg) F(0,Gy,322,150,(R(0,H),R(0,H),R(0,H))) while game: F(px+3,py+4,6,7,"cyan") if Qt>R(3,6) and edefeat==0: Qt=0 F(Qx,Qy,Qw,Qh,BL) Qsize=R(1,3) Qx=R(-20,400) Qy=R(-40,0) Qw=3*Qsize Qh=3*Qsize STR("World:"+str(world),180,0,"green",BL) STR("Energy:"+str(round(pe)),2,0,"cyan",BL) F(Qx,Qy-1,Qw,1,bg) F(Lx,Ly,Lw,Lh,Lc) F(px,py,pw,ph,pc) F(Qx,Qy,Qw,Qh,Qc) fall=1 Mt+=1 Qc=(R(0,H),R(0,H),R(0,H)) Qy+=1 if Mt>R(100,300): Mdir=R(1,4) Mt=0 if fall: pDOWN() if K(KEY_LEFT): Left=1 Right=0 pLeft() if K(KEY_RIGHT): Right=1 Left=0 pRight() if K(KEY_BACKSPACE) and J_c<=max_j: pUp() F(px,py+ph-4,pw,4,(R(0,H),R(0,H),R(0,H))) J_c+=1 J=0 pe-=0.001 F(0,0,100,20,bg) else: fall=0 if py>Ly+Lw: fall=1 if J_c==max_j: J_c=0 fall=1 J=0 if J: fall=False J=False py-=2 F(px,py+ph+1,pw,1,bg) if py<20: py=20 F(px,py,pw,ph,"red") pe-=0.2 for i in range(SW): i+=1 F(i,R(0,15),R(5,10),R(0,10),(R(0,30),R(0,30),R(0,30))) if px<1: px=1 if px+pw>=SW: px=SW-pw if py>SH and edefeat: edefeat=0 Gy=R(90,215) F(0,20,SW,SH,bg) F(0,Gy,322,150,(R(0,H),R(0,H),R(0,H))) px=10 py=Gy-ph Qx=R(-50,410) Qy=R(-40,20) Lx=R(40,250) Ly=Gy Lw=R(30,100) Lh=100 Lc=(R(0,H),R(0,H),R(0,H)) area+=1 Mt=0 Me=20 Mx=R(240,310) My=R(40,100-Mh) Mw=R(15,35) Mh=R(9,22) Mc=(R(0,H),R(0,H),R(0,H)) Qsize=R(1,3) Qx=R(40,H) Qy=R(40,Gy-Qh) Qw=3*Qsize Qh=3*Qsize F(Lx,Ly,Lw,Lh,Lc) #earth/ground F(0,Gy,SW,100,(R(0,H),R(0,H),R(0,H))) #new world if area>R(5,8): world+=1 while not K(KEY_OK): STR("WORLD: "+str(world),100,100,"white",BL) sleep(0.01) F(0,0,SW,SH,BL) sleep(0.2) area=1 pe+=R(2,5) Gy=R(90,215) px=10 py=Gy-ph Lx=R(40,250) Ly=Gy Lw=R(35,120) Lh=150 Lc=(R(0,H),R(0,H),R(0,H)) bg=(R(0,H),R(0,H),R(0,H)) F(0,0,SW,SH,bg) F(0,Gy,SW,100,(R(0,H),R(0,H),R(0,H))) psc+=R(25,100) Mt=0 Me=R(10,25) Mx=R(240,310) My=R(40,100-Mh) Mw=R(10,25) Mh=R(8,22) Mc=(R(0,H),R(0,H),R(0,H)) Qx=R(-40,410) Qy=R(-400,-20) Qsize=R(1,3) Qw=2*Qsize Qh=2*Qsize for i in range(0,SW): i+=R(2,6) F(i,R(0,10),R(0,10),R(5,15),CH(["black",(R(0,60),R(0,60),R(0,60))])) #player on ground if py+ph>Gy and px<=Lx-1 or py+ph>=Gy and px+pw+1>=Lx+Lw: py=Gy-ph fall=0 jump_c=0 max_j=150 #floor light if py+ph>=Gy and px<=Lx-1 or py+ph>=Gy and px+pw+1>=Lx+Lw: F(px,py,pw,ph,CH([pc,(0,0,0),bg])) pe-=0.001 for i in range(0.0001): i=R(0,SW) F(i,Gy+R(0,4),R(1,2),R(1,2),CH([(0,H,0),(0,0,0),"cyan"])) if pe<0: game=0 if K(KEY_OK): STR("(PAUSED)",110,40,(R(0,H),R(0,H),R(0,H)),bg) while K(KEY_OK): pass while not K(KEY_OK): pass while K(KEY_OK): STR(" ",110,40,bg,bg) pass star_t+=0.1 if star_t>R(3,7): star_t=0 for i in range(nb): st[i][1] += RR(1,int(50/st[i][2])) z = st[i][2] Sx = st[i][0] Sy = min(Gy,st[i][1]) if Sy >= Gy: st[i] = point() if pr[i] != 0: set_pixel(pr[i][0],pr[i][1],bg) pr[i] = [int(Sx),int(Sy)] r=R(100,H) g=R(100,H) b=R(100,H) set_pixel(pr[i][0],pr[i][1],color(r,g,b)) if Gy>SH: grdfall=1 grdfall=0 if py>SH: py=30 fall=1 fell=0 if fell: jump=0 if px+pw>=Qx and px<=Qx+Qw and py+ph>=Qy and py<=Qy+Qh: F(Qx,Qy,Qw,Qh,bg) for i in range(0.0001): i=R(0,SW) F(i,Gy+R(0,4),R(1,2),R(1,2),choice(["yellow",(0,0,0),"green"])) Qx=R(-200,510) Qy=R(-300,0) pe+=0.1*Qw psc+=R(20,100) if Qy+Qh>Gy and Qx<Lx or Qy+Qh>Gy and Qx+Qw>Lx: Qy=Gy-Qh Qt+=0.01 F(Mx,My,Mw,Mh,Mc) F(Mx+2,My+2,2,2,"white") F(Mx+7,My+2,2,2,"white") if Mdir==1: Mx-=1 F(Mx+Mw+1,My,1,Mh,bg) if Mdir==2: Mx+=1 F(Mx-1,My,1,Mh,bg) if Mdir==3: My-=1 F(Mx,My+Mh,Mw,1,bg) if Mdir==4: My+=1 F(Mx,My-1,Mw,1,bg) if Mx<1: Mx=1 Mdir=2 if Mx+Mw>SW: Mx=SW-Mw Mdir=1 if My<20: My=20 F(Mx,My,Mw,Mh,"green") Me+=0.01 Mdir=R(1,2) if My+10>Gy: My=Gy-Mh Mdir=R(1,2) if px+pw>=Mx and px<=Mx+Mw and py+ph>=My and py<=My+Mh: F(px,py,pw,ph,(H,0,0)) pe-=0.2 F(0,0,100,20,bg) if py+ph>=My and px+pw>=Mx and px<=Mx+Mw and py+ph<=My+Mh and Me>0: pUp() fall=0 Mdir=R(1,2) F(Mx,My,Mw,Mh,"red") Me-=0.1 pe+=0.221 psc+=25 if Me<0: Mx=400 Mdir=0 Qt=0 edefeat=1 F(Mx,My,Mw,Mh,BL) Mx=H My=H Ly+=1 F(Lx,Ly-1,Lw,1,bg) STR("GAME OVER",100,100,"green",bg) STR("SCORE:"+str(psc),100,140,"white",bg)