DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: T i

⟦b16722b9a⟧ TextFile

    Length: 6088 (0x17c8)
    Types: TextFile
    Names: »init.c«

Derivation

└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987
    └─⟦this⟧ »EUUGD18/General/Kriegspiel/init.c« 

TextFile

/* init.c */
#include "externs.h"
#include <ctype.h>

initdirlists ()
{
	LIST linsert ();
	dirlist [PAWN] = (LIST) NIL;
	dirlist [KING] = linsert (linsert (linsert (linsert (linsert (linsert
         (linsert (linsert ((LIST) NIL, -10), -9), 1), 11), 10), 9), -1), -11);
	dirlist [KNIGHT] = linsert (linsert (linsert (linsert (linsert (linsert
	 (linsert (linsert ((LIST)NIL, -19),-8), 12), 21), 19), 8), -12), -21);
	dirlist [BISHOP] = linsert (linsert (linsert (linsert
            ((LIST) NIL, -9), 11), 9), -11);
	dirlist [ROOK] = linsert (linsert (linsert (linsert
            ((LIST) NIL, -10), 1), 10), -1);
	dirlist [QUEEN] = linsert (linsert (linsert (linsert (linsert (linsert
          (linsert (linsert ((LIST) NIL, -10),-9), 1), 11), 10), 9), -1), -11);
}

initpiecelocs ()
{
	piecelocs [BLACK] = linsert (linsert (linsert (linsert (linsert
            (linsert (linsert (linsert (linsert (linsert (linsert (linsert
	    (linsert (linsert (linsert (linsert ((LIST) NIL, 11), 12), 13), 14)
            , 15), 16), 17), 18), 21), 22), 23), 24), 25), 26), 27), 28);
        piecelocs [WHITE] = linsert (linsert (linsert (linsert (linsert
            (linsert (linsert (linsert (linsert (linsert (linsert (linsert
            (linsert (linsert (linsert (linsert ((LIST) NIL, 71), 72), 73), 74)
            , 75), 76), 77), 78), 81), 82), 83), 84), 85), 86), 87), 88);
	kingloc [WHITE] = 85;
	kingloc [BLACK] = 15;
}


initscreen ()
{
	int ww, ws1, ws2, ws3, ws;
	char *termtype, *getenv();

	termtype = getenv("TERM");
	vtterm = (!strncmp(termtype, "vt", 2) && !dumbterm);
	if (vtterm)
		COLS = 40;
	if (dumbterm)
		LINES = 10;
	initscr();
	noecho();
	crmode();
	if (SO == NIL || dumbterm)
		reversescr = FALSE;
	else
		reversescr = TRUE;
	backupscreen = newwin (LINES, COLS, 0, 0);
	blankscreen = newwin (LINES, COLS, 0, 0);
	if (vtterm) {
		sqheight = 3;
		sqwidth = 3;
		sqcolor [WHITE] = ' ';
		sqcolor [BLACK] = ' ';
	} else if (reversescr) {
		sqheight = 3;
		sqwidth = 5;
		sqcolor [WHITE] = ' ';
		sqcolor [BLACK] = ' ';
	} else {
		sqheight = 1;
		sqwidth = 2;
		sqcolor [WHITE] = '.';
		sqcolor [BLACK] = '*';
	}
	if (vtterm)
		ws = sqwidth * 8 + 1;
	else if (dumbterm)
		ws = sqwidth * 8 + 4;
	else
		ws = sqwidth * 8 + 10;
	ww = COLS - ws;
	if (dumbterm) {
		ww = ww / 3 - 1;
		ws1 = ws + 1;
		ws2 = ws1 + ww + 1;
		ws3 = ws2 + ww + 1;
		win [MYCOLOR] = subwin   (stdscr, 1, 15    ,  9,   3);
		win [TOMOVE] = subwin    (stdscr, 1, ww    ,  1, ws3);
		win [CLOCK] = newwin     (/*none*/1,  1    ,  1,   1);
		win [CAPTURE] = subwin   (stdscr, 1, ww    ,  3, ws3);
		win [PAWNTRIES] = subwin (stdscr, 1, ww    ,  4, ws3);
		win [CHECK] = subwin     (stdscr, 3, ww    ,  5, ws3);
		win [PROMPT] = subwin    (stdscr, 1, ww    ,  1, ws1);
		win [INPUT] = subwin     (stdscr, 3, ww    ,  2, ws1);
		win [LEGAL] = subwin     (stdscr, 1, ww    ,  5, ws1);
		win [MESSAGE] = subwin   (stdscr, 4, ww    ,  1, ws2);
		win [OPPONENT] = subwin  (stdscr, 5, ww    ,  5, ws2);
		backupwin [PROMPT] = subwin    (stdscr, 1, ww    ,  1, ws1);
		backupwin [MESSAGE] = subwin   (stdscr, 4, ww    ,  1, ws2);
		backupwin [INPUT] = subwin     (stdscr, 3, ww    ,  2, ws1);
	} else {
		win [MYCOLOR] = subwin   (stdscr, 1, ww    ,  1, ws);
		win [TOMOVE] = subwin    (stdscr, 1, ww - 1,  3, ws);
		win [CLOCK] = subwin     (stdscr, 1,          1,  3, COLS-1);
		win [CAPTURE] = subwin   (stdscr, 1, ww    ,  5, ws);
		win [PAWNTRIES] = subwin (stdscr, 1, ww    ,  6, ws);
		win [CHECK] = subwin     (stdscr, 3, ww    ,  7, ws);
		win [PROMPT] = subwin    (stdscr, 1, ww    , 10, ws);
		win [INPUT] = subwin     (stdscr, 3, ww    , 11, ws);
		win [LEGAL] = subwin     (stdscr, 1, ww    , 14, ws);
		win [MESSAGE] = subwin   (stdscr, 4, ww    , 15, ws);
		win [OPPONENT] = subwin  (stdscr, 5, ww    , 19, ws);
		scrollok (win [MESSAGE], TRUE);
		scrollok (win [INPUT], TRUE);
		backupwin [PROMPT] = subwin    (stdscr, 1, ww    , 10, ws);
		backupwin [MESSAGE] = subwin   (stdscr, 4, ww    , 15, ws);
		backupwin [INPUT] = subwin     (stdscr, 3, ww    , 11, ws);
	}
}

initboard(allpieces)
	int allpieces;
{
	int row, col, spot, i, j;
	static int initwhose [100] = { -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
				       -1, 1, 1, 1, 1, 1, 1, 1, 1,-1,
				       -1, 1, 1, 1, 1, 1, 1, 1, 1,-1,
				       -1, 2, 2, 2, 2, 2, 2, 2, 2,-1,
				       -1, 2, 2, 2, 2, 2, 2, 2, 2,-1,
				       -1, 2, 2, 2, 2, 2, 2, 2, 2,-1,
				       -1, 2, 2, 2, 2, 2, 2, 2, 2,-1,
				       -1, 0, 0, 0, 0, 0, 0, 0, 0,-1,
				       -1, 0, 0, 0, 0, 0, 0, 0, 0,-1,
				       -1,-1,-1,-1,-1,-1,-1,-1,-1,-1 };

	static int initoccupant [100] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
					  0, 5, 3, 4, 6, 2, 4, 3, 5, 0,
					  0, 1, 1, 1, 1, 1, 1, 1, 1, 0,
					  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
					  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
					  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
					  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
					  0, 1, 1, 1, 1, 1, 1, 1, 1, 0,
					  0, 5, 3, 4, 6, 2, 4, 3, 5, 0,
					  0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };

	for (i = 0; i < 100; i++) {
		whose [i] = initwhose [i];
		occupant [i] = initoccupant [i];
	}

	for (row = 0; row <= 7; row++)
		for (col = 0; col <= 7; col ++) {
			if (ourcolor == WHITE) {
				i = row;
				j = col;
			} else {
				i = 7 - row;
				j = 7 - col;
			}
			spot = 10 * (row + 1) + (col + 1);
			blanksq [spot] = subwin (stdscr, sqheight, sqwidth,
						 sqheight * i, sqwidth * j);
			square [spot] = subwin (stdscr, 1, 1,
					  (sqheight * i) + (sqheight / 2),
					  (sqwidth * j) + (sqwidth / 2));
			if (reversescr && (row + col) % 2 == 0) {
				wstandout (blanksq [spot]);
				wstandout (square [spot]);
			}
			for (i = 1; i <= sqwidth; i++)
				for (j = 1; j <= sqheight; j++)
					waddch (blanksq [spot], ' ');
			waddch (square [spot], sqcolor [(row + col) % 2]);
		}
	for (row = 1; row <= 2; row++)
		for (col = 1; col <= 8; col++) {
			if (ourcolor == WHITE)
				spot = 10 * (9 - row) + col;
			else
				spot = 10 * row + col;
			waddch (square [spot], symbol [occupant [spot]]);
			if (allpieces)
				waddch (square [99 - spot], tolower
					(symbol [occupant [99 - spot]]));
		}
}