Stick Figure Animations

Text:


@@============================================================================
@@ .:....1....:....2....:....3....:....4....:....5....:....6....:....7....:...
@@ ---------------------------------------------------------------------------
@@ stick figure animations
@@ (soon, I hope to convert these from line-based streams to character-
@@ based ones, so that they can be placed in any location on the console.)
@@ ---------------------------------------------------------------------------
@@ .:....1....:....2....:....3....:....4....:....5....:....6....:....7....:...
@@ ---------------------------------------------------------------------------
@@ Source of material for 'cartwheel': Unsigned material located at...
@@ http://www.geocities.com/SouthBeach/Marina/4942/ascii.htm
@@
@@ 'Juggle', an original animation by Trispis.
@@ ---------------------------------------------------------------------------
@@ .:....1....:....2....:....3....:....4....:....5....:....6....:....7....:...
@@ ---------------------------------------------------------------------------
@wait 0=@set me=~:[create(stickman,10)]
@set [get(me/~)]=!no_command
&A0`1 [get(me/~)]=§§o§§
&A0`2 [get(me/~)]=§/|\§
&A0`3 [get(me/~)]=§/§\§
&A1`1 [get(me/~)]=\§o§/
&A1`2 [get(me/~)]=§§|§§
&A1`3 [get(me/~)]=§/§\§
&A2`1 [get(me/~)]=§_§o§
&A2`2 [get(me/~)]=§§/\§
&A2`3 [get(me/~)]=§|§\§
&A3`1 [get(me/~)]=§§§§§§§
&A3`2 [get(me/~)]=§§___\o
&A3`3 [get(me/~)]=§/)§§|§
&A4`1 [get(me/~)]=§§§__|§§
&A4`2 [get(me/~)]=§§§§§\o§
&A4`3 [get(me/~)]=§§§§§(§\
&A5`1 [get(me/~)]=§§§§§§\§/
&A5`2 [get(me/~)]=§§§§§§§|§
&A5`3 [get(me/~)]=§§§§§§/o\
&A6`1 [get(me/~)]=§§§§§§§§§§|__
&A6`2 [get(me/~)]=§§§§§§§§o/§§§
&A6`3 [get(me/~)]=§§§§§§§/§)§§§
&A7`1 [get(me/~)]=§§§§§§§§§§§§§§
&A7`2 [get(me/~)]=§§§§§§§§§o/__§
&A7`3 [get(me/~)]=§§§§§§§§§|§§(\
&A8`1 [get(me/~)]=§§§§§§§§§§§§o§_
&A8`2 [get(me/~)]=§§§§§§§§§§§§/\§
&A8`3 [get(me/~)]=§§§§§§§§§§§§/§|
&A9`1 [get(me/~)]=§§§§§§§§§§§§\§o§/
&A9`2 [get(me/~)]=§§§§§§§§§§§§§§|§§
&A9`3 [get(me/~)]=§§§§§§§§§§§§§/§\§
&A10`1 [get(me/~)]=§§§§§§§§§§§§§§o§§
&A10`2 [get(me/~)]=§§§§§§§§§§§§§/|\§
&A10`3 [get(me/~)]=§§§§§§§§§§§§§/§\§
@fo me=@edit [get(me/~)]/A*`*=§,[chr(160)]
&cartwheel [get(me/~)]=$cartwheel:@dol lnum(0, 10)=@wait #@=th [null(iter(1 2 3, pemit(%#, CONSOLE [itext(0)] [v(A##`[itext(0)])])))]
@@
&J`0`1 [get(me/~)]=~~~~~~~
&J`0`2 [get(me/~)]=~__O__
&J`0`3 [get(me/~)]=(oo|~o)
&J`0`4 [get(me/~)]=~~/~\
&J`0`5 [get(me/~)]=~_|~|_
@@
&J`1`1 [get(me/~)]=~~~~~o
&J`1`2 [get(me/~)]=~__O__)
&J`1`3 [get(me/~)]=(oo|~~
&J`1`4 [get(me/~)]=~~/~\
&J`1`5 [get(me/~)]=~_|~|_
@@
&J`2`1 [get(me/~)]=~~~~o
&J`2`2 [get(me/~)]=~~_O_
&J`2`3 [get(me/~)]=~(o|o)
&J`2`4 [get(me/~)]=~~/~\
&J`2`5 [get(me/~)]=~_|~|_
@@
&J`3`1 [get(me/~)]=~~~o~~o
&J`3`2 [get(me/~)]=~~_O__/
&J`3`3 [get(me/~)]=~(o|
&J`3`4 [get(me/~)]=~~/~\
&J`3`5 [get(me/~)]=~_|~|_
@@
&J`4`1 [get(me/~)]=~~o~~o
&J`4`2 [get(me/~)]=~~_O__)
&J`4`3 [get(me/~)]=~(o|
&J`4`4 [get(me/~)]=~~/~\
&J`4`5 [get(me/~)]=~_|~|_
@@
&J`5`1 [get(me/~)]=~o~~o
&J`5`2 [get(me/~)]=~~_O_~
&J`5`3 [get(me/~)]=~(o|~)
&J`5`4 [get(me/~)]=~~/~\
&J`5`5 [get(me/~)]=~_|~|_
@@
&J`6`1 [get(me/~)]=~o~~o
&J`6`2 [get(me/~)]=~~_O_~
&J`6`3 [get(me/~)]=~/~|o)
&J`6`4 [get(me/~)]=~~/~\
&J`6`5 [get(me/~)]=~_|~|_
@@
&J`7`1 [get(me/~)]=~~~o~~o
&J`7`2 [get(me/~)]=o~~O__/
&J`7`3 [get(me/~)]=~\/|
&J`7`4 [get(me/~)]=~~/~\
&J`7`5 [get(me/~)]=~_|~|_
@@
&J`8`1 [get(me/~)]=~~o~~o
&J`8`2 [get(me/~)]=~__O__)
&J`8`3 [get(me/~)]=(o~|
&J`8`4 [get(me/~)]=~~/~\
&J`8`5 [get(me/~)]=~_|~|_
@@
&J`9`1 [get(me/~)]=~o~~o
&J`9`2 [get(me/~)]=~~_O_~
&J`9`3 [get(me/~)]=~(o|~)
&J`9`4 [get(me/~)]=~~/~\
&J`9`5 [get(me/~)]=~_|~|_
@@
&J`10`1 [get(me/~)]=~o~~o
&J`10`2 [get(me/~)]=~~_O_~
&J`10`3 [get(me/~)]=~/~|o)
&J`10`4 [get(me/~)]=~~/~\
&J`10`5 [get(me/~)]=~_|~|_
@@
&J`11`1 [get(me/~)]=~~~o
&J`11`2 [get(me/~)]=o~~O_~
&J`11`3 [get(me/~)]=~\/|o)
&J`11`4 [get(me/~)]=~~/~\
&J`11`5 [get(me/~)]=~_|~|_
@@
&J`12`1 [get(me/~)]=~~o
&J`12`2 [get(me/~)]=~__O_~
&J`12`3 [get(me/~)]=(o~|o)
&J`12`4 [get(me/~)]=~~/~\
&J`12`5 [get(me/~)]=~_|~|_
@@
&J`13`1 [get(me/~)]=~o
&J`13`2 [get(me/~)]=~~_O_~
&J`13`3 [get(me/~)]=~(o|o)
&J`13`4 [get(me/~)]=~~/~\
&J`13`5 [get(me/~)]=~_|~|_
@@
&J`14`1 [get(me/~)]=~
&J`14`2 [get(me/~)]=o~_O__~
&J`14`3 [get(me/~)]=~/~|oo)
&J`14`4 [get(me/~)]=~~/~\
&J`14`5 [get(me/~)]=~_|~|_
@@
&J`15`1 [get(me/~)]=~
&J`15`2 [get(me/~)]=~__O_~
&J`15`3 [get(me/~)]=o~~|o)
&J`15`4 [get(me/~)]=~~/~\o
&J`15`5 [get(me/~)]=~_|~|_
@@
&J`16`1 [get(me/~)]=~
&J`16`2 [get(me/~)]=~__O_~
&J`16`3 [get(me/~)]=~~~|~\
&J`16`4 [get(me/~)]=o~/~\o
&J`16`5 [get(me/~)]=~_|~|_o
@@
&J`17`1 [get(me/~)]=~
&J`17`2 [get(me/~)]=~\_O_/
&J`17`3 [get(me/~)]=~~~|~
&J`17`4 [get(me/~)]=~~/~\
&J`17`5 [get(me/~)]=o_|~|_oo
@@
&J`18`1 [get(me/~)]=~
&J`18`2 [get(me/~)]=~~_O_
&J`18`3 [get(me/~)]=~<~|~>
&J`18`4 [get(me/~)]=~~/~\
&J`18`5 [get(me/~)]=o_|~|_oo
@wait 0=@edit [get(me/~)]/J*=~,%b
@@
&juggle [get(me/~)]=$juggle:@dol lnum(0, 18)=@wait #@=th null(iter(1 2 3 4 5, pemit(%#, CONSOLE [itext(0)] [v(J`##`[itext(0)])])))
@@============================================================================
@@ .:....1....:....2....:....3....:....4....:....5....:....6....:....7....:...
@@ ---------------------------------------------------------------------------
@@ Boot Wizard: an original animation - sad hack PD2007.
@@
@@ .:....1....:....2....:....3....:....4....:....5....:....6....:....7....:...
@@ NOTE: This uses the following, slightly different, input definition:
@@
@@ /def -ag -mregexp -t'CONSOLE R([1-5])C(\d+) (.+)' statstuffbychar = \
@@ etc.
@@
@@ The purpose for this modified version is to circumvent complications from
@@ having to escape commas.
@@ .:....1....:....2....:....3....:....4....:....5....:....6....:....7....:...
@@
&bootwiz [get(me/~)]=$bootwiz:@dolist 0 1=@wait [mul(##,10)]=@tr me/S`##=%#
@@
&UFUN`CENTER [get(me/~)]=[setq(w, switch(width(%#), *, 77))][setq(m, mod(%qw, 2))][setq(c, add(%qm, div(sub(%qw, %qm), 2)))]%qc
@@
&UFUN`CLEARLINE [get(me/~)]=CONSOLE %0 [chr(160)]
@@
&S`0 [get(me/~)]=@dolist [iter(1 2 3 4 5, pemit(setr(u, %0), CONSOLE [itext(0)] [chr(160)]))][lnum(1, 9)]=@wait ##=th [null(iter(get(me/S`0`F`##), [pemit(%qu, CONSOLE R[first(first(itext(0)), .)]C[add(%vc, rest(first(itext(0)), .))] [edit(iter(rest(itext(0)), ansi(first(itext(0), .), chr(rest(itext(0), .)))),%b,)])],|))]
@@
&S`0`F`1 [get(me/~)]=5.0 .046
@@
&S`0`F`2 [get(me/~)]=5.0 .111
@@
&S`0`F`3 [get(me/~)]=5.-1 .111 .056 .111
@@
&S`0`F`4 [get(me/~)]=4.-1 .111 .244 .111|5.-2 .111 .056 .056 .056 .111
@@
&S`0`F`5 [get(me/~)]=3.-1 .095 .212 .095|4.-2 .111 .056 .056 .056 .111|5.-3 .111 .056 .056 .056 .056 .056 .111
@@
&S`0`F`6 [get(me/~)]=2.-1 .095 .212 .095|3.-2 .047 .160 .089 .160 .092|4.-2 .046 .111 .056 .111 .046|5.-3 .046 .111 .056 .056 .056 .111 .046
@@
&S`0`F`7 [get(me/~)]=2.-3 .119 .095 .095 .212 .095 .095 .119|3.-2 .092 .095 .089 .095 .047|4.-2 .160 .047 .095 .092 .160|5.-3 .046 .111 .056 .056 .056 .111 .046
@@
&S`0`F`8 [get(me/~)]=1.-3 .109 .160 .160 .160 .160 .160 .109|2.-3 .160 .124 .092 .212 .047 .124 .160|3.-2 .160 .092 .089 .047 .160|5.-3 .046 .095 .047 .160 .092 .095 .046
@@
&S`0`F`9 [get(me/~)]=1.-3 .160 .095|1.2 .095 .160|2.-3 .109 .095|2.2 .095 .109|3.-3 bh.042|3.3 bh.042|5.-3 .160|5.3 .160
@@
&S`1 [get(me/~)]=@tr me/S`1`F`3=%0,3
@@
&S`1`F`3 [get(me/~)]=@dol 1 2=@wait ##=@tr me/S`1`F`3`##=%0,3
@@
&S`1`F`3`1 [get(me/~)]=@dolist [lnum(sub(%vc, 4), 0)]=@wait 0=@pemit %0=CONSOLE R%1C[setr(c, ##)] [edit(iter(lnum(sub(%vc, 4), %qc), [ansi(pickrand(r y g c b m), pickrand(+ ~ ^ -))]),%b,)]
@@
&S`1`F`3`2 [get(me/~)]=@dolist h a c k [iter(lnum(5,sub(%vc,4)),.)]=@wait 0=@pemit %0=CONSOLE R%1C[dec(setr(c,#@))] [switch(##,.,chr(160),##)][edit(iter(lnum(%qc,sub(%vc,4)),[ansi(pickrand(r y g c b m),pickrand(+ ~ ^ -))]),%b,)]

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

bootwiz

bootwiz is an initial demo of a 'boot wizard', written in MUX2 by a native Pennmush softcoder (so it should work in both).

at the time of initial posting, it has sort of 'bumped into' a couple of other issues...

1. screen real estate
2. softcode vs. client scripting and design.
3. compromise balance and timing.

re: screen real estate

this is 'how much of this space is dedicated to what' and 'who decides these things'?

re: softcode vs. client etc.

related to screen real estate, this is 'how much of this can/should be carreid by online softcode vs. how much of this can/should be handled by offline scripting'?

re: compromise

this is the solution to the above questions in concert with some sort of timed update system (aka cron). it brings to mind options such as that illustrated in the chat-based broadcast cron demonstrated in the warpedcore ~cron package elsewhere on this site.

note: with a few clever patterns and definitions, the softcode could actually configure the client... and conversely, the client could control the majority of what is displayed by using its own cron/wait system. and so on and so forth... as extensions to the 'compromise' section above.

note: as soon as i figure out how to get tf to support unicode, i'll be exploiting it asap thereafter for graphical goodies.

bump

another thing I'm bumping into is cost. running an animation tends to consume a lot of pennies. as will any realtime update widget running at a periodic interval (once per minute? once per second?). immediate solutions which come to mind...

global no_pay object to manage public stuff (re chat-broadcasts and such)

allow special no_pay objects (limited to 1 per player?) from which to run streaming media code

decrease the command cost from 1/64 to 1/128 (or 1/256?). (modern parsers and hardware should be up to the task, eh?)

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.