新颖Lisp程序
我附加了一个新颖的lisp程序,它使用对象反应器将几个圆连接在一起,形成一个蛇型图形。蛇头是使用grread操纵的。两个主要功能是“Snake”和“Snake2”。
这只是最初的想法。(更多圆圈)
蛇2:是更少的圆圈,但圆圈可以推动其他圆圈。(当我在这个圆上添加太多的圆时,AutoCAD不太喜欢它)
我希望你喜欢!
当做
Hippe013
蛇LSP Hippe013,我能说什么。。。Awaysome。。。这两个版本简直太棒了。。。只有一件事,在lisp的末尾添加(princ),它将删除作为输出的文本重复。。。我必须承认我没有太多使用反应堆,但这一个是完美的。。。
祝你一切顺利,M.R。 谢谢Marko!我有一个同事说这是一个很好的减压工具。我不得不称赞李,因为我受到了他的启发。lsp和他对mapcar和lambda的巧妙使用,我现在终于开始理解和更频繁地使用了。 好主意,嬉皮士-谢谢你的赞誉,我很高兴能激励你!
如果你想寻求建议,我个人会避免在这项任务中使用反应堆,例如:
(defun c:snake ( / c1 cl el gr p1 r1 r2 rl vs )
(if (setq p1 (getpoint "\nClick to generate the snake! "))
(progn
(setq vs (getvar 'viewsize)
r1 (/ vs (LM:randrange 30 80))
)
(repeat 20
(setq el (cons (cons -1 (entmakex (list '(0 . "CIRCLE") (cons 10 p1) (cons 40 r1) (cons 62 (logand (LM:randrange 2 255) (~ 1)))))) el)
cl (cons p1 cl)
rl (cons r1 rl)
r2 (/ vs (LM:randrange 30 80))
p1 (cons (- (car p1) r1 r2) (cdr p1))
r1 r2
)
)
(setq el (reverse el)
cl (reverse cl)
rl (reverse rl)
)
(while (= 5 (car (setq gr (grread t 13 0))))
(entmod (list (car el) (cons 10 (setq c1 (cadr gr)))))
(setq cl
(cons c1
(mapcar
'(lambda ( a b c d )
(entmod (list a (cons 10 (setq c1 (polar c1 (angle c1 c) (+ b d))))))
c1
)
(cdr el) (cdr rl) (cdr cl) rl
)
)
)
)
)
)
(princ)
)
;; Rand-Lee Mac
;; PRNG implementing a linear congruential generator with
;; parameters derived from the book 'Numerical Recipes'
(defun LM:rand ( / a c m )
(setq m 4294967296.0
a 1664525.0
c 1013904223.0
$xn (rem (+ c (* a (cond ($xn) ((getvar 'date))))) m)
)
(/ $xn m)
)
;; Random in Range-Lee Mac
;; Returns a pseudo-random integral number in a given range (inclusive)
(defun LM:randrange ( a b )
(fix (+ a (* (LM:rand) (- b a -1))))
)
(princ)
创意不错!!好的激励!
我更喜欢实时entmod,但很少看到反应堆的例子,很好的方法!谢谢大家分享!
嬉皮士和李你们都应该得到荣誉 @Hippe013:多酷的想法,这么好的代码。做得好! 可以在AutoCAD中运行“Snake”游戏吗?谈谈新奇的LSP!
页:
[1]