Здесь собраны примеры простых аниматоров, написанных в разное время
Процесс рисования пишется напрямую в GIF файл
video_export_gif("video.gif") start: draw_pixel = { dot( get_pen_x, get_pen_y, get_dot( get_pen_x, get_pen_y ) ^ #FFFFFF ); } handle_keys( draw_pixel, draw_pixel, 0 ) frame(0) go start
Автор: goglus
Первый аниматор с интерфейсом, написан для рисования на кпк.
h = get_hours m = get_minutes s = get_seconds video_export_gif("$h.$m.$s.gif",-50,-50,100,100) pause_video_export o= SNEG maska=" .... o..o o..o oooo " make_pixi(maska) clear(SNEG ) simm=1 k=47 zm=1 co=-41 color=BLACK start: zoom() SPEED=0 //pole box(-52,-52,103,103,BLACK) fbox(-52,-77,42,10,BLACK) print("save",-51,-76, SNEG) handle_keys({drawe zom clean save if gpr(20,-75,8,8){kn} if gpr(29,-75,8,8){kn}},{drawe },{ pause_video_export }) fbox(20,-75,8,8,BLACK) print("+",21,-75, SNEG) fbox(29,-75,8,8,BLACK) print("-",29,-75, SNEG) // size brush fbox(40,-76,1,1,BLACK) pixi(maska,0,-1,53) //color bottom fbox(-77,co,3,9,color) box(-77,co,3,9,BLACK) //color box(-72,-52,9,9,BLACK) fbox(-72,-41,10,10,BLACK) fbox(-72,-30,10,10,RED) fbox(-72,-19,10,10,GREEN) fbox(-72,-8,10,10,SUN) fbox(-72,3,10,10,BLU) fbox(-72,14,10,10,#chchch) //symmetry brush bottom fbox(-73,k,11,11,RED) box(-73,36,11,11,BLACK) print("2",-71,38, BLACK) box(-73,47,11,11,BLACK) print("1",-71,49, BLACK) fbox(-52,66,42,10,BLACK) print("clear",-51,66, SNEG) frame(SPEED) pause_video_export go start drawe: if gpr(-72,-52,9,9){color= SNEG co=-52} if gpr(-72,-41,10,10){color=BLACK co=-41} if gpr(-72,-30,10,10){color=RED co=-30} if gpr(-72,-19,10,10){color=GREEN co=-19} if gpr(-72,-8,10,10){color=SUN co=-8} if gpr(-72,3,10,10){color=BLU co=3} if gpr(-72,14,10,10){color=#chchch co=14} if gpr(-73,36,11,11) {simm=-1 k=36} if gpr(-73,47,11,11) {simm=1 k=47} // brush if gpr(-52,-52,103,103){ fbox(get_pen_x,get_pen_y,zm,zm, color) //symmetry brush if gpr(-52,-52,103,103){ fbox(simm*get_pen_x,get_pen_y,zm,zm, color)}} ret zom: if gpr(20,-75,8,8){zm+1} if gpr(29,-75,8,8){zm-1} if zm<1 {zm=1} if zm>20 {zm=20} ret clean: if gpr(-52,66,42,10){ fbox(-51,-51,103,103, SNEG)} ret kn: fbox(40,-76,20,20, SNEG) fbox(40,-76,zm,zm,BLACK) ret save: if gpr(-52,-77,42,10){ print("save",-51,-76, RED) //velocity frame SPEED=270 resume_video_export} ret
Заготовка для аниматора с расширенным функционалом
COLOR = RED ANIM_CLEAR = SNEG //Цвет заднего плана FRAME=0 PLAY = 0 ANIM_PIXI = new_pixi( 32, 32, 8 ) set_screen(0) ANIM_ZOOM=4 start: clear(ANIM_CLEAR) if PLAY { fpixi(ANIM_PIXI,0,0,ANIM_ZOOM,0,get_timer(0)/48) } else { fpixi(ANIM_PIXI,0,0,ANIM_ZOOM,0,FRAME) } handle_keys({PLAY = 0 drave framebottom },{drave},{drave}) box( -50, -50, 100, 100, BLACK ) fbox(-70,-50,10,10,RED) print(">",-70,-50,WHITE) fbox(-90,-50,10,10,RED) print("<",-90,-50,WHITE) fbox(-90,-30,35,10,RED) print("play",-90,-30,WHITE) fbox(-90,-10,35,10,RED) print("save",-90,-10,WHITE) frame() if save_animation { //Выполнение запроса на сохранение анимации save_animation = 0 ANIM_SAVE } go start drave: set_screen(ANIM_PIXI,FRAME) if gpr(-50,-50,100,100){ dot( get_pen_x/ANIM_ZOOM, get_pen_y/ANIM_ZOOM, COLOR ) } set_screen( 0 ) ret framebottom: if gpr(-70,-50,10,10) {FRAME+1} if gpr(-90,-50,10,10) {FRAME-1} if gpr(-90,-30,30,10) {PLAY=1 start_timer(0)} if gpr(-90,-10,35,10) {save_animation = 1} //Установка запроса на сохранение анимации ret //ПОДПРОГРАММА СОХРАНЕНИЯ ВСЕГО МУЛЬТА В ФАЙЛ: //ANIM_PIXI - мульт //ANIM_ZOOM - зум //ANIM_CLEAR - цвет заднего плана ANIM_SAVE: h = get_hours m = get_minutes s = get_seconds xs = get_pixi_xsize( ANIM_PIXI ) ys = get_pixi_ysize( ANIM_PIXI ) video_export_gif( "pic_$h.$m.$s.gif", -((xs*ANIM_ZOOM)/2), -((ys*ANIM_ZOOM)/2), xs*ANIM_ZOOM, ys*ANIM_ZOOM ) f = 0 while( f < get_pixi_frames(ANIM_PIXI) ) { clear( ANIM_CLEAR ) fpixi( ANIM_PIXI,0,0,ANIM_ZOOM,0,f ) frame( 100 ) f + 1 } stop_video_export ret
Автор: Al_Rado & goglus
//test pixilang animator XX=-185 YY=-205 X=50 Y=50 FRAMES=1 FRAMES_REAL = 32 // максимальное значение кадров в анимации ZOOM=4 COLOR=1 ANIMA=new_pixi (X*2,Y*2,FRAMES_REAL) CLIPBOARD = new_pixi (X*2,Y*2,1) FRAMENUMBER2=FRAME_NUMBER+1 FRAME_NUMBER=0 SIMMETR=1 ZoomBrash =1 FON=-1 PLAY=-1 FF=0 a=#101010 b=#202020 c=#303030 d=#404040 e=#505050 f=#606060 g=#707070 h=#808080 i=#909090 j=#a0a0a0 k=#b0b0b0 l=#c0c0c0 m=#d0d0d0 n=#e1e1e1 o=#f0f0f0 p=#ffffff GREYSCALE=" aaaaaabbbbbbccccccddddddeeeeeeffffffgggggghhhhhhiiiiiijjjjjjkkkkkkllllllmmmmmmnnnnnnoooooopppppp aaaaaabbbbbbccccccddddddeeeeeeffffffgggggghhhhhhiiiiiijjjjjjkkkkkkllllllmmmmmmnnnnnnoooooopppppp aaaaaabbbbbbccccccddddddeeeeeeffffffgggggghhhhhhiiiiiijjjjjjkkkkkkllllllmmmmmmnnnnnnoooooopppppp aaaaaabbbbbbccccccddddddeeeeeeffffffgggggghhhhhhiiiiiijjjjjjkkkkkkllllllmmmmmmnnnnnnoooooopppppp aaaaaabbbbbbccccccddddddeeeeeeffffffgggggghhhhhhiiiiiijjjjjjkkkkkkllllllmmmmmmnnnnnnoooooopppppp aaaaaabbbbbbccccccddddddeeeeeeffffffgggggghhhhhhiiiiiijjjjjjkkkkkkllllllmmmmmmnnnnnnoooooopppppp aaaaaabbbbbbccccccddddddeeeeeeffffffgggggghhhhhhiiiiiijjjjjjkkkkkkllllllmmmmmmnnnnnnoooooopppppp aaaaaabbbbbbccccccddddddeeeeeeffffffgggggghhhhhhiiiiiijjjjjjkkkkkkllllllmmmmmmnnnnnnoooooopppppp aaaaaabbbbbbccccccddddddeeeeeeffffffgggggghhhhhhiiiiiijjjjjjkkkkkkllllllmmmmmmnnnnnnoooooopppppp aaaaaabbbbbbccccccddddddeeeeeeffffffgggggghhhhhhiiiiiijjjjjjkkkkkkllllllmmmmmmnnnnnnoooooopppppp " make_pixi (GREYSCALE) start: clear (WHITE) PlayANIMA handle_keys({ DRAWING BOTTOM },{ DRAWING },{DRAWING}) fpixi (ANIMA,0,0,ZOOM,0,FRAME_NUMBER) fpixi (ANIMA,0,YY+Y/2+40,0,0,FRAME_NUMBER) SPIRIT box(-X/2,YY+50,X,Y,BLACK) box(-X/2*ZOOM,-57,ZOOM*X+1,ZOOM*Y,BLACK) //save fbox(XX+70,YY+50,36,10,BLACK) print("save",XX+71,YY+50, SNEG) //play fbox(XX+70,YY+65,36,10,BLACK) print("play",XX+71,YY+66, SNEG) //<< frame fbox(XX+70,YY+80,5,10,BLACK) //>> frame fbox(XX+101,YY+80,5,10,BLACK) //#frame print("$FRAMES:$FRAMENUMBER2",XX+76,YY+81,RED) //+frame fbox(XX+111,YY+80,10,10,BLACK) print("+",XX+113,YY+81,SNEG) //zoom brash box(XX+70,YY+95,10,10,BLACK) fbox(XX+70,YY+95,ZoomBrash*5,ZoomBrash*5,BLACK) //simmetr brash fbox(XX+83,YY+95,1*(2-SIMMETR*4),10,BLACK) box(XX+83,YY+95,10,10,BLACK) //eraser fbox(XX+96,YY+95,10,10,COLOR) box(XX+96,YY+95,10,10,BLACK) //copy frame fbox(XX+111,YY+95,10,10,BLACK) fbox(XX+113,YY+94,6,8,SNEG) fbox(XX+115,YY+98,2,2,BLACK) //past frame fbox(XX+126,YY+95,10,10,BLACK) fbox(XX+128,YY+98,6,7,SNEG) fbox(XX+130,YY+99,2,2,BLACK) //clear fbox(XX+70,YY+115,36,10,RED) print("zero",XX+72,YY+116, BLACK) //palitra box(XX+111,YY+114,97,11,BLACK) pixi (GREYSCALE,XX+160,YY+120,0,0) frame(FF) if SaveANIMA = 1 { SaveANIMA = 0 SAVE } go start DRAWING: if gpr(-X/2*ZOOM,-57,ZOOM*X,ZOOM*Y){ set_screen (ANIMA , FRAME_NUMBER) fbox(gpx/ZOOM,gpy/ZOOM,ZoomBrash,ZoomBrash, COLOR) fbox(SIMMETR*gpx/ZOOM,gpy/ZOOM,ZoomBrash,ZoomBrash, COLOR) set_screen (0) } ret BOTTOM: //frame control if gpr(XX+70,YY+80,10,10){if FRAME_NUMBER>1 {FRAME_NUMBER=FRAME_NUMBER-1}} if gpr(XX+96,YY+80,10,10){ if FRAME_NUMBER<FRAMES{FRAME_NUMBER=FRAME_NUMBER+1}} clear (WHITE) //simmetr brash if gpr(XX+83,YY+95,10,10){ SIMMETR = -SIMMETR } //play if gpr(XX+70,YY+65,36,10) { if PLAY= - 1{PLAY=2 FON = 1} else {PLAY=-1 FON = -1} } //save if gpr(XX+70,YY+50,36,10) { SaveANIMA = 1 } //zoom brash if gpr (XX+70,YY+95,10,10){ if ZoomBrash= 1 {ZoomBrash=2 } else {ZoomBrash=1 } } //eraser //if gpr (XX+96,YY+95,10,10) {if COLOR=1 {COLOR=SNEG } else {COLOR=1 }} // очистка кадра if gpr (XX+70,YY+115,36,10) { n=0 while n<((X*2)*(Y*2)) { ANIMA[ ((X*2)*(Y*2)*FRAME_NUMBER) + n ] = 0 n+1 } } //copy frame if gpr(XX+111,YY+95,10,10){ //set_screen (CLIPBOARD,1) fpixi ( ANIMA, 0, 0, ZOOM, 0, FRAME_NUMBER ) clear (RED) set_screen (0) } CLIPBOARD = new_pixi (X*2,Y*2,1) pixi_transp (tmp_frame,1,tmp_frame[0]) n=0 while n<((X*2)*(Y*2)) { CLIPBOARD [ n ] = ANIMA[ ((X*2)*(Y*2)*FRAME_NUMBER) + n ] n+1 } } //past frame if gpr (XX+126,YY+95,10,10){ n=0 while n<((X*2)*(Y*2)) { ANIMA[ ((X*2)*(Y*2)*FRAME_NUMBER) + n ] = CLIPBOARD [ n ] n+1 } } //+frame if gpr (XX+111,YY+80,10,10){ FRAMES+1 } //palitra if gpr (XX+111,YY+115,96,10){ pixi (GREYSCALE,XX+160,YY+120,0,0) COLOR = get_dot(gpx,gpy) } clear( SNEG ) set_screen( 0 ) ret SPIRIT: if FON < 0 { transp (92) fpixi ( ANIMA,0, 0, ZOOM , 0, FRAME_NUMBER -1 ) transp (256) } ret SAVE: h = get_hours m = get_minutes s = get_seconds video_export_gif("anim_$h.$m.$s.gif",-X/2,YY+50,X,Y) f = 0 while( f < FRAMES ) { clear( WHITE ) fpixi ( ANIMA, 0,YY+Y/2+40, 0, 0, f ) frame( 100 ) f+1 } stop_video_export ret PlayANIMA: if PLAY = 2 { fpixi ( ANIMA, 0, 0, ZOOM, 0, FRAME_NUMBER ) FF=100 FRAME_NUMBER + 1 if FRAME_NUMBER > (FRAMES-1) { FRAME_NUMBER = 0 } } ret

