from math import * from random import randint as allea from kandinsky import fill_rect as rect,draw_string as text from ion import keydown as k,KEY_LEFT as left,KEY_UP as up,KEY_DOWN as down,KEY_RIGHT as right,KEY_OK as ok from time import * def a_plan():rect(0,0,320,222,(50,)*3) colors=[(255,)*3,(100,)*3,(255,0,0),(255,255,0),(0,255,0),(0,255,255),(0,0,255),(255,0,255),(150,)*3,(200,)*3] alien1=[0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,1,1,0,1,1,0,1,1,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,1,1,0,1,0,0,0,0,0,1,0,1,0,0,1,0,1,0,0] alien2=[0,0,0,0,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,0,0,1,1,0,0,0,0,0,1,1,0,1,1,0,1,1,0,0,1,1,0,0,0,0,0,0,0,0,1,1] alien3=[0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,1,1,0,1,1,1,0,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,1,1,1,1,1,1,0,1,0,1,0,1,0,0,0,0,0,1,0,1,0,0,0,0,1,1,0,1,1,0,0,0] choice=[alien1,alien2,alien3] def d_alien(list,x,y,t,color): rx,ry=x,y for i in list: if i!=0:rect(rx,ry,t,t,color) rx+=t if rx-x>11*t:ry+=t;rx=x class aliens: def __init__(self): self.posx=(allea(0,7)*40) self.posy=-50 self.size=3 self.color=colors[allea(2,7)] self.type=choice[allea(0,2)] def draw(self):d_alien(self.type,self.posx,self.posy,self.size,self.color) def alien_win(self): if self.posy+(8*self.size)>=222:return True else:return False navette=[ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,8,8,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,8,8,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,8,8,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,8,8,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,1,1,8,8,8,8,1,1,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,1,8,8,8,8,8,8,1,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,1,8,9,8,8,9,8,1,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,1,8,9,8,8,9,8,1,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,7,7,0,0,0,1,8,9,8,8,9,8,1,0,0,0,7,7,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,7,7,0,0,0,1,8,9,8,8,9,8,1,0,0,0,7,7,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,7,7,0,0,0,1,8,9,8,8,9,8,1,0,0,0,7,7,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,7,7,0,0,1,1,8,9,8,8,9,8,1,1,0,0,7,7,0,0,0,0,0,0,0, 0,0,0,0,0,0,1,8,9,0,1,1,8,9,8,8,8,8,9,8,1,1,0,9,8,1,0,0,0,0,0,0, 0,0,0,0,0,0,1,8,9,0,1,8,8,8,8,7,7,8,8,8,8,1,0,9,8,1,0,0,0,0,0,0, 0,7,7,0,0,0,1,8,9,4,4,8,9,8,7,7,7,7,8,9,8,4,4,9,8,1,0,0,0,7,7,0, 0,7,7,0,0,0,1,1,9,4,4,8,9,8,7,7,7,7,8,9,8,4,4,9,1,1,0,0,0,7,7,0, 0,7,7,0,0,0,0,4,4,8,8,9,8,7,7,7,7,7,7,8,9,8,8,4,4,0,0,0,0,7,7,0, 0,7,7,0,0,0,0,4,4,8,9,8,8,7,7,7,7,7,7,8,8,9,8,4,4,0,0,0,0,7,7,0, 1,8,9,1,0,0,1,1,9,8,9,8,8,7,7,7,7,7,7,8,8,9,8,9,1,1,0,0,1,9,8,1, 1,8,9,1,0,1,1,8,9,8,9,8,8,7,7,7,7,7,7,8,8,9,8,9,8,1,1,0,1,9,8,1, 1,8,9,1,0,1,8,9,8,9,8,9,8,8,8,7,7,8,8,8,9,8,9,8,9,8,1,0,1,9,8,1, 1,1,9,1,1,1,9,8,8,8,9,8,9,9,8,8,8,8,9,9,8,9,8,8,8,9,1,1,1,9,1,1, 1,8,1,1,8,9,8,9,9,8,7,7,7,8,9,8,8,9,8,7,7,7,8,9,9,8,9,8,1,1,8,1, 1,8,1,8,9,8,9,8,1,9,7,7,7,8,9,8,8,9,8,7,7,7,9,8,8,9,8,9,8,1,8,1, 1,8,8,9,8,9,8,1,1,7,7,7,7,8,8,9,9,8,8,7,7,7,7,1,1,8,9,8,9,8,8,1, 1,8,8,8,9,8,1,1,0,7,7,7,7,8,8,8,8,8,8,7,7,7,7,0,1,1,8,9,8,8,8,1, 1,8,8,9,8,1,1,0,0,7,7,7,7,1,8,9,9,1,1,7,7,7,7,0,0,1,1,8,9,8,8,1, 1,8,8,8,1,1,0,0,0,0,7,7,0,0,1,9,9,1,0,0,7,7,0,0,0,0,1,1,8,8,8,1, 1,9,8,1,1,0,0,0,0,0,0,0,0,0,1,8,8,1,0,0,0,0,0,0,0,0,0,1,1,9,8,1, 1,9,1,1,0,0,0,0,0,0,0,0,0,0,1,8,8,1,0,0,0,0,0,0,0,0,0,0,1,9,1,1, 0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0] def d_navette(x,y,t,color): rx,ry=x,y for i in navette: if i!=0:rect(rx,ry,t,t,colors[i]) rx+=t if rx-x>31*t:ry+=t;rx=x def d_bullet(x,y): if y>222:return rect(x+1,y,2,-4,(255,180,0)) rect(x+7,y-6,2,-4,(255,180,0)) rect(x+31,y,2,-4,(255,180,0)) rect(x+25,y-6,2,-4,(255,180,0)) class bullets: def __init__(self,x,y): self.posx=x self.posy=y self.deplace=True def draw(self): d_bullet(self.posx,self.posy) _x=144;_y=180;_a=-1;_t=monotonic() alien=[aliens()];bullet=[] score=0;stage=1 run=True while run: a_plan() text("Score:"+str(score),0,0,(255,)*3,(50,)*3) text("Stage:"+str(stage),250,0,(255,)*3,(50,)*3) if monotonic()-_t>2 and len(alien)<5:alien+=[aliens()];_t=monotonic() for i in alien: i.posy+=stage+1;i.draw() if i.alien_win():run=False;text("Game Over!",110,100,(255,)*3,(50,)*3) for i in bullet: if i.deplace:i.posy-=8;i.draw() if i.posy<0:i.deplace=False for j in alien: if i.posx-6<j.posx<i.posx+38 and i.posy-30<j.posy<i.posy and i.deplace==True:j.__init__();score+=1;i.deplace=False d_navette(_x,_y,1,(150,)*3) if k(left) and _x>10: _x-=20 if k(right)and _x<280:_x+=20 if k(up) and _y>10: _y-=20 if k(down) and _y<180:_y+=20 if k(ok) and _a>2: _a=0 for i in bullet: if i.deplace==False and _a==0: i.deplace=True i.__init__(_x,_y) _a+=1 if _a==0:bullet+=[bullets(_x,_y)] _a=0 if score>=10: score=0 stage+=1 text("Stage superieur.",80,100,(255,)*3,(50,)*3) sleep(1) _a+=1 sleep(0.05) sleep(2)