Add alt code for 2000/thadgavin
This version allows for delaying between the writing of characters (for curses) or pixels (for SDL). I explained how to reconfigure it in the README.md file. This is useful for more modern systems as well as if you're sensitive to rapid swirling. Typo fixes in README.md.
This commit is contained in:
1 parent
61de38e6f0
commit
3f19712230
5 files changed
+147
-7
No files matched your search
@@ -1,2 +1,4 @@
|
||||
thadgavin
|
||||
thadgavin_sdl
|
||||
thadgavin.alt
|
||||
thadgavin.alt_sdl
|
||||
+11
-4
@@ -57,11 +57,11 @@ ARCH=
|
||||
|
||||
# Defines that are needed to compile
|
||||
#
|
||||
CDEFINE=
|
||||
CDEFINE= -DZ=30 -DZS=150000
|
||||
|
||||
# Include files that are needed to compile
|
||||
#
|
||||
CINCLUDE=
|
||||
CINCLUDE= -include unistd.h
|
||||
|
||||
# Optimization
|
||||
#
|
||||
@@ -113,8 +113,8 @@ OBJ= ${PROG}.o
|
||||
DATA=
|
||||
TARGET= ${PROG}
|
||||
#
|
||||
ALT_OBJ=
|
||||
ALT_TARGET=
|
||||
ALT_OBJ= ${PROG}.alt.o
|
||||
ALT_TARGET= ${PROG}.alt
|
||||
|
||||
|
||||
#################
|
||||
@@ -140,6 +140,13 @@ ${PROG}_sdl: ${PROG}.c
|
||||
alt: data ${ALT_TARGET}
|
||||
@${TRUE}
|
||||
|
||||
${PROG}.alt: ${PROG}.alt.c
|
||||
${CC} ${CFLAGS} $< -o $@ ${LIBS}
|
||||
|
||||
|
||||
${PROG}.alt_sdl: ${PROG}.alt.c
|
||||
${CC} ${CFLAGS} -DSDL `${SDL1_CONFIG} --cflags` $< -o $@ ${LIBS} `${SDL1_CONFIG} --libs`
|
||||
|
||||
# data files
|
||||
#
|
||||
data: ${DATA}
|
||||
|
||||
@@ -22,7 +22,7 @@ make
|
||||
NOTE: the author suggested `-O6` but at least some gcc versions support no more
|
||||
than level 3 which is what the Makefile has.
|
||||
|
||||
To use the SDL version works independentlt from the cueses version:
|
||||
To use the SDL version that works independently from the curses version:
|
||||
|
||||
```sh
|
||||
make thadgavin_sdl
|
||||
@@ -37,8 +37,8 @@ Use `thadgavin_sdl` as you would `thadgavin` below.
|
||||
./thadgavin
|
||||
```
|
||||
|
||||
WARNING: if you are sensitive to rapid movement you should probably avoid
|
||||
this entry, both the SDL version and the curses version.
|
||||
WARNING: if you are sensitive to rapid movement or if you want to see better
|
||||
what is going on then please see the Alternate code section.
|
||||
|
||||
NOTE: in curses mode you might want to type `reset` after execution of this
|
||||
program as the program does not call `endwin()`. Using `reset` will clear the
|
||||
@@ -51,6 +51,38 @@ screen.
|
||||
echo "Do or do not. There is no try."
|
||||
```
|
||||
|
||||
## Alternate code:
|
||||
|
||||
An alternate version exists which allows you to slow down the printing of the
|
||||
characters, useful for those with modern systems or those who are sensitive to
|
||||
rapid moving swirling. To use:
|
||||
|
||||
|
||||
```sh
|
||||
make alt
|
||||
```
|
||||
|
||||
To make the SDL version:
|
||||
|
||||
```sh
|
||||
make thadgavin.alt_sdl
|
||||
```
|
||||
|
||||
If you wish to reconfigure the delay you can do so like:
|
||||
|
||||
```sh
|
||||
make -DZ=50 clobber alt
|
||||
make -DZS=5000 clobber thadgavin.alt_sdl
|
||||
```
|
||||
|
||||
Use `thadgavin.alt` and `thadgavin.alt_sdl` as you would `thadgavin` and
|
||||
`thadgavin_sdl` above.
|
||||
|
||||
The default for the curses alt version is 30 and for SDL it is 150000. The
|
||||
different macros is because the curses version is already slower but it's better
|
||||
to not tie the two values together. The reason for such drastically different
|
||||
numbers is because curses is already slower than SDL.
|
||||
|
||||
|
||||
## Judges' remarks:
|
||||
|
||||
|
||||
@@ -0,0 +1,93 @@
|
||||
|
||||
int
|
||||
X=320 ,Y=200,
|
||||
n=0,m, x,y, j=1024;
|
||||
double T=44.0 /7,P[
|
||||
333333 ],C[5] ={ 0,3,
|
||||
0,0,8} ,p=1, B=11.0
|
||||
/630, f=0,r = 3,g
|
||||
=7,b =13,*q=P, D,*J;
|
||||
unsigned char
|
||||
U[66666],*v=U,*h,l[5555]
|
||||
,c=0,*e,*a,*z;
|
||||
|
||||
#include <math.h>
|
||||
#define R1(t) t=(int)(t\
|
||||
*123456789 )%j; t/=j;
|
||||
#define Rl(C,t)\
|
||||
n++[C] = t*n/12;
|
||||
#define RI(C) B=-B; R1\
|
||||
(r)R1(g )R1(b )for(n\
|
||||
=0; n<j; ){ Rl(C ,r)Rl\
|
||||
(C,g)Rl(C ,b)++n; }
|
||||
|
||||
|
||||
|
||||
#ifdef __DJGPP__
|
||||
#include <sys/movedata.h>
|
||||
#include <dpmi.h>
|
||||
#include <pc.h>
|
||||
#define Q(u,v) u##portb(0x3##v
|
||||
#define W ; Q(out,C9),*h++/4)
|
||||
void F(int i){ __dpmi_regs r
|
||||
; if(i){ for(; i>=0; i-=8)while(
|
||||
~Q(in,DA)
|
||||
)&8^i); for(m=0,z
|
||||
=h+j; h <z; m ++){ Q(
|
||||
out,C8),m )W W W; ++h; } dosmemput
|
||||
(v,X*Y,0xA0000 ); } else{ r.x.ax=
|
||||
0x13; __dpmi_int( 0x10,&r); } }
|
||||
#elif defined(SDL)
|
||||
#include <SDL.h>
|
||||
SDL_Surface *s; void
|
||||
F(int i){ if (i){ SDL_SetColors(
|
||||
s,h,0,256); SDL_UpdateRect
|
||||
(s,0,0,0, 0); usleep(ZS); } else { SDL_Init(
|
||||
SDL_INIT_VIDEO); s=SDL_SetVideoMode
|
||||
(X,Y,8,0); v=s->pixels; } }
|
||||
#else
|
||||
#include "curses.h"
|
||||
void F(i){ if(i){ for(y=0;
|
||||
y<X*Y ; y++)
|
||||
{ move (y/X,y%X); addch
|
||||
((*(v +y)/ 32) [" ."
|
||||
",:+" "=@#" ]); usleep(Z); } ; refresh
|
||||
(); } else{ initscr
|
||||
(),x= COLS&~1,X=x<X?x:X,y=
|
||||
LINES &~1,Y=y<Y?y:Y; } }
|
||||
#endif
|
||||
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
F(0);
|
||||
|
||||
for (x=-X/2,y=-Y/2;y<Y/2;++x>=X/2?x=-X/2,y++:4)
|
||||
{*q++ = sqrt(x*x+y*y);
|
||||
|
||||
*q++ = atan2(x,y);
|
||||
|
||||
}for (;n<j*2;l[n++]=0);
|
||||
for(;;)
|
||||
{
|
||||
a=l;z=l+j;e=l+j*2;
|
||||
if ((p+=B)>1){p=2-p;RI(l+j)}
|
||||
else if (p<0){p=-p;RI(l)}
|
||||
|
||||
while(a<l+j) D=p**a+++(1-p)**z++,*e++=D;
|
||||
h=l+j*2;
|
||||
|
||||
for (J=P,z=v; z<v+X*Y;){
|
||||
D = *J++;
|
||||
*z++=fabs(sin((*J+++C[1])*1.5+D*C[0]+C[2]*sin(C[3]+D/C[4]))*255);
|
||||
}F(8);
|
||||
|
||||
C[2]+=B; f+=T/360; C[3]+=f;
|
||||
|
||||
if (f>T)
|
||||
{C[1] += (f-T)/8;
|
||||
|
||||
if (f>T*2)
|
||||
C[0]=sin(f)+sin(f*2)/2;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -777,6 +777,12 @@ To see the craziness of the SDL fix (because of a terrible design choice of the
|
||||
SDL1 developers) see the log for commit
|
||||
dd0b26b5d6325e8b6fdef1232156c8bb8c66613f. Be prepared for a surprise!
|
||||
|
||||
Cody also added an alternate version to help see what is going on in more modern
|
||||
systems and in case you're sensitive to rapidly moving swirling. See the
|
||||
README.md for details on that. Note that this alternate version only will impact
|
||||
the curses and the SDL versions as Cody does not have a DOS system to test the
|
||||
other version in.
|
||||
|
||||
|
||||
## [2001/anonymous](2001/anonymous/anonymous.c) ([README.md](2001/anonymous/README.md]))
|
||||
|
||||
|
||||
Reference in new issue
Block a user