Advertisement
YaQNjx

Untitled

Jan 20th, 2020
852
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. EXPORT DRAWER()
  2. BEGIN
  3. //RECT;
  4.  
  5. LOCAL r,c,a,b,x,th;
  6. LOCAL edgel,edgef,poola,poolb,dr,dc,k,flash;
  7. LOCAL cachen,cachen2,cachel,cachel2,cachem,cachem2;
  8. LOCAL poola,poolb,autonext,autonextrand;
  9. LOCAL flashcenter,flashx;
  10.  
  11. //DRAW
  12. 12►edgel;
  13. 0►autonext;
  14. 1►autonextrand;
  15.  
  16. //RESET
  17. CHOOSE(cachen,"Choose选择...","Load加载","Reset重置...");
  18. IF cachen==2 THEN
  19.   INPUT(a,"Width宽度","Width宽度","Width宽度");
  20.   INPUT(b,"Height高度","Height高度","Height高度");
  21.   IF b>127 THEN
  22.     MSGBOX("Too high太高!
  23.    Max height最大高度: 127");
  24.     KILL;
  25.   END;
  26.   IF a>256 THEN
  27.     MSGBOX("Too wide太宽!
  28.    Max height最大宽度: 256");
  29.     KILL;
  30.   END;
  31.   IF a≤0 OR b≤0 THEN
  32.     MSGBOX("Should be positive应为正数");
  33.     KILL;
  34.   END;
  35.   IF a*b>511 THEN
  36.     MSGBOX("S>511面积太大!
  37.    Max S最大面积: 511");
  38.     KILL;
  39.   END;
  40.   CEILING(RANDOM(8999))+1000►cachen;
  41.   INPUT(cachen2,"CAPTCHA验证码",string(cachen),"Enter the code left输入左侧的代码");
  42.   IF cachen2==cachen THEN
  43.     MAKEMAT(3,b,a)►M9;
  44.     MSGBOX("Done完成");
  45.   ELSE
  46.     MSGBOX("Error code输入错误!");
  47.     KILL;
  48.   END;
  49. END;
  50.  
  51. IF M9==[[0]] THEN
  52.   MSGBOX("Please reset first请先重置");
  53.   KILL;
  54. END;
  55.  
  56. RECT_P;
  57.  
  58. 0►edgef;
  59. {{-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;
  60.  
  61. 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;
  62.  
  63. SIZE(M9)►cachel2;
  64. cachel2(1)►b;
  65. cachel2(2)►a;
  66. MIN(FLOOR(256/a),FLOOR(127/b))►x;
  67. IF x<edgel THEN
  68.   1►edgef;
  69. END;
  70.  
  71. FOR r FROM 1 TO b DO
  72.   FOR c FROM 1 TO a DO
  73.     RECT_P(G0,-x+x*c,-x+x*r,x*c-edgef,x*r-edgef,M9(r,c)*edgef,M9(r,c));
  74.   END;
  75. END;
  76.  
  77. //EDIT
  78. 1►dr;1►dc;
  79.  
  80. WHILE 1 DO
  81.   WAIT(0.01);
  82.  
  83.   3*(FLOOR(Time/250) MOD 2)►flash;
  84.   RECT_P(G0,-0.75x+x*dc,-0.75x+x*dr,-0.25x+x*dc,-0.25x+x*dr,3-flash,flash);
  85.   GETKEY►k;
  86.  
  87.   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
  88.     IF POS({0,1,2,3},k) THEN
  89.       IF POS({0,1},k) THEN
  90.         M9►cachem;
  91.         ADDROW(cachem,M9(1+k*(b-1)),b+1-k*b)►cachem;
  92.         DELROW(cachem,1+k*b)►M9;
  93.       END;
  94.      
  95.       IF POS({2,3},k) THEN
  96.         k-2►k;
  97.         M9►cachem;
  98.         {M9(1,1+k*(a-1))}►cachel;
  99.         FOR th FROM 2 TO b DO
  100.           CONCAT(cachel,{M9(th,1+k*(a-1))})►cachel;
  101.         END;
  102.         MAKEMAT(cachel(I),1,b)►cachem2;
  103.         cachem2(1)►cachem2;
  104.         ADDCOL(cachem,cachem2,a+1-k*a)►cachem;
  105.         DELCOL(cachem,1+k*a)►M9;
  106.       END;
  107.      
  108.       //REDRAW
  109.       FOR r FROM 1 TO b DO
  110.         FOR c FROM 1 TO a DO
  111.           RECT_P(G0,-x+x*c,-x+x*r,x*c-edgef,x*r-edgef,M9(r,c)*edgef,M9(r,c));
  112.         END;
  113.       END;
  114.       CONTINUE;
  115.     END;
  116.    
  117.     IF POS({24,37,38,39,41,42,43,44,47,48,49},k) THEN
  118.       dr►X;
  119.       dc►Y;
  120.       EVAL(poolb(k-23))►M9(dr,dc);
  121.     END;
  122.    
  123.     IF (POS({42,43,44,47,48},k) AND autonext) OR (POS({37,38,39},k) AND autonextrand) THEN
  124.       25►k;
  125.     END;
  126.    
  127.     RECT_P(G0,-x+x*dc,-x+x*dr,x*dc-edgef,x*dr-edgef,M9(dr,dc)*edgef,M9(dr,dc));
  128.    
  129.     IF k==24 OR k≥31 THEN
  130.       CONTINUE;
  131.     END;
  132.    
  133.     //space.bilibili.com/14228634
  134.  
  135.     poola(k-8)►cachel;
  136.    
  137.     IF (dr≠1 AND dc==1 AND cachel(2)==-1) OR (dr≠b ANDdc==a AND cachel(2)==1) THEN
  138.       dr-1+2*(dc-1)/(a-1)►dr;
  139.       a+1-dc►dc;
  140.       CONTINUE;
  141.     END;
  142.    
  143.     IF (dr==1 AND dc==1 AND cachel(2)==-1) OR (dr==b ANDdc==a AND cachel(2)==1) THEN
  144.       b+1-dr►dr;
  145.       a+1-dc►dc;
  146.       CONTINUE;
  147.     END;
  148.    
  149.     MIN(MAX(cachel(1)+dr,1),b)►dr;
  150.     MIN(MAX(cachel(2)+dc,1),a)►dc;
  151.     END;
  152.    
  153.   END;
  154.  
  155. END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement