# Game By: Wilson
frommathimport*fromrandomimport*fromkandinskyimport*fromionimport*fromtimeimport*bg=(0,0,0)fill_rect(0,0,322,222,bg)whilenotkeydown(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")whilenotkeydown(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=Truebg=(randint(0,55),randint(0,55),randint(0,55))psc=0pe=35px=20py=100pw=12ph=8pc="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=0rect_g=Falserect_chase=Falserect_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
defmove_Rect():globalrect_x,rect_y,rect_w,rect_h,rect_crect_x-=1fill_rect(rect_x+rect_w,rect_y,1,rect_h,bg)# move meteor
defmove_darkmatter():globaldarkm_x,darkm_y,darkm_w,darkm_hdarkm_x-=1fill_rect(darkm_x+darkm_w,darkm_y,1,darkm_h,bg)#move player
defmove_Left():globalpx,py,pw,ph,pcpx-=3fill_rect(px+pw,py,3,ph,bg)defmove_Right():globalpx,py,pw,ph,pc,bgpx+=3fill_rect(px-3,py,3,ph,bg)defmove_Up():globalpx,py,pw,ph,pc,bgpy-=3fill_rect(px,py+ph,pw,3,bg)defmove_Down():globalpx,py,pw,ph,pc,bgpy+=3fill_rect(px,py-3,pw,3,bg)# when keys pressed
defkeyListen():ifkeydown(KEY_BACKSPACE):pause()ifkeydown(KEY_LEFT):move_Left()ifkeydown(KEY_RIGHT):move_Right()ifkeydown(KEY_UP):move_Up()ifkeydown(KEY_DOWN):move_Down()# game is paused/unpaused
defpause():ifkeydown(KEY_BACKSPACE):draw_string("(PAUSED)",110,100,"white",bg)whilekeydown(KEY_BACKSPACE):passwhilenotkeydown(KEY_BACKSPACE):passwhilekeydown(KEY_BACKSPACE):draw_string("",110,100,bg,bg)pass# draw the main things
defdrawGame():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)defrect_spawn():globalrect_x,rect_y,rect_w,rect_w,rect_c,bg,psc,pe,rectmassrect_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)/6fill_rect(0,0,322,222,bg)# main loop
whilegame:# 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
ifrect_x<0-rect_w-randint(10,25):rect_spawn()# if player gets hit, energy
# lost and push back
ifpx+pw>=rect_xandpx<=rect_x+rect_wandpy+ph>=rect_yandpy<=rect_y+rect_h:fill_rect(px,py,pw,ph,"red")pe-=0.1fill_rect(2,0,122,20,bg)px-=1# dark matter is powerful.
ifpx+pw>=darkm_xandpx<=darkm_x+darkm_wandpy+ph>=darkm_yandpy<=darkm_y+darkm_h:fill_rect(px,py,pw,ph,choice(["black","red"]))pe-=0.5fill_rect(2,0,122,20,bg)ifpe<1:game=Falseifrect_chase:ifint(darkm_y+rect_h/2)<py:darkm_y+=2fill_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")ifdarkm_y>py:darkm_y-=2fill_rect(darkm_x,darkm_y+darkm_h,darkm_w,2,bg)fill_rect(darkm_x,darkm_y,darkm_w,2,"red")ifpy+ph>218:py=218-phfill_rect(px,py,pw,ph,"gray")pe-=0.02fill_rect(2,0,122,20,bg)ifpy<23:py=23fill_rect(px,py,pw,ph,"gray")pe-=0.02fill_rect(2,0,122,20,bg)ifpx<3:px=3ifpx+pw>322:px=322-pwifkeydown(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.
ifpe<=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])ifdarkm_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
ifkeydown(KEY_OK)andpy>=rect_yandpy+ph<=rect_y+rect_handpx+pw<=rect_x+rect_w:fill_rect(px,py,pw,ph,"green")pe+=0.002rectmass-=8psc+=1fill_rect(rect_x,rect_y,rect_w,rect_h,"cyan")fill_rect(rect_x,rect_y,rect_w,rect_h,bg)foriinrange(randint(5,20)):forjinrange(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
ifrectmass<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)/6pe+=(rect_w*rect_h)*0.0004fill_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))
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.