from ion import * from time import sleep from kandinsky import set_pixel,fill_rect, draw_string from cmath import polar from math import cos,sin,log10 from random import choice,random,randint RO,NR,BL,VE = (255,0,0),(0,)*3,(255,)*3,(0,255,0) niv = 6 def zx(i): return 75 + 75 * (i%3) def zy(i): return 60 + 40 * (i//3) def melange(): t,m = list(range(1,niv+1)), [] while len(t) > 0: m.append(choice(t)) t.remove(m[-1]) code = ''.join([str(n) for n in m]) fill_rect(0,0,320,222,(160,220,240)) aff_code(code,0) for i in range(niv): draw_string(str(i+1),zx(i), zy(i),NR,BL) return code def aff_mess(x,y,txt,c): draw_string("= "*7 + txt + " ="*6,0,140,NR,c) for i in range(900): coul = (randint(10,255),randint(10,255),randint(10,255)) [r, t] = [-30*log10(random()), 6.28*random()] set_pixel(int(x+r*cos(t)),int(y+r*sin(t)),coul) sleep(.002) def aff_code(code,n): for i in range(niv): draw_string(code[i],10*i,0,NR,VE if i==n else RO) def touche(jx,jy): for i in range(niv): dx = jx - zx(i) dy = jy - zy(i) if 0 <= dx < 10 and 0 <= dy < 18: return i+1 return 0 def deplace(x,y,dx,dy,v,c): x = max(0, min(320, x + v * dx)) y = max(0, min(220, y + v * dy)) set_pixel(int(x),int(y),c) return [x,y] def go(diff = 2): jx,jy,mx,my = 0,220,320,0 code = melange() rang, preced = 0, 0 while True: sleep(.02) djx,djy = keydown(KEY_RIGHT)-keydown(KEY_LEFT), keydown(KEY_DOWN)-keydown(KEY_UP) if djx != 0 or djy!=0: [jx,jy] = deplace(jx,jy,djx,djy,2,NR) (r,t) = polar(jx - mx + (jy - my) * 1j) if r > 2: [mx,my] = deplace(mx,my,cos(t),sin(t),diff,RO) nb = touche(jx,jy) if nb > 0 and nb != preced: if int(code[rang]) == nb: rang += 1 preced = nb if rang == niv: aff_mess(mx,my,"GAGNE !",VE) return else: rang,preced = 0,0 aff_code(code,rang) else: aff_mess(jx,jy,"BOOM !",RO) return go()