Home | History | Annotate | Line # | Download | only in warp
sm.c revision 1.1
      1  1.1  kamil /* $Header: /tank/opengrok/rsync2/NetBSD/src/games/warp/sm.c,v 1.1 2020/11/09 23:37:05 kamil Exp $ */
      2  1.1  kamil 
      3  1.1  kamil /* $Log: sm.c,v $
      4  1.1  kamil /* Revision 1.1  2020/11/09 23:37:05  kamil
      5  1.1  kamil /* Add Warp Kit, Version 7.0 by Larry Wall
      6  1.1  kamil /*
      7  1.1  kamil /* Warp is a real-time space war game that doesn't get boring very quickly.
      8  1.1  kamil /* Read warp.doc and the manual page for more information.
      9  1.1  kamil /*
     10  1.1  kamil /* games/warp originally distributed with 4.3BSD-Reno, is back to the BSD
     11  1.1  kamil /* world via NetBSD. Its remnants were still mentioned in games/Makefile.
     12  1.1  kamil /*
     13  1.1  kamil /* Larry Wall, the original author and the copyright holder, generously
     14  1.1  kamil /* donated the game and copyright to The NetBSD Foundation, Inc.
     15  1.1  kamil /*
     16  1.1  kamil /* Import the game sources as-is from 4.3BSD-Reno, with the cession
     17  1.1  kamil /* of the copyright and license to BSD-2-clause NetBSD-style.
     18  1.1  kamil /*
     19  1.1  kamil /* Signed-off-by: Larry Wall <larry (at) wall.org>
     20  1.1  kamil /* Signed-off-by: Kamil Rytarowski <kamil (at) netbsd.org>
     21  1.1  kamil /*
     22  1.1  kamil  * Revision 7.0  86/10/08  15:13:35  lwall
     23  1.1  kamil  * Split into separate files.  Added amoebas and pirates.
     24  1.1  kamil  *
     25  1.1  kamil  */
     26  1.1  kamil 
     27  1.1  kamil #include <stdio.h>
     28  1.1  kamil #include <ctype.h>
     29  1.1  kamil #include "config.h"
     30  1.1  kamil 
     31  1.1  kamil main()
     32  1.1  kamil {
     33  1.1  kamil     char screen[23][90], buf[10];
     34  1.1  kamil     Reg1 int y;
     35  1.1  kamil     Reg2 int x;
     36  1.1  kamil     int tmpy, tmpx;
     37  1.1  kamil 
     38  1.1  kamil     for (x=0; x<79; x++)
     39  1.1  kamil 	screen[0][x] = ' ';
     40  1.1  kamil     screen[0][79] = '\0';
     41  1.1  kamil 
     42  1.1  kamil     fgets(screen[0],90,stdin);
     43  1.1  kamil     if (isdigit(screen[0][0])) {
     44  1.1  kamil 	int numstars = atoi(screen[0]);
     45  1.1  kamil 
     46  1.1  kamil 	for (y=0; y<23; y++) {
     47  1.1  kamil 	    for (x=0; x<79; x++)
     48  1.1  kamil 		screen[y][x] = ' ';
     49  1.1  kamil 	    screen[y][79] = '\0';
     50  1.1  kamil 	}
     51  1.1  kamil 
     52  1.1  kamil 	for ( ; numstars; numstars--) {
     53  1.1  kamil 	    scanf("%d %d\n",&tmpy,&tmpx);
     54  1.1  kamil 	    y = tmpy;
     55  1.1  kamil 	    x = tmpx;
     56  1.1  kamil 	    screen[y][x+x] = '*';
     57  1.1  kamil 	}
     58  1.1  kamil 
     59  1.1  kamil 	for (y=0; y<23; y++) {
     60  1.1  kamil 	    printf("%s\n",screen[y]);
     61  1.1  kamil 	}
     62  1.1  kamil     }
     63  1.1  kamil     else {
     64  1.1  kamil 	Reg3 int numstars = 0;
     65  1.1  kamil 
     66  1.1  kamil 	for (y=1; y<23; y++) {
     67  1.1  kamil 	    for (x=0; x<79; x++)
     68  1.1  kamil 		screen[y][x] = ' ';
     69  1.1  kamil 	    screen[y][79] = '\0';
     70  1.1  kamil 	}
     71  1.1  kamil 
     72  1.1  kamil 	for (y=1; y<23; y++) {
     73  1.1  kamil 	    fgets(screen[y],90,stdin);
     74  1.1  kamil 	}
     75  1.1  kamil 
     76  1.1  kamil 	for (y=0; y<23; y++) {
     77  1.1  kamil 	    for (x=0; x<80; x += 2) {
     78  1.1  kamil 		if (screen[y][x] == '*') {
     79  1.1  kamil 		    numstars++;
     80  1.1  kamil 		}
     81  1.1  kamil 		else if (screen[y][x] == '\t' || screen[y][x+1] == '\t') {
     82             		    fprintf(stderr,"Cannot have tabs in starmap--please expand.\n");
     83             		    exit(1);
     84             		}
     85             	    }
     86             	}
     87             
     88             	printf("%d\n",numstars);
     89             
     90             	for (y=0; y<23; y++) {
     91             	    for (x=0; x<80; x += 2) {
     92             		if (screen[y][x] == '*') {
     93             		    printf("%d %d\n",y,x/2);
     94             		}
     95             	    }
     96             	}
     97                 }
     98                 exit(0);
     99             }
    100