|
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]])); } }