# Game By: Wilson from math import * from random import * from kandinsky import * from ion import * from time import * bg=(0,0,0) fill_rect(0,0,322,222,bg) while not keydown(KEY_OK): fill_rect(0,10,322,3,"cyan") fill_rect(0,50,322,3,"cyan") draw_string("RECTANGLE WORLD",100,22,"white",bg) draw_string("Key [Backspace] = Pause/Unpause",5,110,"green",bg) draw_string("Use [ARROWS] to Avoid Rects",15,140,"cyan",bg) sleep(0.1) draw_string("( Press [OK] to START )",25,190,"white",bg) sleep(0.2) fill_rect(0,0,322,222,(0,0,0)) fill_rect(0,20,322,2,"gray") fill_rect(0,200,322,2,"gray") while not keydown(KEY_OK): draw_string("________TIPS:_______",40,50,"gray",(0,0,0)) draw_string("Rects with values higher",10,100,"white",(0,0,0)) draw_string("than [40] are hard to destroy.",10,130,"white",(0,0,0)) draw_string("Avoid the Dark Matter!",20,160,"cyan",(0,0,0)) game=True bg=(randint(0,55),randint(0,55),randint(0,55)) psc=0 pe=35 px=20 py=100 pw=12 ph=8 pc="blue" #pstep=1 rects_amount=randint(4,10) rect_x=randint(300,500) rect_y=randint(20,200) rect_w=randint(20,60) rect_h=randint(20,60) rect_c=(randint(0,255),randint(0,255),randint(0,255)) rectmass=(rect_w*rect_h)/5 #rects can chase or change #shape dimension rect_t=0 rect_g=False rect_chase=False rect_v=0 # dark matter! darkm_x=randint(322,500) darkm_y=randint(22,200) darkm_w=randint(20,80) darkm_h=randint(20,80) darkm_c=(randint(0,25),randint(0,25),randint(0,25)) # move rect def move_Rect(): global rect_x,rect_y,rect_w,rect_h,rect_c rect_x-=1 fill_rect(rect_x+rect_w,rect_y,1,rect_h,bg) # move meteor def move_darkmatter(): global darkm_x,darkm_y,darkm_w,darkm_h darkm_x-=1 fill_rect(darkm_x+darkm_w,darkm_y,1,darkm_h,bg) #move player def move_Left(): global px,py,pw,ph,pc px-=3 fill_rect(px+pw,py,3,ph,bg) def move_Right(): global px,py,pw,ph,pc,bg px+=3 fill_rect(px-3,py,3,ph,bg) def move_Up(): global px,py,pw,ph,pc,bg py-=3 fill_rect(px,py+ph,pw,3,bg) def move_Down(): global px,py,pw,ph,pc,bg py+=3 fill_rect(px,py-3,pw,3,bg) # when keys pressed def keyListen(): if keydown(KEY_BACKSPACE): pause() if keydown(KEY_LEFT): move_Left() if keydown(KEY_RIGHT): move_Right() if keydown(KEY_UP): move_Up() if keydown(KEY_DOWN): move_Down() # game is paused/unpaused def pause(): if keydown(KEY_BACKSPACE): draw_string("(PAUSED)",110,100,"white",bg) while keydown(KEY_BACKSPACE): pass while not keydown(KEY_BACKSPACE): pass while keydown(KEY_BACKSPACE): draw_string(" ",110,100,bg,bg) pass # draw the main things def drawGame(): draw_string("Energy:"+str(int(pe)),12,0,"white",bg) draw_string("Score:"+str(int(psc)),190,0,"cyan",bg) fill_rect(0,0,4,222,"cyan") fill_rect(0,20,322,3,"gray") fill_rect(0,218,322,3,"gray") fill_rect(darkm_x,darkm_y,darkm_w,darkm_h,darkm_c) #player fill_rect(px,py,pw,ph,pc) fill_rect(px,py,2,ph,"cyan") fill_rect(px+pw-2,py,2,ph,"cyan") fill_rect(px,py,pw,2,"cyan") fill_rect(px,py+ph-2,pw,2,"cyan") #enemies fill_rect(rect_x,rect_y,rect_w,rect_h,rect_c) def rect_spawn(): global rect_x,rect_y,rect_w,rect_w,rect_c,bg,psc,pe,rectmass rect_x=randint(250,322) rect_y=randint(-40,210) rect_w=randint(20,150) rect_h=randint(40,210) rect_c=(randint(0,255),randint(0,255),randint(0,255)) pe-=randint(0,1) psc+=randint(15,35) bg=(randint(0,55),randint(0,55),randint(0,55)) fill_rect(0,0,322,222,bg) rectmass=(rect_w*rect_h)/6 fill_rect(0,0,322,222,bg) # main loop while game: # sometimes rect will follow rect_chase=choice([1,0,1,0,0,0]) drawGame() keyListen() move_Rect() move_darkmatter() # when rectangle reaches the # left wall if rect_x<0-rect_w-randint(10,25): rect_spawn() # if player gets hit, energy # lost and push back if px+pw >= rect_x and px <= rect_x+rect_w and py+ph >= rect_y and py <= rect_y+rect_h: fill_rect(px,py,pw,ph,"red") pe-=0.1 fill_rect(2,0,122,20,bg) px-=1 # dark matter is powerful. if px+pw >= darkm_x and px <= darkm_x+darkm_w and py+ph >= darkm_y and py <= darkm_y+darkm_h: fill_rect(px,py,pw,ph,choice(["black","red"])) pe-=0.5 fill_rect(2,0,122,20,bg) if pe<1: game=False if rect_chase: if int(darkm_y+rect_h/2) < py: darkm_y+=2 fill_rect(darkm_x,darkm_y-2,darkm_w,2,bg) fill_rect(darkm_x,darkm_y,darkm_w,2,"red") fill_rect(darkm_x,darkm_y+darkm_h-2,darkm_w,2,"red") if darkm_y>py: darkm_y-=2 fill_rect(darkm_x,darkm_y+darkm_h,darkm_w,2,bg) fill_rect(darkm_x,darkm_y,darkm_w,2,"red") if py+ph > 218: py = 218-ph fill_rect(px,py,pw,ph,"gray") pe-=0.02 fill_rect(2,0,122,20,bg) if py < 23: py = 23 fill_rect(px,py,pw,ph,"gray") pe-=0.02 fill_rect(2,0,122,20,bg) if px < 3: px = 3 if px+pw>322: px=322-pw if keydown(KEY_OK): fill_rect(px+6,py+1,322,2,(randint(0,255),randint(0,255),randint(0,255))) sleep(0.003) fill_rect(px+6,py+1,322,2,bg) # player or ship is low # on energy or fuel # ship is leaking. if pe<=20: fill_rect(px+randint(-3,3),py,randint(2,4),randint(2,4),"orange") fill_rect(px,py,pw,ph,choice(["red","black",bg])) fill_rect(px,py-1,pw,1,bg) draw_string("( WARNING:LOW ENERGY!! )",40,202,"orange",bg) py+=choice([0,0,1,0]) if darkm_x<0-darkm_w-randint(10,20): darkm_x=randint(500,800) darkm_y=randint(22,200) darkm_w=randint(40,100) darkm_h=randint(50,120) darkm_c=(randint(0,35),randint(0,35),randint(0,35)) # rects gets shot if keydown(KEY_OK) and py >= rect_y and py+ph <= rect_y+rect_h and px+pw<=rect_x+rect_w: fill_rect(px,py,pw,ph,"green") pe+=0.002 rectmass-=8 psc+=1 fill_rect(rect_x,rect_y,rect_w,rect_h,"cyan") fill_rect(rect_x,rect_y,rect_w,rect_h,bg) for i in range(randint(5,20)): for j in range(randint(5,20)): i=rect_x+randint(0,rect_w) j=rect_y+randint(0,rect_h) fill_rect(i,j,randint(2,5),randint(2,5),choice(["cyan","black",bg,rect_c,bg])) # rectmass reflects strengh # of rectangles if rectmass<1: rect_x=randint(400,500) rect_y=randint(-40,210) rect_w=randint(20,150) rect_h=randint(40,210) rect_c=(randint(0,255),randint(0,255),randint(0,255)) rectmass=(rect_w*rect_h)/6 pe+=(rect_w*rect_h)*0.0004 fill_rect(0,22,322,222,bg) draw_string(str(int(rectmass/30)),int(rect_x+(rect_w/7)),rect_y+2,(0,0,0),rect_c) fill_rect(int(rect_x+(rect_w/5)),int(rect_y+(rect_h/3)),int(rectmass/50),10,"red") sleep(0.5) fill_rect(0,0,322,222,(0,0,0)) sleep(1) draw_string("GAME OVER",100,80,"red",(0,0,0)) sleep(1.5) draw_string("SCORE:",100,120,"cyan",(0,0,0)) sleep(1) draw_string(str(psc),165,120,"orange",(0,0,0))