USING: kernel namespaces arrays sequences threads math ui random fry springies springies.ui ; IN: springies.models.3snake : random-range ( a b -- n ) 1+ over - random + ; : model ( -- ) { } clone >nodes { } clone >springs 0.001 >time-slice gravity off 1 19.0 328.0 0.0 0.0 1.0 1.0 mass 2 36.0 328.0 0.0 0.0 1.0 1.0 mass 3 54.0 328.0 0.0 0.0 1.0 1.0 mass 4 72.0 328.0 0.0 0.0 1.0 1.0 mass 5 90.0 328.0 0.0 0.0 1.0 1.0 mass 6 108.0 328.0 0.0 0.0 1.0 1.0 mass 7 126.0 328.0 0.0 0.0 1.0 1.0 mass 8 144.0 328.0 0.0 0.0 1.0 1.0 mass 9 162.0 328.0 0.0 0.0 1.0 1.0 mass 10 180.0 328.0 0.0 0.0 1.0 1.0 mass 11 198.0 328.0 0.0 0.0 1.0 1.0 mass 12 216.0 328.0 0.0 0.0 1.0 1.0 mass 13 234.0 328.0 0.0 0.0 1.0 1.0 mass 14 252.0 328.0 0.0 0.0 1.0 1.0 mass 15 270.0 328.0 0.0 0.0 1.0 1.0 mass 16 288.0 328.0 0.0 0.0 1.0 1.0 mass 17 306.0 328.0 0.0 0.0 1.0 1.0 mass 18 324.0 328.0 0.0 0.0 1.0 1.0 mass 19 342.0 328.0 0.0 0.0 1.0 1.0 mass 20 360.0 328.0 0.0 0.0 1.0 1.0 mass 21 378.0 328.0 0.0 0.0 1.0 1.0 mass 22 396.0 328.0 0.0 0.0 1.0 1.0 mass 23 414.0 328.0 0.0 0.0 1.0 1.0 mass 24 432.0 328.0 0.0 0.0 1.0 1.0 mass 25 450.0 328.0 0.0 0.0 1.0 1.0 mass 26 468.0 328.0 0.0 0.0 1.0 1.0 mass 27 504.0 328.0 0.0 0.0 1.0 1.0 mass 28 486.0 328.0 0.0 0.0 1.0 1.0 mass 29 522.0 328.0 0.0 0.0 1.0 1.0 mass 30 540.0 328.0 0.0 0.0 1.0 1.0 mass 31 558.0 328.0 0.0 0.0 1.0 1.0 mass 32 576.0 328.0 0.0 0.0 1.0 1.0 mass 33 594.0 328.0 0.0 0.0 1.0 1.0 mass 34 612.0 328.0 0.0 0.0 1.0 1.0 mass 35 626.0 328.0 0.0 0.0 1.0 1.0 mass 1 1 2 200.0 1.500000 18.0 spng 2 3 2 200.0 1.500000 18.0 spng 3 3 4 200.0 1.500000 18.0 spng 4 4 5 200.0 1.500000 18.0 spng 5 5 6 200.0 1.500000 18.0 spng 6 6 7 200.0 1.500000 18.0 spng 7 7 8 200.0 1.500000 18.0 spng 8 8 9 200.0 1.500000 18.0 spng 9 9 10 200.0 1.500000 18.0 spng 10 10 11 200.0 1.500000 18.0 spng 11 11 12 200.0 1.500000 18.0 spng 12 12 13 200.0 1.500000 18.0 spng 13 13 14 200.0 1.500000 18.0 spng 14 14 15 200.0 1.500000 18.0 spng 15 15 16 200.0 1.500000 18.0 spng 16 16 17 200.0 1.500000 18.0 spng 17 17 18 200.0 1.500000 18.0 spng 18 18 19 200.0 1.500000 18.0 spng 19 19 20 200.0 1.500000 18.0 spng 20 20 21 200.0 1.500000 18.0 spng 21 21 22 200.0 1.500000 18.0 spng 22 22 23 200.0 1.500000 18.0 spng 23 23 24 200.0 1.500000 18.0 spng 24 24 25 200.0 1.500000 18.0 spng 25 25 26 200.0 1.500000 18.0 spng 26 26 28 200.0 1.500000 18.0 spng 27 28 27 200.0 1.500000 18.0 spng 28 27 29 200.0 1.500000 18.0 spng 29 29 30 200.0 1.500000 18.0 spng 30 30 31 200.0 1.500000 18.0 spng 31 31 32 200.0 1.500000 18.0 spng 32 32 33 200.0 1.500000 18.0 spng 33 33 34 200.0 1.500000 18.0 spng 34 34 35 200.0 1.500000 18.0 spng 35 1 3 200.0 1.500000 36.0 spng 36 2 4 200.0 1.500000 36.0 spng 37 3 5 200.0 1.500000 36.0 spng 38 4 6 200.0 1.500000 36.0 spng 39 5 7 200.0 1.500000 36.0 spng 40 6 8 200.0 1.500000 36.0 spng 41 7 9 200.0 1.500000 36.0 spng 42 8 10 200.0 1.500000 36.0 spng 43 9 11 200.0 1.500000 36.0 spng 44 10 12 200.0 1.500000 36.0 spng 45 11 13 200.0 1.500000 36.0 spng 46 12 14 200.0 1.500000 36.0 spng 47 13 15 200.0 1.500000 36.0 spng 48 14 16 200.0 1.500000 36.0 spng 49 15 17 200.0 1.500000 36.0 spng 50 16 18 200.0 1.500000 36.0 spng 51 17 19 200.0 1.500000 36.0 spng 52 18 20 200.0 1.500000 36.0 spng 53 19 21 200.0 1.500000 36.0 spng 54 20 22 200.0 1.500000 36.0 spng 55 21 23 200.0 1.500000 36.0 spng 56 22 24 200.0 1.500000 36.0 spng 57 23 25 200.0 1.500000 36.0 spng 58 24 26 200.0 1.500000 36.0 spng 59 25 28 200.0 1.500000 36.0 spng 60 26 27 200.0 1.500000 36.0 spng 61 28 29 200.0 1.500000 36.0 spng 62 27 30 200.0 1.500000 36.0 spng 63 29 31 200.0 1.500000 36.0 spng 64 30 32 200.0 1.500000 36.0 spng 65 31 33 200.0 1.500000 36.0 spng 66 32 34 200.0 1.500000 36.0 spng 67 33 35 200.0 1.500000 36.0 spng 68 1 4 200.0 1.500000 53.0 spng 69 2 5 200.0 1.500000 54.0 spng 70 3 6 200.0 1.500000 54.0 spng 71 4 7 200.0 1.500000 54.0 spng 72 5 8 200.0 1.500000 54.0 spng 73 6 9 200.0 1.500000 54.0 spng 74 7 10 200.0 1.500000 54.0 spng 75 8 11 200.0 1.500000 54.0 spng 76 9 12 200.0 1.500000 54.0 spng 77 10 13 200.0 1.500000 54.0 spng 78 11 14 200.0 1.500000 54.0 spng 79 12 15 200.0 1.500000 54.0 spng 80 13 16 200.0 1.500000 54.0 spng 81 14 17 200.0 1.500000 54.0 spng 82 15 18 200.0 1.500000 54.0 spng 83 16 19 200.0 1.500000 54.0 spng 84 17 20 200.0 1.500000 54.0 spng 85 18 21 200.0 1.500000 54.0 spng 86 19 22 200.0 1.500000 54.0 spng 87 20 23 200.0 1.500000 54.0 spng 88 21 24 200.0 1.500000 54.0 spng 89 22 25 200.0 1.500000 54.0 spng 90 23 26 200.0 1.500000 54.0 spng 91 24 28 200.0 1.500000 54.0 spng 92 25 27 200.0 1.500000 54.0 spng 93 26 29 200.0 1.500000 54.0 spng 94 28 30 200.0 1.500000 54.0 spng 95 27 31 200.0 1.500000 54.0 spng 96 29 32 200.0 1.500000 54.0 spng 97 30 33 200.0 1.500000 54.0 spng 98 31 34 200.0 1.500000 54.0 spng 99 32 35 200.0 1.500000 50.0 spng 10 [ -400 400 random-range -400 400 random-range 2array nodes> random set-node-vel ] times ; ! : go* ( quot -- ) ! [ [ [ springies-window* 1000 sleep % ] with-scope ] with-ui ] bake call ; : go* ( quot -- ) '[ [ springies-window* 1000 sleep @ ] with-scope ] with-ui ; ! : go ( -- ) [ [ springies-window* 1000 sleep model ] with-scope ] with-ui ; : go ( -- ) [ model ] go* ; MAIN: go