|
|
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: 3857 (0xf11)
Types: TextFile
Names: »inmove.c«
└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987
└─⟦this⟧ »EUUGD18/General/Gomoku/inmove.c«
# include "def.h"
# include <stdio.h>
# include <signal.h>
extern cheat();
/* makes the program play self */
normal(){
signal(SIGINT, cheat);
slf = 0;
}
/* Routin for input of moves and commands */
inmove(x, y) int *x, *y;{
char buff[11], who;
int i, j, xx, yy;
while(TRUE){
pos(1, YZIZE + 2);
printf("Your move: ");
scanf("%s", buff); emptyline();
up(); up(); clear();
if(!strcmp(buff, "board")){
utboard(0);
continue;
}
if((playcnt == 0) && !strcmp(buff, "start")){
xx = XZIZE/2;
yy = YZIZE/2;
board[xx][yy] = 'o';
update(xx, yy);
play[xx][yy] = ++playcnt;
pos(xx, yy);
putchar('o');
pos(1, YZIZE +1);
clear();
continue;
}
if(!strcmp(buff,"remove")){
while(TRUE){
if(playcnt == 0)
break;
for(xx = 0; xx < XZIZE; xx++)
for(yy = 0; yy < YZIZE; yy++)
if(play[xx][yy] == playcnt){
play[xx][yy] = 0;
who = board[xx][yy];
board[xx][yy] = ' ';
update(xx, yy);
pos(xx, yy);
printf(".\b");
}
playcnt--;
if(who == 'x')
break;
}
continue;
}
if(!strcmp(buff, "play")){
for(xx = 0; xx < XZIZE; xx++)
for(yy = 0; yy < YZIZE; yy++)
if(play[xx][yy]){
pos(xx, yy);
printf("%2d", play[xx][yy]);
}
continue;
}
if(!strcmp(buff, "help")){
home(); clear();
printf("b5, c12 :Examples on moveformats\n");
printf("remove :Taking back moves\n");
printf("slf :The program plays self\n");
printf("point :Shows pointboard\n");
printf("pts :Shows way pointboard\n");
printf("threat :Shows threatboard\n");
printf("tht :Shows way threatboard\n");
printf("play :Shows the game\n");
printf("board :Rewrite board\n");
printf("save :Saves the game\n");
printf("resave :Resave the game\n");
printf("automat :Runs pattern recognition\n");
printf("hint :gives you a hint\n");
printf("\n\n\nPush <return> when you'r ready\n");
emptyline();
utboard(0);
continue;
}
if(!strcmp(buff, "save")){
save();
continue;
}
if(!strcmp(buff, "resave")){
resave();
continue;
}
if(!strcmp(buff, "slf")){
signal(SIGINT, normal);
slf = TRUE;
return;
}
if(!strcmp(buff, "point")){
utboard(point);
continue;
}
if(!strcmp(buff, "pts")){
printf("Which way -|\\/(0123): ");
scanf("%d", &i); emptyline();
utboard(p_hvlr[i]);
continue;
}
if(!strcmp(buff, "threat")){
printf("Which player ox(01): ");
scanf("%d", &i); emptyline();
utboard(threat[i]);
continue;
}
if(!strcmp(buff, "tht")){
printf("Which way and player -|\\/(0123) ox(01): ");
scanf("%d%d", &i, &j); emptyline();
utboard(t_hvlr[i][j]);
continue;
}
if(!strcmp(buff, "automat")){
printf("What position: ");
scanf("%s", buff); emptyline();
up();
printf("Which way -|\\/(0123); ");
scanf("%d", &j); emptyline();
if(inposition(x, y, buff)){
catch(*x, *y);
autom();
pos(XZIZE + 2, 0);
printf(" pto ptx tho thx");
for(i = 0; i < 17; i++){
pos(XZIZE + 2, i + 1);
printf("%3c", hvlr[j][i]);
printf("%4d", tmppts[j][0][i]);
printf("%4d", tmppts[j][1][i]);
printf("%4d", tmptht[j][0][i]);
printf("%4d", tmptht[j][1][i]);
}
}
continue;
}
if(!strcmp(buff, "hint")){
if(chose('x', &xx, &yy))
printf("My hint is: %c%d", 'a' + xx, yy);
continue;
}
if(inposition(x, y, buff))
return;
printf("\n\nType help for help");
}
}
/* Converts a text string type g11 to a position */
inposition(x, y, buff) int *x, *y; char buff[11];{
*x = buff[0] - 'a';
*y = atoi(&buff[1]);
if((*x >= 0) && (*x < XZIZE) && (*y >= 0) && (*y < YZIZE)
&& (buff[1] >= '0') && (buff[1] <= '9')
&& board[*x][*y] == ' ')
return(1);
return(0);
}
/* Empty a line */
emptyline(){
while(getchar() != '\n');
}