from math import * from cmath import * from kandinsky import * from kandinsky import fill_rect as F from random import * from random import randint as R from ion import * from time import * gx=0 gy=210 gw=322 gh=20 gc=choice([(30,0,0),(60,0,0),(80,0,0)]) box_x=0 box_y=gy-50 box_w=50 box_h=50 box_c=(100,50,20) def draw_box(): global box_x,box_y,box_w,box_h,box_c F(box_x,box_y,3,box_h,box_c) F(box_x+box_w-3,box_y,3,box_h,box_c) F(box_x,box_y,box_w,3,box_c) F(box_x,box_y+box_h-3,box_w,3,box_c) edir_timer=0 echase=False eshooting=False eshoot_timer=0 edir=0 ex=R(200,322) ey=R(0,50) ew=12 eh=14 ec="black" def draw_enemy(): global echase,edir,ex,ey,ew,eh,ec F(ex,ey,ew,eh,ec) F(ex+round(ew/5),ey+round(eh/6),round(ew/3),round(ew/5),"red") F(ex,ey,1,eh,(120,0,0)) F(ex+ew-1,ey,1,eh,(120,0,0)) F(ex,ey,ew,1,(120,0,0)) F(ex,ey+eh-1,ew,1,(120,0,0)) def move_enemy(): global echase,edir_timer,edir,ex,ey,ew,eh,ec,bg # edir=choice([0,0,0,1,2,3,4]) edir_timer+=0.01 if edir_timer>=R(1,3): edir_timer=0 echase=choice([True,False]) if echase: if px<ex: edir=1 if px>ex: edir=2 if py<ey: edir=3 if py>ex: edir=4 if edir==1: ex-=3 F(ex+ew,ey,3,eh,bg) eshooting=True if edir==2: ex+=3 F(ex-3,ey,3,eh,bg) eshooting=True if edir==3: ey-=3 F(ex,ey+eh,ew,3,bg) if edir==4: ey+=3 F(ex,ey-3,ew,3,bg) def contain_enemy(): global echase,edir_timer,edir,ex,ey,ew,eh,ec,bg,box_x,box_y,box_w,box_h if ex<0: ex=0 if ex+ew>322: ex=322-ew if ey+eh<=0: ey=0 edir=1 if ey+eh>gy: ey=gy-eh edir=2 if ex<=box_x+box_w and ey+eh>=160: ex=box_x+50 def spawn_new_enemy(): global echase,edir_timer,edir,ex,ey,ew,eh,ec,bg echase=False edir_timer=0 edir=0 ex=R(0,310) ey=R(0,190) ew=R(10,18) eh=R(7,18) ec=(R(0,100),R(0,100),R(0,100)) #//////////////////////// sleep(0.2) bonus_points=R(50,200) px=R(5,250) py=185 pw=12 ph=18 pc="black" pfaces_left=False pfaces_right=True bg="black" #start screen F(0,0,322,222,bg) F(0,0,3,222,"blue") F(318,0,3,222,"blue") F(0,0,322,4,"blue") F(0,218,322,4,"blue") F(3,3,318,3,"white") F(3,30,318,3,"white") F(3,35,318,2,"white") F(R(260,280),0,R(8,45),222,(R(100,255),R(0,25),R(0,15))) F(0,200,322,5,"cyan") F(px,py,pw,ph,pc) F(px,py,pw,ph,pc) F(px,py-1,pw,1,bg) F(px,py,1,ph,"white") F(px+pw-1,py,1,ph,"white") F(px,py,pw,1,"white") F(px,py+ph,pw,1,"white") while not keydown(KEY_OK) and not keydown(KEY_EXE): draw_string("RECTNINJA",100,10,"white",bg) draw_string("key [UP] = Float",100,60,(R(0,255),R(0,255),R(0,255)),bg) draw_string("key [Backspace] = Pause",15,80,"white",bg) draw_string("Key [Arrows] = Move",15,110,"cyan",bg) draw_string("Press [OK/EXE] key to Start",10,140,"orange",bg) F(0,200,322,3,"gray") gx=0 gy=210 gw=322 gh=20 gc=choice([(30,0,0),(60,0,0),(80,0,0)]) def draw_ground(): global gx,gy,gw,gh,gc F(gx,gy,gw,gh,gc) gravty=True game=True have_key=False shield_on=False level_complete=False jump=False bg=(R(0,255),R(0,255),R(0,255)) fall_speed=1 jump_max=1 jump_time=0 level=1 plife=3 px=20 py=20 pw=12 ph=18 pc=(R(0,90),R(0,90),R(0,90)) psc=0 shield_time=R(3,6) shield_x=R(2,310) shield_y=R(-200,-50) shield_w=10 shield_h=10 shield_c=(R(0,255),R(0,255),R(0,255)) floating_board_x=25 floating_board_y=R(50,150) floating_board_w=R(10,70) floating_board_h=R(6,40) floating_board_c=(R(0,255),R(0,255),R(0,255)) floating_board_2_x=0 floating_board_2_y=R(30,160) floating_board_2_w=R(10,70) floating_board_2_h=R(6,45) floating_board_2_c=(R(0,255),R(0,255),R(0,255)) floating_board_3_x=320-105 floating_board_3_y=R(30,160) floating_board_3_w=R(10,70) floating_board_3_h=R(6,30) floating_board_3_c=(R(0,255),R(0,255),R(0,255)) key_x=R(2,300) key_y=R(2,190) door_x=R(2,310) door_y=R(2,180) door_w=15 door_h=22 door_c=(R(0,255),R(0,255),R(0,255)) key_amount=2 key_1_obtained=False key_1_x=R(2,310) key_1_y=R(2,200) key_1_w=6 key_1_h=12 key_1_c=choice([(R(175,255),R(175,255),R(175,255)), "yellow","orange","red","blue","cyan", "pink","white","black","magenta" ]) key_2_obtained=False key_2_x=R(5,310) key_2_y=R(5,200) key_2_w=6 key_2_h=12 key_2_c=choice([(R(175,255),R(175,255),R(175,255)), "yellow","orange","red","blue","cyan", "pink","white","black","magenta" ]) key_3_obtained=False key_3_x=R(5,310) key_3_y=R(5,200) key_3_w=6 key_3_h=12 key_3_c=choice([(R(175,255),R(175,255),R(175,255)), "yellow","orange","red","blue","cyan", "pink","white","black","magenta" ]) fill_rect(0,0,322,222,bg) while game: gravty=True psc+=0.01 shield_c=(R(0,255),R(0,255),R(0,255)) if shield_on==False and have_key==False: shield_y+=choice([0,0,1]) F(px,py,pw,ph,pc) F(px,py-2,pw,2,bg) F(px,py,1,ph,"gray") F(px+pw-1,py,1,ph,"gray") F(px,py,pw,1,"gray") F(px,py+ph-1,pw,1,"gray") F(shield_x,shield_y,shield_w,shield_h,shield_c) F(shield_x,shield_y-1,shield_w,1,bg) F(shield_x,shield_y,2,shield_h,"white") F(shield_x+shield_w-2,shield_y,2,shield_h,"white") F(shield_x,shield_y,shield_w,2,"white") F(shield_x,shield_y+shield_h-2,shield_w,2,"white") F(key_1_x,key_1_y,key_1_w,key_1_h,key_1_c) F(key_1_x,key_1_y,1,key_1_h,"blue") F(key_1_x+key_1_w-1,key_1_y,1,key_1_h,"blue") F(key_1_x,key_1_y,key_1_w,1,"blue") F(key_1_x,key_1_y+key_1_h-1,key_1_w,1,"blue") if keydown(KEY_LEFT): pfaces_left=True pfaces_right=False px-=1 F(px+pw,py,2,ph,bg) if keydown(KEY_RIGHT): pfaces_right=True pfaces_left=False px+=1 F(px-1,py,1,ph,bg) if px+pw<0:px=322 if px>322:px=0 if gravty: py+=choice([0,1]) if have_key: F(door_x,door_y,door_w,door_h,choice(["black","cyan","white"])) F(door_x,door_y,2,door_h,"cyan") F(door_x+door_w-2,door_y,2,door_h,"cyan") F(door_x,door_y,door_w,2,"cyan") F(door_x,door_y+door_h-2,door_w,2,"black") if px+pw>=key_1_x and px<=key_1_x+key_1_w and py+ph>=key_1_y and py<=key_1_y+key_1_h: F(key_1_x,key_1_y,key_1_w,key_1_h,bg) F(px+1,py+1,pw-1,ph-1,choice(["green","white","cyan"])) have_key=True if have_key: key_1_x=px+2 key_1_y=py+3 if px+pw>=door_x and px<=door_x+door_w and py+ph>=door_y and py<=door_y+key_1_h and have_key: F(0,0,322,222,"black") level+=1 plife+=1 psc+=bonus_points while not keydown(KEY_OK): draw_string("Level complete.!",20,10,"cyan","black") draw_string("Bonus Points: "+str(bonus_points),20,55,"white","black") draw_string("Score:"+str(round(psc)),20,85,"yellow","black") draw_string("life: "+str(round(plife)),20,120,"purple","black") draw_string("Press [OK] to continue to",40,160,"magenta","black") draw_string("the next level.",40,190,"blue","black") bonus_points=R(100,500) bg=(R(0,255),R(0,255),R(0,255)) F(0,0,322,222,bg) draw_ground() door_x=R(2,300) door_y=R(2,200) door_c=(R(0,255),R(0,255),R(0,255)) key_1_x=R(2,300) key_1_y=R(2,200) key_1_c=(R(0,255),R(0,255),R(0,255)) floating_board_x=R(300,400) floating_board_y=R(60,150) floating_board_w=R(70,120) floating_board_h=R(6,10) floating_board_c=(R(0,255),R(0,255),R(0,255)) floating_board_2_x=R(0,50) floating_board_2_y=R(60,150) floating_board_2_w=R(50,85) floating_board_2_h=R(6,10) floating_board_2_c=(R(0,255),R(0,255),R(0,255)) floating_board_3_x=R(225,280) floating_board_3_y=R(60,150) floating_board_3_w=R(40,70) floating_board_3_h=R(6,10) floating_board_3_c=(R(0,255),R(0,255),R(0,255)) px=8 py=20 shield_time=0 shield_on=False have_key=False spawn_new_enemy() if shield_on: shield_time-=0.0025 F(px,py,pw,ph,(R(0,255),R(0,255),R(0,255))) draw_string("Shield: "+str(round(shield_time)),2,2,"cyan","black") if shield_time<0: shield_on=False shield_time=5 draw_string(" ",2,2,bg,bg) #game over when plife<1 if plife<1: game=False # simple Pause/Resume code if keydown(KEY_BACKSPACE): while not keydown(KEY_TOOLBOX): draw_string("( PAUSED )",110,60,"blue","cyan") draw_string("(PRESS [TOOLBOX] KEY TO RESUME)",5,140) draw_string(" ",110,60,bg,bg) draw_string("(PRESS [TOOLBOX] KEY TO RESUME)",5,140,bg,bg) F(px+2,py+3,9,7,"white") if shield_y+shield_h>=gy: shield_y=gy-shield_h if px+pw>=shield_x and px<=shield_x+shield_w and py+ph>=shield_y and py<shield_y+shield_h: F(shield_x,shield_y,shield_w,shield_h,bg) shield_on=True shield_x=R(2,310) shield_y=R(-400,-250) F(floating_board_x,floating_board_y,floating_board_w,floating_board_h,floating_board_c) F(floating_board_x,floating_board_y,2,floating_board_h,"white") F(floating_board_x+floating_board_w-2,floating_board_y,2,floating_board_h,"white") F(floating_board_x,floating_board_y,floating_board_w,2,"white") F(floating_board_x,floating_board_y+floating_board_h-2,floating_board_w,2,"white") F(floating_board_x+floating_board_w,floating_board_y,1,floating_board_h,bg) #**************************** F(floating_board_2_x,floating_board_2_y,floating_board_2_w,floating_board_2_h,floating_board_2_c) F(floating_board_3_x,floating_board_3_y,floating_board_3_w,floating_board_3_h,floating_board_3_c) F(floating_board_2_x,floating_board_2_y,2,floating_board_2_h,"white") F(floating_board_2_x+floating_board_2_w-2,floating_board_2_y,2,floating_board_2_h,"white") F(floating_board_2_x,floating_board_2_y,floating_board_2_w,2,"white") F(floating_board_2_x,floating_board_2_y+floating_board_2_h-2,floating_board_2_w,2,"white") F(floating_board_3_x,floating_board_3_y,2,floating_board_3_h,"white") F(floating_board_3_x+floating_board_3_w-2,floating_board_3_y,2,floating_board_3_h,"white") F(floating_board_3_x,floating_board_3_y,floating_board_3_w,2,"white") F(floating_board_3_x,floating_board_3_y+floating_board_3_h-2,floating_board_3_w,2,"white") if floating_board_x+floating_board_w<-10: floating_board_x=R(600,900) floating_board_y=R(50,100) #player lands on platforms #middle bottom board floating_board_x-=choice([0,1]) if px+pw>=floating_board_x and px<=floating_board_x+floating_board_w and py+ph>=floating_board_y and py<=floating_board_y: gravty=False py=floating_board_y-ph px-=choice([0,1]) F(px+pw,py,1,ph,bg) #left board if px+pw>=floating_board_2_x and px<=floating_board_2_x+floating_board_2_w and py+ph>=floating_board_2_y and py<=floating_board_2_y: gravty=False py=floating_board_2_y-ph #right board if px+pw>=floating_board_3_x and px<=floating_board_3_x+floating_board_3_w and py+ph>=floating_board_3_y and py<=floating_board_3_y: gravty=False py=floating_board_3_y-ph #gy is ground if py+ph>=gy: py=gy-ph floating_board_2_y+=choice([0,0,0,1]) if floating_board_x+floating_board_w<-5: floating_board_x=322 floating_board_w=R(10,70) floating_board_h=R(6,45) floating_board_c=(R(0,255),R(0,255),R(0,255)) if floating_board_2_y>200: F(floating_board_2_x,floating_board_2_y-1,floating_board_2_w,floating_board_2_h,bg) floating_board_2_y=0 floating_board_2_w=R(10,70) floating_board_2_h=R(6,40) floating_board_2_c=(R(0,255),R(0,255),R(0,255)) if floating_board_3_y+floating_board_3_h<0: floating_board_3_y=200 floating_board_3_w=R(10,75) floating_board_3_h=R(6,30) floating_board_3_c=(R(0,255),R(0,255),R(0,255)) F(floating_board_2_x,floating_board_2_y-1,floating_board_2_w,1,bg) F(floating_board_3_x,floating_board_3_y+floating_board_3_h,floating_board_3_w,1,bg) if jump: py-=R(1,2) F(px,py+ph,pw,2,bg) jump_max-=0.1 if jump_max<0: jump=False jump_max=1 if py<=1:py=1 if keydown(KEY_UP): py-=1 F(px,py+ph,pw,2,bg) draw_ground() draw_enemy() draw_box() move_enemy() contain_enemy() if px+pw>=box_x and px<=box_x+box_w and py<=box_y+2 and py>=box_y+2: py=box_y+2 gravty=False if px+pw>=box_x and px<=box_x+box_w and py+ph>=box_y and py<=box_y: gravty=False py=box_y-ph if keydown(KEY_OK) and shield_on and pfaces_right: F(px+pw,py+4,322-px,2,"red") F(px+4,py+3,8,6,"red") sleep(0.01) F(px+pw,py+4,322-px,2,bg) if keydown(KEY_OK) and shield_on and pfaces_left: F(0,py+4,px,2,"red") F(px,py+3,8,6,"red") sleep(0.01) F(0,py+4,px,2,bg) #game over sleep(1) F(0,0,322,222,"black") draw_string("GAME OVER",100,90,"red","black") sleep(1) draw_string("SCORE:",100,140,"white","black") sleep(1.1) draw_string(str(round(psc)),170,140,"cyan","black")