capitalex zrewidował ten Gist 1 month ago. Przejdź do rewizji
2 files changed, 204 insertions
love.wul(stworzono plik)
| @@ -0,0 +1,39 @@ | |||
| 1 | + | @love event $name { } | |
| 2 | + | @love event $name $a { } | |
| 3 | + | @love event $name $a $b { } | |
| 4 | + | @love event $name $a $b $c { } | |
| 5 | + | @love event $name $a $b $c $d { } | |
| 6 | + | @love event $name $a $b $c $d $e { } | |
| 7 | + | @love event $name $a $b $c $d $e $f { } | |
| 8 | + | ||
| 9 | + | @ initialize LOVE event handlers { | |
| 10 | + | @code [ | |
| 11 | + | function love.run() | |
| 12 | + | -- if love.load then love.load(love.arg.parseGameArguments(arg), arg) end | |
| 13 | + | if love.timer then love.timer.step() end | |
| 14 | + | local dt = 0 | |
| 15 | + | return function() | |
| 16 | + | if love.event then | |
| 17 | + | love.event.pump() | |
| 18 | + | for name, a,b,c,d,e,f in love.event.poll() do | |
| 19 | + | self:fact("@love", "event", name, a, b, c, d, e, f) | |
| 20 | + | self:run() | |
| 21 | + | if name == "quit" and not self:take("@keep running") then | |
| 22 | + | return a or 0 | |
| 23 | + | end | |
| 24 | + | end | |
| 25 | + | end | |
| 26 | + | if love.timer then dt = love.timer.step() end | |
| 27 | + | self:fact("@love", "event", "update", dt) self:run() | |
| 28 | + | if love.graphics and love.graphics.isActive() then | |
| 29 | + | love.graphics.origin() | |
| 30 | + | love.graphics.clear(love.graphics.getBackgroundColor()) | |
| 31 | + | self:fact("@love", "event", "draw") | |
| 32 | + | self:run() | |
| 33 | + | love.graphics.present() | |
| 34 | + | end | |
| 35 | + | if love.timer then love.timer.sleep(0.001) end | |
| 36 | + | end | |
| 37 | + | end | |
| 38 | + | ] | |
| 39 | + | } | |
main.wul(stworzono plik)
| @@ -0,0 +1,165 @@ | |||
| 1 | + | { @code [ | |
| 2 | + | local objects = {} | |
| 3 | + | local id = 0 | |
| 4 | + | ] } | |
| 5 | + | ||
| 6 | + | { @ initialize LOVE event handlers | |
| 7 | + | , spawn 1000 circles | |
| 8 | + | } | |
| 9 | + | ||
| 10 | + | ||
| 11 | + | @love event draw { | |
| 12 | + | @ ( draw circles . ) , draw fps | |
| 13 | + | } | |
| 14 | + | ||
| 15 | + | @love event update $dt { | |
| 16 | + | dt $dt ; @ ( update circles . ) | |
| 17 | + | } | |
| 18 | + | ||
| 19 | + | ||
| 20 | + | @ ( draw circles . ) ; circles $id { | |
| 21 | + | circles.stash $id ; | |
| 22 | + | @ ( | |
| 23 | + | $id draw circle with radius 10 . | |
| 24 | + | draw circles . | |
| 25 | + | ) | |
| 26 | + | } | |
| 27 | + | ||
| 28 | + | @ ( draw circles . ) { | |
| 29 | + | @ ( circles.stash move to circles . ) | |
| 30 | + | } | |
| 31 | + | ||
| 32 | + | @ ( update circles . ) ; circles $id ; dt $dt { | |
| 33 | + | circles.stash $id ; dt $dt ; @ ( | |
| 34 | + | self := $id . | |
| 35 | + | self t := self t + $dt . | |
| 36 | + | self x := self t cos * self speed + self cx . | |
| 37 | + | self y := self t sin * self speed + self cy . | |
| 38 | + | self drop . | |
| 39 | + | update circles . | |
| 40 | + | ) | |
| 41 | + | } | |
| 42 | + | ||
| 43 | + | @ ( update circles . ) ; dt $dt { | |
| 44 | + | @ ( circles.stash move to circles . ) | |
| 45 | + | } | |
| 46 | + | ||
| 47 | + | @ spawn n circles ; n := $n { | |
| 48 | + | @ spawn $n circles | |
| 49 | + | } | |
| 50 | + | ||
| 51 | + | @ spawn 0 circles { } | |
| 52 | + | ||
| 53 | + | @ spawn $n circles { | |
| 54 | + | @ ( n := $n - 1 . ) | |
| 55 | + | , spawn a circle | |
| 56 | + | , spawn n circles | |
| 57 | + | } | |
| 58 | + | ||
| 59 | + | @ spawn a circle { | |
| 60 | + | @ ( | |
| 61 | + | self := object new . | |
| 62 | + | self x := 100 random upto 500 . | |
| 63 | + | self y := 100 random upto 500 . | |
| 64 | + | self speed := 1 random upto 100 . | |
| 65 | + | self cx := self x . | |
| 66 | + | self cy := self y . | |
| 67 | + | self t := 1 random upto 360 . | |
| 68 | + | circles <- self . | |
| 69 | + | ) | |
| 70 | + | } | |
| 71 | + | ||
| 72 | + | @ ( $name := ) { | |
| 73 | + | slot $name | |
| 74 | + | } | |
| 75 | + | ||
| 76 | + | @ ( $name $field := ) { | |
| 77 | + | slot $name $field | |
| 78 | + | } | |
| 79 | + | ||
| 80 | + | @ ( self drop . ) ; self := $id { } | |
| 81 | + | ||
| 82 | + | @ ( self $field ) ; self := $id { | |
| 83 | + | self := $id ; | |
| 84 | + | @ $value ; | |
| 85 | + | @code [$value = objects[$id][$field]] | |
| 86 | + | } | |
| 87 | + | ||
| 88 | + | @ ( $number cos ) { | |
| 89 | + | @ $cos ; @code [$cos = math.cos(tonumber($number))] | |
| 90 | + | } | |
| 91 | + | ||
| 92 | + | @ ( $number sin ) { | |
| 93 | + | @ $sin ; @code [$sin = math.sin(tonumber($number))] | |
| 94 | + | } | |
| 95 | + | ||
| 96 | + | @ ( $x + self $field ) ; self := $self { | |
| 97 | + | self := $self ; | |
| 98 | + | @ $z ; @code [$z = tostring($x + objects[$self][$field])] | |
| 99 | + | } | |
| 100 | + | ||
| 101 | + | @ ( $x * self $field ) ; self := $self { | |
| 102 | + | self := $self ; | |
| 103 | + | @ $z ; @code [$z = tostring($x * objects[$self][$field])] | |
| 104 | + | } | |
| 105 | + | ||
| 106 | + | @ ( $x + $y ) { | |
| 107 | + | @ $z ; @code [$z = tostring($x + $y)] | |
| 108 | + | } | |
| 109 | + | ||
| 110 | + | @ ( $x * $y ) { | |
| 111 | + | @ $z ; @code [$z = tostring($x * $y)] | |
| 112 | + | } | |
| 113 | + | ||
| 114 | + | @ ( $x - $y ) { | |
| 115 | + | @ $z ; @code [$z = tostring($x - $y)] | |
| 116 | + | } | |
| 117 | + | ||
| 118 | + | @ ( object new ) { | |
| 119 | + | @ $id ; | |
| 120 | + | @code [ | |
| 121 | + | id = id + 1 | |
| 122 | + | local object = { id = id } | |
| 123 | + | objects[object.id] = object | |
| 124 | + | $id = id | |
| 125 | + | ] | |
| 126 | + | } | |
| 127 | + | ||
| 128 | + | @ ( $lower random upto $upper ) { | |
| 129 | + | @ $n ; @code [$n = tostring(love.math.random(tonumber($lower), tonumber($upper)))] | |
| 130 | + | } | |
| 131 | + | ||
| 132 | + | @ ( $value . ) ; slot self { | |
| 133 | + | self := $value | |
| 134 | + | } | |
| 135 | + | ||
| 136 | + | @ ( $value . ) ; slot n { | |
| 137 | + | n := $value | |
| 138 | + | } | |
| 139 | + | ||
| 140 | + | @ ( $value . ) ; slot self $field ; self := $id { | |
| 141 | + | self := $id ; | |
| 142 | + | @code [objects[$id][$field] = $value] | |
| 143 | + | } | |
| 144 | + | ||
| 145 | + | @ ( self <- $value . ) { | |
| 146 | + | self := $value | |
| 147 | + | } | |
| 148 | + | ||
| 149 | + | @ ( circles <- self . ) ; self := $id { | |
| 150 | + | circles $id | |
| 151 | + | } | |
| 152 | + | ||
| 153 | + | @ ( circles.stash move to circles . ) ; circles.stash $id { | |
| 154 | + | circles $id ; @ ( circles.stash move to circles . ) | |
| 155 | + | } | |
| 156 | + | ||
| 157 | + | @ ( circles.stash move to circles . ) { } | |
| 158 | + | ||
| 159 | + | @ ( $id draw circle with radius $r . ) { | |
| 160 | + | @code [love.graphics.circle("fill", objects[$id].x, objects[$id].y, $r)] | |
| 161 | + | } | |
| 162 | + | ||
| 163 | + | @ draw fps { | |
| 164 | + | @code [love.graphics.print(tostring(love.timer.getFPS( )) .. " - circles: " .. tostring(#objects), 0, 0)] | |
| 165 | + | } | |
Nowsze
Starsze