Ce programme dessine une animation d’un personnage marchant. Taper marche(n), sur la calculatrice uniquement, pour obtenir n fois le passage du personnage. Le mouvement des membres est un peu rudimentaire: quelqu’un pourra t-il proposer un meilleur scénario?
from kandinsky import * from math import * def cercle(x0,y0,r,c): for i in range(4): xd=x0-int((r-i*0.5)/sqrt(2)) xf=x0+int((r-i*0.5)/sqrt(2)) for x in range(xd,xf+1): x1=x y1=y0+int(sqrt((r-i*0.5)**2-(x-x0)**2)) set_pixel(x,y1,c) for j in range(3): x2=x0+y1-y0 y2=y0+x0-x1 set_pixel(x2,y2,c) x1,y1=x2,y2 def seg(xa,ya,xb,yb,c): if abs(yb-ya)<abs(xb-xa): if xb<xa:xa,xb,ya,yb=xb,xa,yb,ya m=(yb-ya)/(xb-xa) for i in range(xb-xa): set_pixel(xa+i,int(m*i+ya),c) else: if yb<ya:ya,yb,xa,xb=yb,ya,xb,xa m=(xb-xa)/(yb-ya) for i in range(yb-ya): set_pixel(int(m*i+xa),ya+i,c) def personnage(p,c): gus=[[1,2],[2,3],[3,4],[2,5], [5,6],[2,7],[7,8],[8,9],[9,10], [7,11],[11,12],[12,13]] cercle(p[0][0],p[0][1],20,c) cercle(p[7][0],p[7][1],4,c) for i in range(len(gus)): seg(p[gus[i][0]][0],p[gus[i][0]][1], p[gus[i][1]][0],p[gus[i][1]][1],c) def marche(n): for k in range(n): P=[[-20,37],[-18,57],[-17,63],#tete [-30,90],[-25,125],#bras gauche [-15,90],[-10,125],#bras droit [-15,130],#bassin [-35,171],[-40,199],[-35,208],#j.gau. [0,171],[-10,199],[-5,208]]#j.dr. R1,R2,R3,R4=30.0,62.514,45.62,73.39 th1,th2,th3,th4=-0.45,0.32,0.1,-0.1 c=999 for t in range(80): personnage(P,color(255,255,255)) for i in [0,1,2,7]:P[i][0]+=5 co=cos((pi*t)/8) P[3][0]=P[2][0]+int(R1*sin(th1*co)) P[3][1]=P[2][1]+int(R1*cos(th1*co)) P[4][0]=P[2][0]+int(R2*sin(th2+th1*co)) P[4][1]=P[2][1]+int(R2*cos(th2+th1*co)) P[5][0]=P[2][0]+int(R1*sin(-th1*co)) P[5][1]=P[2][1]+int(R1*cos(-th1*co)) P[6][0]=P[2][0]+int(R2*sin(th2-th1*co)) P[6][1]=P[2][1]+int(R2*cos(th2-th1*co)) P[8][0]=P[7][0]+int(R3*sin(th3+th1*co)) P[8][1]=P[7][1]+int(R3*cos(th3+th1*co)) P[9][0]=P[7][0]+int(R4*sin(th4+th1*co)) P[9][1]=P[7][1]+int(R4*cos(th4+th1*co)) P[11][0]=P[7][0]+int(R3*sin(th3-th1*co)) P[11][1]=P[7][1]+int(R3*cos(th3-th1*co)) P[12][0]=P[7][0]+int(R4*sin(th4-th1*co)) P[12][1]=P[7][1]+int(R4*cos(th4-th1*co)) P[10][0]=P[9][0]+10 P[10][1]=P[9][1] P[13][0]=P[12][0]+10 P[13][1]=P[12][1] personnage(P,color(0,0,0)) for i in range(999):c=(c**2)%123