home *** CD-ROM | disk | FTP | other *** search
/ Dos/V Magazine 2002 July 1 / VMAG130101.iso / ONLINE / monthly / calc / CLPCA511.LZH / ClipCalc / EXTFUNC / GAME / dragon2.cef < prev    next >
Encoding:
Text File  |  2002-08-18  |  1023 b   |  53 lines

  1. #!/usr/local/bin/clip
  2. #âhâëâSâôâJü[âu(ö±ì─ïAö┼) dragon curve
  3. #\!- <backcolor> <order>
  4.  
  5. func draw_rel dx dy backcolor
  6.     :ans 0
  7.  
  8.     # î╗ì▌ÉFé≡ìXÉVé╖éΘ
  9.     @C = gcolor + 1
  10.     if @C == backcolor; @C++; endif
  11.     if @C > 255
  12.         @C = (backcolor == 0) ? 1 0
  13.     endif
  14.  
  15.     :gline (gcx+dx) (gcy+dy) @C
  16. endfunc
  17.  
  18. :params backcolor order
  19. :ans 0
  20. :enum RIGHT LEFT
  21.  
  22. :var k ii p q dx dy dx1 dy1
  23. :array fold
  24.  
  25. if @! < 2
  26.     backcolor =   0; :scan ["öwîiÉF? ] backcolor
  27.     order     =  10; :scan ["ê╩Éö? ]   order
  28. endif
  29.  
  30. :gworld 640 400
  31. :gclear backcolor
  32.  
  33. :gmove 200 140
  34. :gcolor 0
  35. dx = 0; dy = 2; draw_rel (3 * dx) (3 * dy) backcolor; p = 0
  36. for k = 1; k <= order; k++
  37.     fold p = LEFT; q = 2 * p
  38.     for ii = p; ii <= q; ii++
  39.         switch fold (q - ii)
  40.         case RIGHT
  41.             fold ii = LEFT; dx1 = [-]dy; dy1 = dx
  42.             breakswi
  43.         case LEFT
  44.             fold ii = RIGHT; dx1 = dy; dy1 = [-]dx
  45.             breakswi
  46.         endswi
  47.         draw_rel (dx + dx1) (dy + dy1) backcolor
  48.         draw_rel (3 * dx1) (3 * dy1) backcolor
  49.         dx = dx1; dy = dy1
  50.     next
  51.     p = q + 1
  52. next
  53.