]> git.cameronkatri.com Git - bsdgames-darwin.git/blobdiff - tetris/tetris.c
Remove unneeded "mips compiler bug" workaround from original code imported
[bsdgames-darwin.git] / tetris / tetris.c
index ababeedafeaa31393e78566d506e607602aedec2..7819f5b9d508d1b511048e60d7927858d8ca3ad8 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: tetris.c,v 1.2 1995/04/22 07:42:47 cgd Exp $   */
+/*     $NetBSD: tetris.c,v 1.8 1999/02/11 02:34:24 simonb Exp $        */
 
 /*-
  * Copyright (c) 1992, 1993
  *     @(#)tetris.c    8.1 (Berkeley) 5/31/93
  */
 
+#include <sys/cdefs.h>
 #ifndef lint
-static char copyright[] =
-"@(#) Copyright (c) 1992, 1993\n\
-       The Regents of the University of California.  All rights reserved.\n";
+__COPYRIGHT("@(#) Copyright (c) 1992, 1993\n\
+       The Regents of the University of California.  All rights reserved.\n");
 #endif /* not lint */
 
 /*
@@ -61,8 +61,11 @@ static char copyright[] =
 #include "screen.h"
 #include "tetris.h"
 
-void onintr __P((int));
-void usage __P((void));
+static void    elide __P((void));
+static void    setup_board __P((void));
+       int     main __P((int, char **));
+       void    onintr __P((int)) __attribute__((__noreturn__));
+       void    usage __P((void)) __attribute__((__noreturn__));
 
 /*
  * Set up the initial board.  The bottom display row is completely set,
@@ -77,11 +80,7 @@ setup_board()
 
        p = board;
        for (i = B_SIZE; i; i--)
-#ifndef mips
                *p++ = i <= (2 * B_COLS) || (i % B_COLS) < 2;
-#else /* work around compiler bug */
-               *p++ = i <= (2 * B_COLS) || (i % B_COLS) < 2 ? 1 : 0;
-#endif
 }
 
 /*
@@ -99,7 +98,7 @@ elide()
                for (j = B_COLS - 2; *p++ != 0;) {
                        if (--j <= 0) {
                                /* this row is to be elided */
-                               bzero(&board[base], B_COLS - 2);
+                               memset(&board[base], 0, B_COLS - 2);
                                scr_update();
                                tsleep();
                                while (--base != 0)
@@ -118,7 +117,6 @@ main(argc, argv)
        char *argv[];
 {
        register int pos, c;
-       register struct shape *curshape;
        register char *keys;
        register int level = 2;
        char key_write[6][10];
@@ -126,7 +124,7 @@ main(argc, argv)
 
        keys = "jkl pq";
 
-       while ((ch = getopt(argc, argv, "k:l:s")) != EOF)
+       while ((ch = getopt(argc, argv, "k:l:ps")) != -1)
                switch(ch) {
                case 'k':
                        if (strlen(keys = optarg) != 6)
@@ -141,6 +139,9 @@ main(argc, argv)
                                exit(1);
                        }
                        break;
+               case 'p':
+                       showpreview = 1;
+                       break;
                case 's':
                        showscores(0);
                        exit(0);
@@ -187,6 +188,7 @@ main(argc, argv)
        scr_set();
 
        pos = A_FIRST*B_COLS + (B_COLS/2)-1;
+       nextshape = randshape();
        curshape = randshape();
 
        scr_msg(key_msg, 1);
@@ -217,7 +219,8 @@ main(argc, argv)
                         * Choose a new shape.  If it does not fit,
                         * the game is over.
                         */
-                       curshape = randshape();
+                       curshape = nextshape;
+                       nextshape = randshape();
                        pos = A_FIRST*B_COLS + (B_COLS/2)-1;
                        if (!fits_in(curshape, pos))
                                break;
@@ -275,8 +278,10 @@ main(argc, argv)
                        }
                        continue;
                }
-               if (c == '\f')
+               if (c == '\f') {
                        scr_clear();
+                       scr_msg(key_msg, 1);
+               }
        }
 
        scr_clear();
@@ -309,6 +314,6 @@ onintr(signo)
 void
 usage()
 {
-       (void)fprintf(stderr, "usage: tetris [-s] [-l level] [-keys]\n");
+       (void)fprintf(stderr, "usage: tetris [-ps] [-l level] [-keys]\n");
        exit(1);
 }