home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Source Code / C / Games / MacGnuGo 0.5e / gnugo.src / showbrd2.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-10-29  |  2.9 KB  |  150 lines  |  [TEXT/R*ch]

  1. /* */
  2. #ifdef __THINK__
  3. #define MAC
  4. #endif
  5. #ifdef MAC
  6. #include <console.h>
  7. #endif
  8.  
  9. #include <stdio.h>
  10.  
  11. #define EMPTY 0
  12. #define WHITE 1
  13. #define BLACK 2
  14. #define NEUTRAL_TERR    3
  15.  
  16. extern unsigned char p[19][19];
  17. extern int mymove, umove;
  18. extern int blackCaptured, whiteCaptured;
  19. extern int MAXX, MAXY;
  20. extern int pass;
  21. extern int hcap2;
  22. extern int moveNumber, atari;
  23. extern unsigned char ownermat[19][19];
  24. static int display_inited = 0;
  25.  
  26. showboard(mx,my) int mx,my; { display(mx,my,0); }
  27.  
  28. display_mat() { display(-1,-1,1); }
  29.  
  30. display(mx,my,scoreflag)
  31. int mx,my;
  32. int scoreflag;
  33. {
  34.   int r;
  35.   if (!display_inited) { display_inited = 1; clear(); }
  36.   gotoxy(0,0);
  37.   displaytop();
  38.   for (r=0;r<MAXX;r++) {
  39.     displayrow(r,scoreflag);
  40.     if (r == 2) {
  41.       if (my > 7) my++;
  42.       if (mx >= 0 && pass < 2) {
  43.        printf("     My move: %c%d ",'a' + my,MAXX - mx);
  44.            if (atari) printf(" Atari!");
  45.            else printf("        ");
  46.       }
  47.       else printf("     I pass        ");
  48.     }
  49.     if (r == 3) {
  50.       printf("     Your color: ");
  51.       if (umove == 1) printf(" White O");
  52.       else printf(" Black #");
  53.     }
  54.     if (r == 4) {
  55.       printf("     My color:   ");
  56.       if (mymove == 1) printf(" White O");
  57.       else printf(" Black #");
  58.     }
  59.     if (r == 5) {
  60.       printf("     Black has captured %d pieces  ", whiteCaptured);
  61.     }
  62.     if (r == 6) {
  63.       printf("     White has captured %d pieces  ", blackCaptured);
  64.     }
  65.     if (r == 7) {
  66.       printf("     handicap %d pieces  ", hcap2);
  67.     }
  68.     printf("\n");
  69.   }
  70.   displaybottom();
  71. }
  72.  
  73. displaytop()
  74. {
  75.   int i;
  76.   char c;
  77.   printf("   ");
  78.   for (i=0;i<MAXX;i++) {
  79.     c = i + 'a';
  80.     if (c >= 'i') c++;
  81.     putchar(c); putchar(' ');
  82.   }
  83.   putchar('\n');
  84. }
  85.  
  86. displaybottom() { displaytop(); }
  87.  
  88. displayrow(r,scoreflag)
  89. int r;
  90. int scoreflag;
  91. {
  92.   int i;
  93.   printf("%2d ",MAXY - r);
  94.   for (i=0;i<MAXX;i++) {
  95.     if(p[r][i] == BLACK) putchar('#');
  96.     else if(p[r][i] == WHITE) putchar('O');
  97.     else if (scoreflag) {
  98.       if(ownermat[r][i] == BLACK) putchar('B');
  99.       else if(ownermat[r][i] == WHITE) putchar('W');
  100.       else displayempty(r,i);
  101.     }
  102.     else displayempty(r,i);
  103.     if (i<MAXX-1) putchar(' ');
  104.   }
  105.   printf(" %2d",MAXY - r);
  106. }
  107.  
  108. displayempty(r,c)
  109. int r,c;
  110. {
  111.   int m,center;
  112.   m = (MAXX < 13) ? 2 : 3;
  113.   center = MAXX / 2;
  114.   if      ( (r == m || r == center || r == MAXX - m - 1) &&
  115.         (c == m || c == center || c == MAXX - m - 1) )
  116.     putchar('+');
  117.   else
  118.     putchar('.');
  119. }
  120.  
  121. clear()
  122. {
  123. #ifdef VT100
  124.   fputs('\033[H',stdout);
  125.   fputs('\033[J',stdout); fflush(stdout);
  126. #endif
  127. #ifdef MAC
  128.   ccleos(stdout);
  129. #endif
  130.   return;
  131. }
  132.  
  133. gotoxy(int r, int c)
  134. {
  135. #ifdef VT100
  136.   putchar('\033'); putchar('[');
  137.   if (r >= 10) putchar(r/10 + '0'); putchar(r%10 + '0');
  138.   putchar(';');
  139.   if (c >= 10) putchar(c/10 + '0'); putchar(c%10 + '0');
  140.   putchar('H');
  141. #endif
  142. #ifdef MAC
  143.   if (Button()) { printf("paused "); getchar(); }
  144.   cgotoxy(c+1,r+1,stdout);
  145. #endif
  146.   return;
  147. }
  148.  
  149. /* */
  150.