|
|
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 a
Length: 1925 (0x785)
Types: TextFile
Names: »adm.c«
└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987
└─⟦this⟧ »EUUGD18/General/Gomoku/adm.c«
# include "def.h"
# include <stdio.h>
# include <signal.h>
/* If you push BREAK you are a cheater */
cheat(){
signal(SIGINT, cheat);
pos(1, YZIZE + 2);
if(!slf)
printf("Cheater. I win on V.O.\n");
exit();
}
/* The main program which administrate who's on the move etc */
main(){
int x, y;
char svar[16];
char *term, *getenv();
term = getenv("TERM");
if(getcap(term) == -1){
printf("Wrong or no TERM: %s\n", term);
exit();
}
if((height < 24) || (width < 80)){
printf("To smal screen (%d x %d). Min is (80 x 24)\n",
width, height);
exit();
}
for(x = 0; x < XZIZE; x++)
for(y = 0; y < YZIZE; y++)
board[x][y] = ' ';
srand( getpid() );
utboard(0);
signal(SIGINT, cheat);
pos(1, YZIZE + 1);
printf("Your move f.ex: k12. Computer start: start");
while(TRUE){
if(!slf)
inmove(&x, &y);
if(slf)
if(!chose('x', &x, &y)){
pos(1, YZIZE + 2);
printf("Can't find a place for my 'x'\n");
break;
}
play[x][y] = ++playcnt;
pos(x, y); printf("x\b"); fflush(stdout);
board[x][y] = 'x';
if(update(x, y)){
pos(1, YZIZE + 2);
printf("Congratulations you won\n");
break;
}
if(playcnt > 1)
for(x = 0; x < XZIZE; x++)
for(y = 0; y < YZIZE; y++)
if(play[x][y] == playcnt - 1){
pos(x, y);
printf("o\b");
fflush(stdout);
}
if(!chose('o', &x, &y)){
pos(1, YZIZE + 2);
printf("Can't find a place for my 'o'\n");
break;
}
play[x][y] = ++playcnt;
if(!slf){
pos(1, YZIZE + 1);
printf("My move: %c%d", 'a' + x, y);
}
pos(x, y);
printf("O\b");
fflush(stdout);
board[x][y] = 'o';
if(update(x, y)){
pos(1, YZIZE + 2);
printf("I won\n");
break;
}
}
signal(SIGINT, SIG_DFL); /* Skip cheat */
printf("Do you want to save the game? (y/n) ");
svar[0] = getchar(); emptyline();
if(svar[0] == 'y'){
save();
exit();
}
if(svar[0] == 'n')
exit();
printf("Hmmm. Asumes you don't.\n");
}