Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- EXPORT DRAWER()
- BEGIN
- //RECT;
- LOCAL r,c,a,b,x,th;
- LOCAL edgel,edgef,poola,poolb,dr,dc,k,flash;
- LOCAL cachen,cachen2,cachel,cachel2,cachem,cachem2;
- LOCAL poola,poolb,autonext,autonextrand;
- LOCAL flashcenter,flashx;
- //DRAW
- 12►edgel;
- 0►autonext;
- 1►autonextrand;
- //RESET
- CHOOSE(cachen,"Choose选择...","Load加载","Reset重置...");
- IF cachen==2 THEN
- INPUT(a,"Width宽度","Width宽度","Width宽度");
- INPUT(b,"Height高度","Height高度","Height高度");
- IF b>127 THEN
- MSGBOX("Too high太高!
- Max height最大高度: 127");
- KILL;
- END;
- IF a>256 THEN
- MSGBOX("Too wide太宽!
- Max height最大宽度: 256");
- KILL;
- END;
- IF a≤0 OR b≤0 THEN
- MSGBOX("Should be positive应为正数");
- KILL;
- END;
- IF a*b>511 THEN
- MSGBOX("S>511面积太大!
- Max S最大面积: 511");
- KILL;
- END;
- CEILING(RANDOM(8999))+1000►cachen;
- INPUT(cachen2,"CAPTCHA验证码",string(cachen),"Enter the code left输入左侧的代码");
- IF cachen2==cachen THEN
- MAKEMAT(3,b,a)►M9;
- MSGBOX("Done完成");
- ELSE
- MSGBOX("Error code输入错误!");
- KILL;
- END;
- END;
- IF M9==[[0]] THEN
- MSGBOX("Please reset first请先重置");
- KILL;
- END;
- RECT_P;
- 0►edgef;
- {{-1,0},{0,1},0,0,0,{0,-1},{1,0},0,0,{-1,-1},{-1,0},{-1,1},0,0,{0,-1},0,{0,1},0,0,{1,-1},{1,0},{1,1}}►poola;
- CONCAT({QUOTE(3-M9(X,Y))},MAKELIST(0,T,25,36,1),{QUOTE(FLOOR(RANDOM(2))),QUOTE(FLOOR(RANDOM(2))+1),QUOTE(FLOOR(RANDOM(2))+2),0,QUOTE(3-M9(X,Y)),1,2,3,0,0,0,3,QUOTE(3-M9(X,Y))})►poolb;
- SIZE(M9)►cachel2;
- cachel2(1)►b;
- cachel2(2)►a;
- MIN(FLOOR(256/a),FLOOR(127/b))►x;
- IF x<edgel THEN
- 1►edgef;
- END;
- FOR r FROM 1 TO b DO
- FOR c FROM 1 TO a DO
- RECT_P(G0,-x+x*c,-x+x*r,x*c-edgef,x*r-edgef,M9(r,c)*edgef,M9(r,c));
- END;
- END;
- //EDIT
- 1►dr;1►dc;
- WHILE 1 DO
- WAIT(0.01);
- 3*(FLOOR(Time/250) MOD 2)►flash;
- RECT_P(G0,-0.75x+x*dc,-0.75x+x*dr,-0.25x+x*dc,-0.25x+x*dr,3-flash,flash);
- GETKEY►k;
- IF POS({0,1,2,3,9,10,14,15,18,19,20,23,24,25,28,29,30,37,38,39,41,42,43,44,47,48,49},k) THEN
- IF POS({0,1,2,3},k) THEN
- IF POS({0,1},k) THEN
- M9►cachem;
- ADDROW(cachem,M9(1+k*(b-1)),b+1-k*b)►cachem;
- DELROW(cachem,1+k*b)►M9;
- END;
- IF POS({2,3},k) THEN
- k-2►k;
- M9►cachem;
- {M9(1,1+k*(a-1))}►cachel;
- FOR th FROM 2 TO b DO
- CONCAT(cachel,{M9(th,1+k*(a-1))})►cachel;
- END;
- MAKEMAT(cachel(I),1,b)►cachem2;
- cachem2(1)►cachem2;
- ADDCOL(cachem,cachem2,a+1-k*a)►cachem;
- DELCOL(cachem,1+k*a)►M9;
- END;
- //REDRAW
- FOR r FROM 1 TO b DO
- FOR c FROM 1 TO a DO
- RECT_P(G0,-x+x*c,-x+x*r,x*c-edgef,x*r-edgef,M9(r,c)*edgef,M9(r,c));
- END;
- END;
- CONTINUE;
- END;
- IF POS({24,37,38,39,41,42,43,44,47,48,49},k) THEN
- dr►X;
- dc►Y;
- EVAL(poolb(k-23))►M9(dr,dc);
- END;
- IF (POS({42,43,44,47,48},k) AND autonext) OR (POS({37,38,39},k) AND autonextrand) THEN
- 25►k;
- END;
- RECT_P(G0,-x+x*dc,-x+x*dr,x*dc-edgef,x*dr-edgef,M9(dr,dc)*edgef,M9(dr,dc));
- IF k==24 OR k≥31 THEN
- CONTINUE;
- END;
- //space.bilibili.com/14228634
- poola(k-8)►cachel;
- IF (dr≠1 AND dc==1 AND cachel(2)==-1) OR (dr≠b ANDdc==a AND cachel(2)==1) THEN
- dr-1+2*(dc-1)/(a-1)►dr;
- a+1-dc►dc;
- CONTINUE;
- END;
- IF (dr==1 AND dc==1 AND cachel(2)==-1) OR (dr==b ANDdc==a AND cachel(2)==1) THEN
- b+1-dr►dr;
- a+1-dc►dc;
- CONTINUE;
- END;
- MIN(MAX(cachel(1)+dr,1),b)►dr;
- MIN(MAX(cachel(2)+dc,1),a)►dc;
- END;
- END;
- END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement