Add alt code to 1993/rince
This is based on the suggestion of the judges that some people might
want to slow the game down a bit.
It is easy to configure at compile time like:
make CDEFINE=-DZ=18 clobber alt
More details are in the README.md file.
Updated .gitignore and thanks file (not just for this but also
making something else clearer in another entry).
This commit is contained in:
1 parent
0f5ac2be03
commit
5c0b571623
5 files changed
+169
-24
No files matched your search
@@ -1,4 +1,5 @@
|
||||
jkb
|
||||
rince
|
||||
rince.orig
|
||||
rince.alt
|
||||
prog.orig
|
||||
+3
-3
@@ -58,7 +58,7 @@ ARCH=
|
||||
|
||||
# Defines that are needed to compile
|
||||
#
|
||||
CDEFINE=
|
||||
CDEFINE= -DZ=17
|
||||
|
||||
# Include files that are needed to compile
|
||||
#
|
||||
@@ -115,8 +115,8 @@ OBJ= ${PROG}.o
|
||||
DATA=
|
||||
TARGET= ${PROG}
|
||||
#
|
||||
ALT_OBJ=
|
||||
ALT_TARGET=
|
||||
ALT_OBJ= ${PROG}.alt.o
|
||||
ALT_TARGET= ${PROG}.alt
|
||||
|
||||
|
||||
#################
|
||||
|
||||
+35
-19
@@ -1,9 +1,6 @@
|
||||
# Most Well Rounded
|
||||
|
||||
James Bonfield
|
||||
MRC Laboratory of Molecular Biology,
|
||||
Hills Road
|
||||
Cambridge
|
||||
England
|
||||
|
||||
|
||||
@@ -13,6 +10,8 @@ England
|
||||
make all
|
||||
```
|
||||
|
||||
NOTE: there is an alternate version of this program that allows one to slow down
|
||||
the game. See the Alternate code section below.
|
||||
|
||||
## To run:
|
||||
|
||||
@@ -21,12 +20,39 @@ make all
|
||||
```
|
||||
|
||||
where:
|
||||
|
||||
|
||||
`[cabbage]` is a CABBAGE description file (default: `rince.c`)
|
||||
|
||||
### Alternate code: slowing down the game
|
||||
|
||||
Some people may want to slow down the game by increasing the
|
||||
value 17 in the lines:
|
||||
|
||||
|
||||
```c
|
||||
struct timeval v= {0,1<<17} ;
|
||||
```
|
||||
|
||||
and
|
||||
|
||||
```c
|
||||
refresh(),c=select(k,&y,0,0,(v.tv_usec=1<<17,&v))?getch():0;
|
||||
```
|
||||
|
||||
to another value like 18 or 19. You can do this via the alternate code like:
|
||||
|
||||
|
||||
```sh
|
||||
make CDEFINE="-DZ=18" clobber alt
|
||||
```
|
||||
|
||||
Replace 18 with whatever number you wish.
|
||||
|
||||
Use `rince.alt` as you would `rince` above.
|
||||
|
||||
|
||||
## Judges' remarks:
|
||||
|
||||
|
||||
The author has provided several CABBAGE files for your amusement:
|
||||
|
||||
- [rince.data1](rince.data1) plays
|
||||
@@ -72,7 +98,7 @@ should be replaced with:
|
||||
|
||||
```c
|
||||
select(k,&y,0,0,(v.tv_usec=1<<whatever_you_want,&v))
|
||||
```
|
||||
```
|
||||
|
||||
where `whatever_you_want` is some integer such as 17 or 19.
|
||||
|
||||
@@ -83,20 +109,10 @@ compiler in the first place), this program may be used to log
|
||||
out very quickly. Unfortunately, you can't do anything else
|
||||
with it.
|
||||
|
||||
### Slowing down the game
|
||||
|
||||
Some people may want to slow down the game by increasing the
|
||||
value 17 in the line:
|
||||
|
||||
|
||||
```c
|
||||
struct timeval v= {0,1<<17} ;
|
||||
```
|
||||
|
||||
to something like 18 or 19.
|
||||
### Additional notes
|
||||
|
||||
One may also need to do a `stty sane` if you kill the program
|
||||
to restore your terminal state.
|
||||
to restore your terminal state. If that does not work try `reset`.
|
||||
|
||||
Some people report that `rince` dumps core on their system.
|
||||
|
||||
@@ -144,7 +160,7 @@ I have compiled in on the following systems:
|
||||
|
||||
---
|
||||
```
|
||||
System OS Compiler (and flags)
|
||||
System OS Compiler (and flags)
|
||||
DECstation 5000/240 Ultrix 4.2A c89 -std
|
||||
SPARCstation 1+ SunOS 4.1 gcc -ansi -pedantic
|
||||
SPARCstation 10/31 Solaris 2.1 gcc -ansi -pedantic (*)
|
||||
|
||||
@@ -0,0 +1,123 @@
|
||||
/** J.K.Bonfield **
|
||||
^ <
|
||||
^ >
|
||||
< # > v
|
||||
< <
|
||||
< > > < v
|
||||
X X j
|
||||
x X j
|
||||
X x ^ k
|
||||
^ ^
|
||||
^ #
|
||||
X X X X
|
||||
|
||||
^ v
|
||||
v v
|
||||
v #
|
||||
v X
|
||||
v x
|
||||
> # < v
|
||||
> >
|
||||
X X l
|
||||
x X l
|
||||
|
||||
41 20
|
||||
########################################
|
||||
# #
|
||||
# < < < < <> < < < #
|
||||
# > > > <> > > > > #
|
||||
# < < < < <> < < < #
|
||||
# > > > <> > > > > #
|
||||
# < < < < <> < < < #
|
||||
# > > > <> > > > > #
|
||||
# #
|
||||
# #
|
||||
# #
|
||||
# #
|
||||
# #
|
||||
# #
|
||||
# #
|
||||
# #
|
||||
# #
|
||||
# #
|
||||
# X #
|
||||
########################################*/
|
||||
#include <stdio.h>
|
||||
#include <curses.h>
|
||||
#include <stdlib.h>
|
||||
#include <setjmp.h>
|
||||
#include <sys/time.h>
|
||||
int _tty_ch;
|
||||
bool _echoit;
|
||||
bool _rawmode;
|
||||
int _tty;
|
||||
#define U char
|
||||
#define G for(
|
||||
#define I )malloc(sizeof(
|
||||
|
||||
typedef struct z {U x[20]; struct z*y; } j; j*J[2][256];
|
||||
struct timeval v= {0,1<<Z} ;
|
||||
U**X,c,*P="noopoqqnr",d;
|
||||
|
||||
j*a(int Q, int i) {
|
||||
G
|
||||
clear(),noecho(),cbreak(); ;
|
||||
)
|
||||
|
||||
{
|
||||
int x=0,y=0,W=Q,Q=i-1,k;
|
||||
G;
|
||||
y<=Q;
|
||||
(mvaddch(y,x,X[y][x]),++x^W-1)||(x=0,y++));
|
||||
k=y=- --x;
|
||||
G
|
||||
refresh(),c=select(k,&y,0,0,(v.tv_usec=1<<Z,&v))?getch():0;
|
||||
k?++x-W||(x=1,++y-Q||(--k,x=W-1,y=Q-1)):--x||(y--,x=W-1),k|y;
|
||||
)
|
||||
|
||||
{
|
||||
j *t;
|
||||
G
|
||||
t=J[1-k][X[y][x]]; t; t=t->y) {
|
||||
U*f=t->x;
|
||||
if (d==f[17]|f[17]==c) {
|
||||
int i=k&2,u=9,k=1,w=x,_=y,T;
|
||||
G;
|
||||
--u||(d-f[8]&&(X[y][x]=f[8]),w---_--,i=0,u=8,k--);) {
|
||||
_+=P[T=i>u?u:i]-'o';
|
||||
w+=P[4+T]-'p';
|
||||
if(k) {
|
||||
if (d-f[i]&&f[i]-X[_][w]) break;
|
||||
i++;
|
||||
} else
|
||||
f[++i+8]-d && (X[_][w]=f[i+8]);
|
||||
} } } } } }
|
||||
|
||||
jmp_buf E;
|
||||
|
||||
int main(int open, U**exit) {
|
||||
FILE*C=fopen (
|
||||
open-2?__FILE__:*++exit,P+8);
|
||||
j*t;
|
||||
volatile int Q,Y=0;
|
||||
int i,q; d=open-2?'\t':'*'; L:
|
||||
|
||||
Q=0; G; setjmp(E)<256; Q--
|
||||
)
|
||||
longjmp(E,(J[Y][Q]=0,Q++));
|
||||
G; ; ) {
|
||||
if(!C)return 1;
|
||||
if('\n'==(c=getc(C)))
|
||||
if(!Y++)goto L; else
|
||||
{ fscanf(C,"%d %d\n",&i,&q);
|
||||
X=(U**I P++)*q*(i+1));
|
||||
Q=0; G; Q<q; Q++)
|
||||
X[Q]=(U*)&X[q]+Q*i;
|
||||
|
||||
fread(*X,(initscr(),q*i),1,C);
|
||||
a(i,Q);
|
||||
}
|
||||
t=(j*I*a(Q--,--Q)));
|
||||
t->y=J[Y][c]; J[Y][c]=t;
|
||||
fgets(t->x,20,C); }
|
||||
}
|
||||
+7
-2
@@ -384,7 +384,8 @@ compilers to compile the code, based on the author's remarks.
|
||||
|
||||
## [1990/cmills](1990/cmills/cmills.c) ([README.md](1990/cmills/README.md]))
|
||||
|
||||
Yusuke got this to work in modern systems (it resulted in a bus error).
|
||||
Yusuke got this to work in modern systems (it previously resulted in a bus
|
||||
error).
|
||||
|
||||
To prevent alarming warnings at linking or runtime Cody made the entry use
|
||||
`fgets()` rather than `gets()`. He notes that another option would have been to
|
||||
@@ -626,7 +627,7 @@ NOTE: as noted in the README.md file and the [bugs.md](/bugs.md), this program a
|
||||
world](https://en.wikipedia.org/wiki/Earth) or just the
|
||||
[USA](https://en.wikipedia.org/wiki/United_States), respectively, without enough
|
||||
args (2). And not that we need the help or anything for this :-) but we do
|
||||
encourage you to test this :-) This should not be fixed.
|
||||
encourage you to test this :-) This should NOT be fixed.
|
||||
|
||||
|
||||
## [1993/jonth](1993/jonth/jonth.c) ([README.md](1993/jonth/README.md]))
|
||||
@@ -670,6 +671,10 @@ README.md files for details.
|
||||
|
||||
Yusuke supplied a patch to get this to work in modern systems.
|
||||
|
||||
Cody provided an alternate version to simplify slowing the game down. This was
|
||||
based on our suggestion that it might be desired to slow down but done in a way
|
||||
that makes it easy to configure at compile time. See the README.md for details.
|
||||
|
||||
|
||||
## [1993/schnitzi](1993/schnitzi/schnitzi.c) ([README.md](1993/schnitzi/README.md]))
|
||||
|
||||
|
||||
Reference in new issue
Block a user