billr@saab.CNA.TEK.COM (Bill Randle) (07/06/89)
Submitted-by: "Eric S. Raymond" <eric@snark.uu.net> Posting-number: Volume 6, Issue 99 Archive-name: tetrix.pch1 Patch-To: tetrix: Volume 6, Issue 15 [This patch is not from the original author, yet appears to be useful and is properly #ifdef'd, so I'm posting it here (since it was sent to me). Now do we need a way to differentiate between "Official" patches and other useful patches? -br] [[The SVr3.2 that came with my brand-new VGA-equipped 6386WGS includes color-support enhancements to the curses(3) library. I wrote the following tetrix mods as a way to learn elementary use of the new features. The README patch that leads the set gives details. Eric S. Raymond = eric@snark.uu.net]] #! /bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". To overwrite existing # files, type "sh file -c". You can also feed this as standard input via # unshar, or by typing "sh <file", e.g.. If this archive is complete, you # will see the following message at the end: # "End of shell archive." # Contents: patches01 # Wrapped by billr@saab on Thu Jul 6 06:47:35 1989 PATH=/bin:/usr/bin:/usr/ucb ; export PATH if test -f 'patches01' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'patches01'\" else echo shar: Extracting \"'patches01'\" \(5926 characters\) sed "s/^X//" >'patches01' <<'END_OF_FILE' X*** README-old Thu Jun 29 15:15:28 1989 X--- README Thu Jun 29 15:26:11 1989 X*************** X*** 29,31 **** X--- 29,41 ---- X X Good luck! Quentin Neill X X+ This version has been hacked to do color under System V Release 3.2. Compile X+ with -DCOLOR to enable this feature. Due to the limited number of colors in the X+ curses(3) portable set, 'tan' pieces will be cyan-colored. X+ If you're using an EGA or VGA display, however, you can also compile X+ with -DEGA to get better colors (this uses the EGA quirk that yellow is X+ 'bright brown'). X+ Finally, note that you may now invoke tetrix as `tetrix <pause-value>' X+ to set the value of INIT_PAUSE. X+ X+ Have fun! Eric S. Raymond X*** Makefile-old Thu Jun 29 11:00:13 1989 X--- Makefile Thu Jun 29 15:12:10 1989 X*************** X*** 4,11 **** X # - this will create a high score file in /usr/tmp, so doing it again X # later on will erase high scores for the machine. X X! X! OBJS= MoveR.o MoveL.o NewP.o AdvanceP.o Rotate.o tet.o X INCS= tet.h X X tetrix: $(OBJS) $(INCS) X--- 4,11 ---- X # - this will create a high score file in /usr/tmp, so doing it again X # later on will erase high scores for the machine. X X! CFLAGS=-g -DCOLOR -DEGA X! OBJS= MoveR.o MoveL.o NewP.o AdvanceP.o Rotate.o Colors.o tet.o X INCS= tet.h X X tetrix: $(OBJS) $(INCS) X*************** X*** 20,25 **** X--- 20,27 ---- X AdvanceP.o: AdvanceP.c X X Rotate.o: Rotate.c X+ X+ Colors.o: Colors.c X X tet.o: tet.c X X*** tet.h-old Thu Jun 29 10:57:18 1989 X--- tet.h Thu Jun 29 11:12:18 1989 X*************** X*** 34,42 **** X--- 34,47 ---- X extern int Type, Row, Column, Pause, CurrentSpeed, FallingDown, Beep; X extern char Board[BOARD_WIDE][BOARD_HIGH]; X X+ #ifndef COLOR X /* Macros */ X /* offset the character on screen by MINX and MINY */ X #define PUTCH(x,y,z) { mvaddch(y+MINY,x+MINX,z); Board[x][y]=z; } X+ #else X+ extern void PUTCH(); X+ extern void init_colors(); X+ #endif /* COLOR */ X X /* test whether a square is empty and legal */ X /* X*** tet.c-old Fri Mar 3 14:06:40 1989 X--- tet.c Thu Jun 29 14:40:50 1989 X*************** X*** 12,17 **** X--- 12,18 ---- X int Row; /* Row of pivot point of block */ X int Column; /* Column of pivot point of block */ X int Pause; /* Time between movements this block */ X+ int InitPause; /* Initial value of CurrentPause */ X int CurrentPause; /* Time between movements per level */ X int FallingDown; /* True when space bar is pressed */ X int Beep; X*************** X*** 58,65 **** X #define MENU_KEY 'm' X X /**************************************************MAIN*****/ X! main() X { X Init(); X for ( ; ; ) { X NewGame(); X--- 59,72 ---- X #define MENU_KEY 'm' X X /**************************************************MAIN*****/ X! main(argc, argv) X! int argc; X! char **argv; X { X+ if (argc >= 2) X+ InitPause = atoi(argv[1]); X+ else X+ InitPause = 150; X Init(); X for ( ; ; ) { X NewGame(); X*************** X*** 98,104 **** X HighsChanged = 0; X ScoreIt(); X initscr(); X! /* initilialize board to spaces */ X for (x=0; x<BOARD_WIDE; x++) X for (y=0; y<BOARD_HIGH; y++) X PUTCH(x,y,NO_CHAR); X--- 105,114 ---- X HighsChanged = 0; X ScoreIt(); X initscr(); X! #ifdef COLOR X! init_colors(); X! #endif /* COLOR */ X! /* initialize board to spaces */ X for (x=0; x<BOARD_WIDE; x++) X for (y=0; y<BOARD_HIGH; y++) X PUTCH(x,y,NO_CHAR); X*************** X*** 123,129 **** X case SCORE_KEY : DrawScore(); break; X case MENU_KEY : DrawMenu(); break; X case BOSS_KEY : Boss(); break; X! case PLAY_KEY : CurrentPause=150; break; X case QUIT_KEY : Leave(); X } X } X--- 133,139 ---- X case SCORE_KEY : DrawScore(); break; X case MENU_KEY : DrawMenu(); break; X case BOSS_KEY : Boss(); break; X! case PLAY_KEY : CurrentPause=InitPause; break; X case QUIT_KEY : Leave(); X } X } X*** Colors.c-old Thu Jun 29 14:41:03 1989 X--- Colors.c Thu Jun 29 15:57:32 1989 X*************** X*** 0 **** X--- 1,83 ---- X+ /* Tetrix color support by Eric S. Raymond, eric@snark.uu.net */ X+ X+ #include <curses.h> X+ #include "tet.h" X+ X+ #ifdef COLOR X+ /* color pair indexes for pieces */ X+ #define BLACK 0 X+ #define GREEN 1 X+ #define RED 2 X+ #define TAN 3 X+ #define WHITE 4 X+ #define VIOLET 5 X+ #define BLUE 6 X+ #define YELLOW 7 X+ #define NCOLORS 8 X+ X+ static int attribs[NCOLORS]; X+ X+ typedef struct X+ { X+ int forgrnd; X+ int attrib; X+ } X+ colorpair; X+ X+ void init_colors() X+ { X+ start_color(); X+ X+ init_pair(BLACK, COLOR_BLACK, COLOR_BLACK); X+ attribs[BLACK] = COLOR_PAIR(BLACK); X+ X+ init_pair(GREEN, COLOR_GREEN, COLOR_BLACK); X+ attribs[GREEN] = COLOR_PAIR(GREEN); X+ X+ init_pair(RED, COLOR_RED, COLOR_BLACK); X+ attribs[RED] = COLOR_PAIR(RED); X+ X+ #ifdef EGA X+ init_pair(TAN, COLOR_YELLOW, COLOR_BLACK); X+ #else X+ init_pair(TAN, COLOR_CYAN, COLOR_BLACK); X+ #endif /* EGA */ X+ attribs[TAN] = COLOR_PAIR(TAN); X+ X+ init_pair(WHITE, COLOR_WHITE, COLOR_BLACK); X+ attribs[WHITE] = COLOR_PAIR(WHITE); X+ X+ init_pair(VIOLET, COLOR_MAGENTA, COLOR_BLACK); X+ attribs[VIOLET] = COLOR_PAIR(VIOLET); X+ X+ init_pair(BLUE, COLOR_BLUE, COLOR_BLACK); X+ attribs[BLUE] = COLOR_PAIR(BLUE); X+ X+ #ifdef EGA X+ attribs[YELLOW] = attribs[TAN] | A_BOLD; X+ #else X+ init_pair(YELLOW, COLOR_YELLOW, COLOR_BLACK); X+ attribs[YELLOW] = COLOR_PAIR(YELLOW); X+ #endif /* EGA */ X+ } X+ X+ void PUTCH(x,y,z) X+ int x, y, z; X+ { X+ switch(z) X+ { X+ case ' ': attron(attribs[BLACK]); break; X+ case 'G': attron(attribs[GREEN]); break; X+ case 'R': attron(attribs[RED]); break; X+ case 'O': attron(attribs[TAN]); break; X+ case 'W': attron(attribs[WHITE]); break; X+ case 'V': attron(attribs[VIOLET]); break; X+ case 'B': attron(attribs[BLUE]); break; X+ case 'Y': attron(attribs[YELLOW]); break; X+ } X+ mvaddch(y+MINY,x+MINX, z); X+ attrset(0); X+ Board[x][y]=z; X+ } X+ X+ #endif /* COLOR */ X END_OF_FILE if test 5926 -ne `wc -c <'patches01'`; then echo shar: \"'patches01'\" unpacked with wrong size! fi # end of 'patches01' fi echo shar: End of shell archive. exit 0