|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T i
Length: 6088 (0x17c8)
Types: TextFile
Names: »init.c«
└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987
└─⟦this⟧ »EUUGD18/General/Kriegspiel/init.c«
/* 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]]));
}
}