Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Stop me before I code again.

Author: Nicolas Carrasco

Date: 16:46:15 12/25/99

Go up one level in this thread


char variables are slower than ints (at least at my CPU).
So I recommend you to change "board" to int type.

I recomend you to write your chess program in different files.
1-MOVE GENERATOR
2-MAKE - UNMAKE
3-EXTERNAL VARIABLES
4-DEFINITIONS AND MACROS
5-USER INPUT/OUTPUT
6-WINBOARD COMPABILITY
7-SEARCH

Other things:
Don't worry tooo much on USER input/output, at least at your fisrt versions. If
you know what you wrote, try undestanding BITBOARDS, LINKED structures and 0x88
trick.

On December 24, 1999 at 18:05:24, Joe ODonnell wrote:

>
>
>
>
>Iv run into a very frustrating problem with my chess program.
>
>When compiled at work with  the latest cygnus gcc package on windows
>95 the program
>
>will work normally (for the stage its at) for at least 10 interactive
>moves and then crash.
>
>When compiled at home on madrake-rh 6 gcc 2.91.66 it will do the same
>except the black rook
>
>on square 64 disappears during the search process. If I replace the
>'local number of moves on
>
>the move list' variable(called nnn-line 212) to 10 it causes a carriage
>return to be printed
>
>instead of a blank or rook during the search phase.(My program prints
>out the changing board  as it searches) Changing nnn to 20 leaves
>a blank. nnn is declared as a local int and is assigned
>
>from a pointer which gets its value from a generate moves function.
>How is this happening and how can it be happening on one version of gcc
>but not another?
>
>   Perhaps a guru will find it amusing to answer this question
>and ease my pain.
>
>Another entertaining bug is that if you set the search depth to greater
>then 2 (at line 198)
>
>it searches for several minutes, the pawns start reproducing with each
>other and then it
>
>crashes. Yes, the attached code does currently look similar to a car
>crash and any criticism would be appreciated.
>
>
>
>
>
> #include <stdio.h>
> main ()
> {
> /* Joe's bogus chess program 10/28/99 Joe O'Donnell jubal@doramail.com
>*/
>
> int a,i,cd1,cd2,cd3,cd4, x, n, *depth, *nom, *side, sidev, nomv,
>move_list[500];  int last_move[10], game_move_list[500], move[10],
>best_move[10];  int depthv;
> float b;
> char c[5], p, p2;
> char board[64];
>
>
>
> /*Initialize board with piece placement*/
> move[1]=0;
> sidev=1;
> side=&sidev;
> nomv=1;
> nom=&nomv;
> depthv=1;
> depth=&depthv;
> last_move[1]=0;
> last_move[5]=0;
>
> for (a=0;a<=64;a=a+1)
> board[a]='.';
> board[1]='R';board[2]='N';board[3]='B';board[4]='Q';
> board[5]='K';board[6]='B';board[7]='N';board[8]='R';
> for (a=9;a<=16;a=a+1)
> board[a]='P';
> board[64]='r';board[63]='n';board[62]='b';board[61]='k';
> board[60]='q';board[59]='b';board[58]='n';board[57]='r';
> for (a=49;a<=56;a=a+1)
> board[a]='p';
>
> display(board,0,0);
>
>
> /* Infinite loop-switching between waiting for user input */
> /* and searching for and making computer move*/
> /* (or carrying out commands like start new game and display board) =
> */
>
> printf("type ? for help\n");
> while (c[0] !='q'){ /*loop until receiving q for quit */
> printf("jbcp>");
> scanf("%s", c);
>
> if (c[0]=='?') { /* print help */
> printf("type x to display board\n");
> printf("enter move as coordinates (ex:e2e4)\n");
> printf("type q for quit\n");
> continue;
> }
>
> if (c[0]=='x'){ /*display board */
> display(board,0,0);
> continue;
> }
>
> if (c[0]=='m'){/*get and display move list*/
> get_moves(board, move_list, nom, side, x, n, last_move);
> for (x=0;x<(*nom)/5;x=x+1){
>  printf(" %d-- ", x);
>  for(n=1;n<=5;n=n+1){
> printf("%d ", move_list[(x*5)+n]);
> }
> printf(" \n");
> }
> printf(" \n");
> continue;
> }
>
>
>
>
>
>
> /* process human move coordinates */
> if (c[0]=='a') {cd1=1;}
> if (c[0]=='b') {cd1=2;}
> if (c[0]=='c') {cd1=3;}
> if (c[0]=='d') {cd1=4;}
> if (c[0]=='e') {cd1=5;}
> if (c[0]=='f') {cd1=6;}
> if (c[0]=='g') {cd1=7;}
> if (c[0]=='h') {cd1=8;}
> if (c[2]=='a') {cd3=1;}
> if (c[2]=='b') {cd3=2;}
> if (c[2]=='c') {cd3=3;}
> if (c[2]=='d') {cd3=4;}
> if (c[2]=='e') {cd3=5;}
> if (c[2]=='f') {cd3=6;}
> if (c[2]=='g') {cd3=7;}
> if (c[2]=='h') {cd3=8;}
>
> if (c[0]=='q') {
> continue;
> }
>
> /* make human move */
> if(*side==1){
> cd2=c[1]-48;
> cd4=c[3]-48;
>
> makemove(cd1,cd2,cd3,cd4,board);
>
> display(board,0,0);
> }
> *side=2;
>
>
>
>
>
> /***computer move***************************/
> if(*side==2){
>  *side=1;
>  search(board, last_move, nom, side, depth, move_list);
>  make_move(last_move, board);
>  printf("last move %d %d %d\n",last_move[1], last_move[2], last_move[9]);
>  display(board,0,0);
> *side=1;
>
>   }/*end computer move*/
> }/*END IN!=q*/
>
> exit (0); /*return to operating system */
> }
>
>evaluate(board, move_list, nom)
>int move_list[500], *nom;
>char board[64];
>{
>
> int x, n;
> char w;
> n=0;
> for(x=1;x<65;x=x+1){
> w=board[x];
> if(board[x]=='.'){
>   continue;}
> if(w=='K'){
> n=n+10000;}
> if(w=='Q'){
> n=n+90;}
> if(w=='R'){
> n=n+50;}
> if(w=='N'){
>   n=n+30;}
> if(w=='B'){
>  n=n+30;}
> if(w=='P'){
> n=n+10;}
>
> if(w=='k'){
> n=n-10000;}
> if(w=='q'){
> n=n-90;}
> if(w=='r'){
> n=n-50;}
> if(w=='n'){
> n=n-30;}
> if(w=='b'){
> n=n-30;}
> if(w=='p'){
> n=n-10;}
> }
>
> return(n);
>
>}/*end evaluate*/
>
>
>
>/********************search****************************8*/
>  search(board, last_move, nom, side, depth, move_list)
>  char board[64];
>  int last_move[10], *nom, *side, *depth, move_list[500];
>{
>
>  int move_list2[500], x, n;
>  int nnn;
>  char board2[64];
>  int last_move3[10], best_move[10], move[10];
>
>
>   best_move[9]=0;
>
>    printf("search nom %d\n",*nom);
>    for(n=1;n<65;n=n+1){
>   board2[n]=board[n];}
>
>
>  if(*depth==2){/**if leaf node then evaluate**/
>   last_move[9]=evaluate(board2,move_list,nom);
>   printf("evaluate %d \n",last_move[9]);
>   return(0);
>     }
>
>   if(*side==1){/*other side decides on move*/
>    *side=2;}
>    else {
>     *side=1;}
>
>     get_moves(board2, move_list2, nom, side, x, n, last_move);
>
>     printf("nom %d \n",*nom);
>     nnn=((*nom)/5)-1;
>
>     for(x=0;x<nnn;x=x+1){
>
>       printf("test \n");
>     for(n=1;n<6;n=n+1) last_move3[n]=move_list2[x*5+n];
>
>
>     printf("x %d *nom/5 %d nnn %d \n",x,*nom/5,nnn);
>     printf("nnn %d \n",&nnn);
>     make_move(last_move3, board2);
>     printf("*nom %d nnn %d \n", *nom, nnn);
>     display(board2,0,0);
>
>    *depth=*depth+1;
>     search(board2, last_move3, nom, side, depth, move_list2);
>     *depth=*depth-1;
>     if(*side==1){
>       if(last_move3[9]>best_move[9]) {
>     for(n=1;n<11;n=n+1) best_move[n]=last_move3[n];
>       }
>       }
>     if(*side==2){
>       if(last_move3[9]<best_move[9]){
>         for(n=1;n<11;n=n+1){
>          best_move[n]=last_move3[n];
>       printf("bestmove=lastmove");
>       }
>      }
>     }
>    /*unmake move*/
>     printf("Unmake move \n");
>
>    move[1]=last_move3[2];
>    move[2]=last_move3[1];
>    move[3]=last_move3[3];
>    move[4]=0;
>
>    make_move(move,board2);
>    move[1]=0;
>    move[2]=last_move3[2];
>    move[3]=last_move3[4];
>    move[4]=0;
>    make_move(move, board2);
>
>    printf("test");
>       }/*next move*/
>     printf("return score \n");
>      /* move list has now become a node and will return its score*/
>     if(best_move[1]>64) {/*in case all moves where equal eval*/
>       for(n=1;n<6;n=n+1) best_move[n]=last_move3[n];}
>
>       if(*side==1){
>        *side=2;}
>       else{
>        *side=1;}
>        for(n=1;n<11;n=n+1){
>         last_move[n]=best_move[n];}
>        for(n=1;n<10;n=n+1) printf("lastmove %d \n",last_move[n]);
>        printf("end of search \n");
>         return(0);
>
>        }/*end search*/
>
>make_move(move, board)
>int move[10];
>char board[64];
>{
>
> int q;
> char w,daconvert();
>
> printf("w %d q %d \n",&w,&q);
>
> printf("board[move[1]] %d \n",&board[move[1]]);
> printf("move[1] %d \n",move[1]);
> board[move[1]]='.';
>q=move[3];
> board[move[2]]=daconvert(q);
>
>
> return(0);
> }
>
>char daconvert(q)
>int q;
>
>{
>
> char w;
> printf("daconvert-q %d \n",&q);
> printf("daconvert-w %d \n",&w);
>   if(q==1) w='K';
>
>if(q==2) w='Q';
>if(q==3) w='R';
>if(q==4) w='N';
>if(q==5) w='B';
>if(q==6) w='P';
>if(q==11) w='k';
>if(q==12) w='q';
>if(q==13) w='r';
>if(q==14) w='n';
>if(q==15) w='b';
>if(q==16) w='p';
>if(q==0) w='.';
>return(w);
>}
>
>
>
>
>
>
>
>
>
>
> display(board2,k,j)
>
> char board2[64];
> int j,k;
> {
> for (j=7;j>=0;j=j-1){
> for (k=1;k<=8;k=k+1) {
> printf("%c ", board2[j*8+k]);
> }
> printf("\n");
> }
>
> return(0);
> }
>
>
>
>
>
>
> makemove(cd1, cd2, cd3, cd4, board)
> /*make move */
> int cd1,cd2,cd3,cd4;
> char board[64];
> {
> char p,p2;
> p=board[((cd2-1)*8)+cd1];
> p2=board[((cd4-1)*8)+cd3];
>
> board[((cd4-1)*8)+cd3]=p;
> board[((cd2-1)*8)+cd1]='.';
>
> return (0);
> }
>
>
> get_moves(board3, move_list, nom, side, x, n, last_move)
>  char board3[64];
>  int *nom, *side, x, move_list[500], n, last_move[10];
>{
>  char board[64];
> int y,z,q;
> n=0;
> *nom=1;
> for(n=0;n<65;n=n+1) board[n]=board3[n];
> n=0;
> printf("here \n");
> printf("board %c \n",board[1]);
>
> if (*side==1) {/*white to move*/
>  for(x=1;x<65;x=x+1){
>    if (board[x]=='P'){ /*pawn moves************************************/
>      if (board[x+8]=='.' && x+8<65){/*pawn makes 1 move ahead*/
>      move_list[*nom]=x;
>      move_list[*nom+1]=x+8;
>      move_list[*nom+2]=6;
>      move_list[*nom+3]=0;
>      move_list[*nom+4]=0;/*0 is special code for normal move*/
>      *nom=*nom+5;
>     if (x<17){/*2 spaces on first move*/
>      if (board[x+16]=='.'){
>        move_list[*nom]=x;
>        move_list[*nom+1]=x+16;
>        move_list[*nom+2]=6;/* 6 is code for white pawn*/
>        move_list[*nom+3]=0;/*0 is code for empty square*/
>        move_list[*nom+4]=7;/*7 is special code for having made 2 space 1st
>           move*/
>        *nom=*nom+5;
>       }
>      }
>      }
>      /*pawn captures*/
>       n=adconvert(board, x+7, n);
>     if(n>10){/*pawn captures left*/
>        printf("here");
>       if(x!=1 && x!=9 && x!=17 && x!=25 && x!=33 && x!=49 && x!=57
>        && x+7<65){/*make sure pawn is not on leftedg*/
>         move_list[*nom]=x;
>         move_list[*nom+1]=x+7;
>         move_list[*nom+2]=adconvert(board, x, n);
>         move_list[*nom+3]=adconvert(board, x+7, n);
>         move_list[*nom+4]=8; /*special code for white capture*/
>         *nom=*nom+5;
>         n=0;
>        }
>       }
>       n=adconvert(board, x+9, n);
>        if(n>10){/*pawn captures right*/
>     if(x!=8 && x!=16 && x!=24 && x!=32 && x!=40 && x!=48 && x!=56 && x!=64
>        && x+9<65){
>        move_list[*nom]=x;
>        move_list[*nom+1]=x+9;
>        move_list[*nom+2]=adconvert(board, x, n);
>        move_list[*nom+3]=adconvert(board, x+9, n);
>        move_list[*nom+4]=8;
>        *nom=*nom+5;
>        n=0;
>       }
>      }
>       n=adconvert(board, x+1, n); /*pawn en passant capture right*/
>        if(last_move[2]==x+1 && last_move[5]==7){
>         move_list[*nom]=x;
>         move_list[*nom+1]=x+9;
>         move_list[*nom+2]=adconvert(board, x , n);
>         move_list[*nom+3]=adconvert(board, x+1, n);
>         move_list[*nom+4]=9;/*special code for en passant capture*/
>         *nom=*nom+5;
>         n=0;
>        }
>        n=adconvert(board, x-1, n); /*pawn en passant capture left*/
>        if(last_move[2]==x-1 && last_move[5]==7){
>         move_list[*nom]=x;
>         move_list[*nom+1]=x+7;
>         move_list[*nom+2]=6;
>         move_list[*nom+3]=16;
>         move_list[*nom+4]=9;
>         *nom=*nom+5;
>         n=0;
>         }
>
>
>     }/*end of pawn moves******************/
>      /*Rook moves**************************************/
>       if(board[x]=='R'){
>        for(n=1;n<8;n=n+1){/*rook going right*/
>         if(x+n==9 || x+n==17 || x+n==33 || x+n==41 || x+n==49 || x+n==57 ||
>         x+n==65 || x+n==25){n=8;break;}/*rook hits right side of board*/
>          if(board[x+n]=='.'){ /*rook moves*/
>           move_list[*nom]=x;
>           move_list[*nom+1]=x+n;
>           move_list[*nom+2]=3;
>           move_list[*nom+3]=0;
>           move_list[*nom+4]=0;
>           *nom=*nom+5;
>            }
>           q=adconvert(board, x+n, q);
>           if(q>10){/*rook capture to right*/
>            move_list[*nom]=x; move_list[*nom+1]=x+n;
>            move_list[*nom+2]=3; move_list[*nom+3]=q;move_list[*nom+4]=8;
>            *nom=*nom+5;
>             }
>           if(q!=0){/*if rook has either captured or been blocked*/
>            n=8;}
>           }/*end rook going right*/
>
>
>            for(n=1;n<8;n=n+1){/*rook going left*****/
>             if(x-n==8 || x-n==16 || x-n==24 || x-n==32 || x-n==40
>             || x-n==48 || x-n==56 || x-n==64 || x==1){
>              n=8;break;}/*rook hits left side of board*/
>              if(board[x-n]=='.'){/*rook moves left*/
>               move_list[*nom]=x;move_list[*nom+1]=x-n;
>               move_list[*nom+2]=3;move_list[*nom+3]=0;move_list[*nom+4]=0;
>                *nom=*nom+5;}
>              q=adconvert(board, x-n, q);
>               if(q>10){/*rook capture to left*/
>                move_list[*nom]=x;move_list[*nom+1]=x-n;move_list[*nom+2]=3;
>                move_list[*nom+3]=q;move_list[*nom+4]=8;*nom=*nom+5;}
>              if(q!=0){/*rook has either captured or blocked*/
>               n=8;}
>          }/*end rook going left*/
>
>
>             for(n=8;n<57;n=n+8){/* rook moves forward*/
>              if(x+n>64){/*rook hits front of board*/
>                n=57;break;}
>              if(board[x+n]=='.'){/*rook moves forward*/
>               move_list[*nom]=x;move_list[*nom+1]=x+n;move_list[*nom+2]=3;
>               move_list[*nom+3]=0;move_list[*nom+4]=0;*nom=*nom+5;}
>              q=adconvert(board, x+n, n);
>              if(q>10){/*rook captures to front*/
>               move_list[*nom]=x;move_list[*nom+1]=x+n;move_list[*nom+2]=3;
>               move_list[*nom+3]=q;move_list[*nom+4]=8;*nom=*nom+5;}
>               if(q!=0){/*rook has either captured or blocked*/
>                n=57;}
>           }/*end rook moves forward*/
>          for(n=8;n<57;n=n+8){/*rook moves backward*/
>           if(x-n<1){/*rook hits back of board*/
>            n=57;break;}
>             if(board[x-n]=='.'){/*rookmoves backward*/
>              move_list[*nom]=x;move_list[*nom+1]=x-n;move_list[*nom+2]=3;
>              move_list[*nom+3]=0;move_list[*nom+4]=0l;*nom=*nom+5;}
>             q=adconvert(board, x-n, n);
>             if(q>10){/*rook captures backwards*/
>              move_list[*nom]=x;move_list[*nom+1]=x-n;move_list[*nom+2]=3;
>              move_list[*nom+3]=q;move_list[*nom+4]=8;*nom=*nom+5;}
>              if(q!=0){/*rook has captured or stopped*/
>               n=57;break;}
>             }/*end rook moves backward*/
>              }/*end rook moves*/
>
>
>         /********night moves**************/
>     if(board[x]=='N'){
>      if(x!=8 && x!=16 && x!=32 && x!=40 && x!=48 && x!=56
>        && x!=64){/*knight move upper right*/
>        if(x<49){/*N cant jump off board*/
>         if(board[x+17]=='.'){
>        move_list[*nom]=x;move_list[*nom+1]=x+17;move_list[*nom+2]=4;
>        move_list[*nom+3]=0;move_list[*nom+4]=0;*nom=*nom+5;}
>        q=adconvert(board, x+17, n);
>        if(q>10){/*knight capture upper right*/
>         move_list[*nom]=x;move_list[*nom+1]=x+17;move_list[*nom+2]=4;
>         move_list[*nom+3]=q;move_list[*nom+4]=8;*nom=*nom+5;}
>         }/*finish N upper right test
>
>
>             /*N moves far right up*/
>         if(x<57){/*fru test 1*/
>         if(x!=7 && x!=15 && x!=23 && x!=31 && x!=39 && x!=47 && x!=55
>          && x!=63){/*fru test2*/
>         if(board[x+10]=='.'){
>        move_list[*nom]=x;move_list[*nom+1]=x+10;move_list[*nom+2]=4;
>        move_list[*nom+3]=0;move_list[*nom+4]=0;*nom=*nom+5;}
>        q=adconvert(board, x+10, n);
>        if(q>10){/*knight capture upper right*/
>         move_list[*nom]=x;move_list[*nom+1]=x+10;move_list[*nom+2]=4;
>         move_list[*nom+3]=q;move_list[*nom+4]=8;*nom=*nom+5;}
>         }/*end fru test2*/
>         }/*fru test1*/
>
>
>         if(x>=17){/*lr test*/
>         if(board[x-15]=='.'){/*N moves lower right*/
>          move_list[*nom]=x;move_list[*nom+1]=x-15;move_list[*nom+2]=4;
>          move_list[*nom+3]=0;move_list[*nom+4]=0;*nom=*nom+5;}
>         q=adconvert(board,x-15,n);
>         if(q>10){/*N captures lower right*/
>          move_list[*nom]=x;move_list[*nom+1]=x-15;move_list[*nom+2]=4;
>          move_list[*nom+3]=q;move_list[*nom+4]=8;*nom=*nom+5;}
>          }/*end lr test*/
>
>         /*N move far right down*/
>          if(x>=9){/*frd test1*/
>          if(x!=7 && x!=15 && x!=23 && x!= 31 && x!=39 && x!=47 && x!=55
>           && x!=63){/*frd test2*/
>          if(board[x-6]=='.'){
>        move_list[*nom]=x;move_list[*nom+1]=x-6;move_list[*nom+2]=4;
>        move_list[*nom+3]=0;move_list[*nom+4]=0;*nom=*nom+5;}
>        q=adconvert(board, x-6, n);
>        if(q>10){/*knight capture upper right*/
>         move_list[*nom]=x;move_list[*nom+1]=x-6;move_list[*nom+2]=4;
>         move_list[*nom+3]=q;move_list[*nom+4]=8;*nom=*nom+5;}
>         }/*end frd test2*/
>         }/*end frd test1*/
>
>         }/*end N moves upper right and lower right*/
>
>       if(x!=1 && x!=9 && x!=17 && x!=25 && x!=33 && x!=41 && x!=49 && x!=57){
>       /*N moves upper left*/
>        if(x<=48){/*ul test*/
>        if(board[x+15]=='.'){
>         move_list[*nom]=x;move_list[*nom+1]=x+15;move_list[*nom+2]=4;
>         move_list[*nom+3]=0;move_list[*nom+4]=0;*nom=*nom+5;}
>        q=adconvert(board, x+15, n);
>        if(q>10){/*knight captures upper left*/
>         move_list[*nom]=x;move_list[*nom+1]=x+15;move_list[*nom+2]=4;
>         move_list[*nom+3]=q;move_list[*nom+4]=8;*nom=*nom+5;}
>         }/*end il test*/
>
>         /*far upper left*/
>         if(x<=56){/*ful test1*/
>         if(x!=2 && x!=10 && x!= 18 && x!= 26 && x!=34 && x!=42 && x!= 50 &&
>          x!=58){/*ful test2*/
>        if(board[x+6]=='.'){
>         move_list[*nom]=x;move_list[*nom+1]=x+6;move_list[*nom+2]=4;
>         move_list[*nom+3]=0;move_list[*nom+4]=0;*nom=*nom+5;}
>        q=adconvert(board, x+6, n);
>        if(q>10){/*knight captures upper left*/
>         move_list[*nom]=x;move_list[*nom+1]=x+6;move_list[*nom+2]=4;
>         move_list[*nom+3]=q;move_list[*nom+4]=8;*nom=*nom+5;}
>         }/*end ful test1*/
>
>         }/*end ful test2*/
>
>         if(x>=17){/*ll test*/
>         if(board[x-17]=='.'){/*N moves lower left*/
>          move_list[*nom]=x;move_list[*nom+1]=x-17;move_list[*nom+2]=4;
>          move_list[*nom+3]=0;move_list[*nom+4]=0;*nom=*nom+5;}
>         q=adconvert(board,x-17,n);
>         if(q>10){/*N captures lower left*/
>          move_list[*nom]=x;move_list[*nom+1]=x-17;move_list[*nom+2]=4;
>          move_list[*nom+3]=q;move_list[*nom+4]=8;*nom=*nom+5;}
>          }/*end ll test*/
>
>          /*lower far left */
>           if(x!=2 && x!=10 && x!=18 && x!=26 && x!=34 && x!=42 && x!=50 &&
>            x!=58){/*lfl test1*/
>            if(x>=9){/*lfl test2*/
>         if(board[x-10]=='.'){/*N moves lower left*/
>          move_list[*nom]=x;move_list[*nom+1]=x-10;move_list[*nom+2]=4;
>          move_list[*nom+3]=0;move_list[*nom+4]=0;*nom=*nom+5;}
>         q=adconvert(board,x-10,n);
>         if(q>10){/*N captures lower far left*/
>          move_list[*nom]=x;move_list[*nom+1]=x-10;move_list[*nom+2]=4;
>          move_list[*nom+3]=q;move_list[*nom+4]=8;*nom=*nom+5;}
>          }/*end lfl test2*/
>          }/*end lfl test1*/
>
>          }/* end N moves upper and lower left*/
>
>      }/*end N moves****/
>
>      /********************bishop moves*********************/
>
>
>          if(board[x]=='B'){/*test for bishop*/
>      /*bishop moves upper right***/
>       for(n=1;n<8;n=n+1){
>        q=(x+n+(n*8));
>        if(q==9 || q==17 || q==25 || q==33 || q==41 || q==49 || q==57 ||
>        q==65){/*bishop cant go off board*/
>         n=8;break;}
>        if(q>64){/*b cant go off board*/
>         n=8;break;}
>         if(board[q]=='.'){/*bishop moves ur*/
>           move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=5;
>           move_list[*nom+3]=0;move_list[*nom+4]=0;*nom=*nom+5;}
>         z=adconvert(board, q, z);
>         if(z>10){/*b captures ur*/
>          move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=5;
>          move_list[*nom+3]=z;move_list[*nom+4]=8;*nom=*nom+5;}
>         if(z!=0){/*bishop has captured or been blocked*/
>          n=8;break;}
>
>        }/*end b moves ur*/
>
>         /*bishop moves lower right**/
>         for(n=1;n<8;n=n+1){
>        q=(x+n-(n*8));
>        if(q==9 || q==17 || q==25 || q==33 || q==41 || q==49 || q==57 ||
>        q==65){/*bishop cant go off board*/
>         n=8;break;}
>        if(q<1){/*b cant go off board*/
>         n=8;break;}
>         if(board[q]=='.'){/*bishop moves lr*/
>           move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=5;
>           move_list[*nom+3]=0;move_list[*nom+4]=0;*nom=*nom+5;}
>         z=adconvert(board, q, z);
>         if(z>10){/*b captures lr*/
>          move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=5;
>          move_list[*nom+3]=z;move_list[*nom+4]=8;*nom=*nom+5;}
>         if(z!=0){/*bishop has captured or been blocked*/
>          n=8;break;}
>
>        }/*end b moves lr*/
>
>         /*bishop moves upper left*/
>       for(n=1;n<8;n=n+1){
>        q=(x-n+(n*8));
>        if(q==16 || q==24 || q==32 || q==40 || q==48 || q==56 || q==64
>          ){/*bishop cant go off board*/
>         n=8;break;}
>        if(q>64){/*b cant go off board*/
>         n=8;break;}
>         if(board[q]=='.'){/*bishop moves ur*/
>           move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=5;
>           move_list[*nom+3]=0;move_list[*nom+4]=0;*nom=*nom+5;}
>         z=adconvert(board, q, z);
>         if(z>10){/*b captures ur*/
>          move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=5;
>          move_list[*nom+3]=z;move_list[*nom+4]=8;*nom=*nom+5;}
>         if(z!=0){/*bishop has captured or been blocked*/
>          n=8;break;}
>
>        }/*end b moves ul*/
>
>         /*bishop moves lower left*/
>          for(n=1;n<8;n=n+1){
>        q=(x-n-(n*8));
>        if(q==16 || q==24 || q==32 || q==40 || q==48 || q==56 || q==64
>         || q==8){/*bishop cant go off board*/
>         n=8;break;}
>        if(q<1){/*b cant go off board*/
>         n=8;break;}
>         if(board[q]=='.'){/*bishop moves ur*/
>           move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=5;
>           move_list[*nom+3]=0;move_list[*nom+4]=0;*nom=*nom+5;}
>         z=adconvert(board, q, z);
>         if(z>10){/*b captures ur*/
>          move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=5;
>          move_list[*nom+3]=z;move_list[*nom+4]=8;*nom=*nom+5;}
>         if(z!=0){/*bishop has captured or been blocked*/
>          n=8;break;}
>
>        }/*end b moves ll*/
>
>     }/*end bishop moves***/
>
>
>/*************queen moves*************/
>
>                  if(board[x]=='Q'){/*test for bishop*/
>      /*bishop moves upper right***/
>       for(n=1;n<8;n=n+1){
>        q=(x+n+(n*8));
>        if(q==9 || q==17 || q==25 || q==33 || q==41 || q==49 || q==57 ||
>        q==65){/*bishop cant go off board*/
>         n=8;break;}
>        if(q>64){/*b cant go off board*/
>         n=8;break;}
>         if(board[q]=='.'){/*bishop moves ur*/
>           move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=2;
>           move_list[*nom+3]=0;move_list[*nom+4]=0;*nom=*nom+5;}
>         z=adconvert(board, q, z);
>         if(z>10){/*b captures ur*/
>          move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=2;
>          move_list[*nom+3]=z;move_list[*nom+4]=8;*nom=*nom+5;}
>         if(z!=0){/*bishop has captured or been blocked*/
>          n=8;break;}
>
>        }/*end b moves ur*/
>
>         /*bishop moves lower right**/
>         for(n=1;n<8;n=n+1){
>        q=(x+n-(n*8));
>        if(q==9 || q==17 || q==25 || q==33 || q==41 || q==49 || q==57 ||
>        q==65){/*bishop cant go off board*/
>         n=8;break;}
>        if(q<1){/*b cant go off board*/
>         n=8;break;}
>         if(board[q]=='.'){/*bishop moves lr*/
>           move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=2;
>           move_list[*nom+3]=0;move_list[*nom+4]=0;*nom=*nom+5;}
>         z=adconvert(board, q, z);
>         if(z>10){/*b captures lr*/
>          move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=2;
>          move_list[*nom+3]=z;move_list[*nom+4]=8;*nom=*nom+5;}
>         if(z!=0){/*bishop has captured or been blocked*/
>          n=8;break;}
>
>        }/*end b moves lr*/
>
>         /*bishop moves upper left*/
>       for(n=1;n<8;n=n+1){
>        q=(x-n+(n*8));
>        if(q==16 || q==24 || q==32 || q==40 || q==48 || q==56 || q==64
>          ){/*bishop cant go off board*/
>         n=8;break;}
>        if(q>64){/*b cant go off board*/
>         n=8;break;}
>         if(board[q]=='.'){/*bishop moves ur*/
>           move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=2;
>           move_list[*nom+3]=0;move_list[*nom+4]=0;*nom=*nom+5;}
>         z=adconvert(board, q, z);
>         if(z>10){/*b captures ur*/
>          move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=2;
>          move_list[*nom+3]=z;move_list[*nom+4]=8;*nom=*nom+5;}
>         if(z!=0){/*bishop has captured or been blocked*/
>          n=8;break;}
>
>        }/*end b moves ul*/
>
>         /*bishop moves lower left*/
>          for(n=1;n<8;n=n+1){
>        q=(x-n-(n*8));
>        if(q==16 || q==24 || q==32 || q==40 || q==48 || q==56 || q==64
>         || q==8){/*bishop cant go off board*/
>         n=8;break;}
>        if(q<1){/*b cant go off board*/
>         n=8;break;}
>         if(board[q]=='.'){/*bishop moves ur*/
>           move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=2;
>           move_list[*nom+3]=0;move_list[*nom+4]=0;*nom=*nom+5;}
>         z=adconvert(board, q, z);
>         if(z>10){/*b captures ur*/
>          move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=2;
>          move_list[*nom+3]=z;move_list[*nom+4]=8;*nom=*nom+5;}
>         if(z!=0){/*bishop has captured or been blocked*/
>          n=8;break;}
>
>        }/*end b moves ll*/
>
>       /******queen as rook*****/
>
>       for(n=1;n<8;n=n+1){/*rook going right*/
>         if(x+n==9 || x+n==17 || x+n==33 || x+n==41 || x+n==49 || x+n==57 ||
>         x+n==65 || x+n==25){n=8;break;}/*rook hits right side of board*/
>          if(board[x+n]=='.'){ /*rook moves*/
>           move_list[*nom]=x;
>           move_list[*nom+1]=x+n;
>           move_list[*nom+2]=2;
>           move_list[*nom+3]=0;
>           move_list[*nom+4]=0;
>           *nom=*nom+5;
>            }
>           q=adconvert(board, x+n, q);
>           if(q>10){/*rook capture to right*/
>            move_list[*nom]=x; move_list[*nom+1]=x+n;
>            move_list[*nom+2]=2; move_list[*nom+3]=q;move_list[*nom+4]=8;
>            *nom=*nom+5;
>             }
>           if(q!=0){/*if rook has either captured or been blocked*/
>            n=8;}
>           }/*end rook going right*/
>
>
>            for(n=1;n<8;n=n+1){/*rook going left*****/
>             if(x-n==8 || x-n==16 || x-n==24 || x-n==32 || x-n==40
>             || x-n==48 || x-n==56 || x-n==64 || x==1){
>              n=8;break;}/*rook hits left side of board*/
>              if(board[x-n]=='.'){/*rook moves left*/
>               move_list[*nom]=x;move_list[*nom+1]=x-n;
>               move_list[*nom+2]=2;move_list[*nom+3]=0;move_list[*nom+4]=0;
>                *nom=*nom+5;}
>              q=adconvert(board, x-n, q);
>               if(q>10){/*rook capture to left*/
>                move_list[*nom]=x;move_list[*nom+1]=x-n;move_list[*nom+2]=2;
>                move_list[*nom+3]=q;move_list[*nom+4]=8;*nom=*nom+5;}
>              if(q!=0){/*rook has either captured or blocked*/
>               n=8;}
>          }/*end rook going left*/
>
>
>             for(n=8;n<57;n=n+8){/* rook moves forward*/
>              if(x+n>64){/*rook hits front of board*/
>                n=57;break;}
>              if(board[x+n]=='.'){/*rook moves forward*/
>               move_list[*nom]=x;move_list[*nom+1]=x+n;move_list[*nom+2]=2;
>               move_list[*nom+3]=0;move_list[*nom+4]=0;*nom=*nom+5;}
>              q=adconvert(board, x+n, n);
>              if(q>10){/*rook captures to front*/
>               move_list[*nom]=x;move_list[*nom+1]=x+n;move_list[*nom+2]=2;
>               move_list[*nom+3]=q;move_list[*nom+4]=8;*nom=*nom+5;}
>               if(q!=0){/*rook has either captured or blocked*/
>                n=57;}
>           }/*end rook moves forward*/
>          for(n=8;n<57;n=n+8){/*rook moves backward*/
>           if(x-n<1){/*rook hits back of board*/
>            n=57;break;}
>             if(board[x-n]=='.'){/*rookmoves backward*/
>              move_list[*nom]=x;move_list[*nom+1]=x-n;move_list[*nom+2]=2;
>              move_list[*nom+3]=0;move_list[*nom+4]=0l;*nom=*nom+5;}
>             q=adconvert(board, x-n, n);
>             if(q>10){/*rook captures backwards*/
>              move_list[*nom]=x;move_list[*nom+1]=x-n;move_list[*nom+2]=2;
>              move_list[*nom+3]=q;move_list[*nom+4]=8;*nom=*nom+5;}
>              if(q!=0){/*rook has captured or stopped*/
>               n=57;break;}
>             }/*end rook moves backward*/
>
>     }/*end queen moves***/
>
>    /***king moves!!!:) ;)***/
>
>        if(board[x]=='K'){/**king moves**/
>         q=x+1;
>         if(q!=9 || q!=17 || q!=25 || q!=33 || q!=41 || q!=49 || q!=57 ||
>          q!=65){/*king moves right*/
>           if(board[q]=='.'){/* moves r*/
>            move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=1;
>            move_list[*nom+3]=0;move_list[*nom+4]=0;*nom=*nom+5;}
>           z=adconvert(board, q, n);
>           if(z>10){/*king captures!!*/
>            move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=1;
>            move_list[*nom+3]=z;move_list[*nom+4]=8;*nom=*nom+5;}
>
>         /*king moves upper right*/
>          q=x+9;
>          if(q<65){
>           if(board[q]=='.'){/*k moves r*/
>            move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=1;
>            move_list[*nom+3]=0;move_list[*nom+4]=0;*nom=*nom+5;}
>           z=adconvert(board, q, n);
>           if(z>10){/*king captures!!*/
>            move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=1;
>            move_list[*nom+3]=z;move_list[*nom+4]=8;*nom=*nom+5;}
>            }
>         /*king moves lower right*/
>          q=x-7;
>          if(q>7){
>           if(board[q]=='.'){/*k moves r*/
>            move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=1;
>            move_list[*nom+3]=0;move_list[*nom+4]=0;*nom=*nom+5;}
>           z=adconvert(board, q, n);
>           if(z>10){/*king captures!!*/
>            move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=1;
>            move_list[*nom+3]=z;move_list[*nom+4]=8;*nom=*nom+5;}
>            }
>            }/*end king moves right*/
>
>           /**king moves left**/
>           q=x-1;
>          if(q!=8 && q!=16 && q!=24 && q!=32 && q!=40 && q!=48 && q!=56 &&
>           q!=64){/*king cant jump off board*/
>           if(board[q]=='.'){/*k moves l*/
>            move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=1;
>            move_list[*nom+3]=0;move_list[*nom+4]=0;*nom=*nom+5;}
>           z=adconvert(board, q, n);
>           if(z>10){/*king captures!!*/
>            move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=1;
>            move_list[*nom+3]=z;move_list[*nom+4]=8;*nom=*nom+5;}
>
>             /*king moves upper left*/
>           q=x+7;
>           if(q<57){/*stay on board*/
>           if(board[q]=='.'){/*k moves ul*/
>            move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=1;
>            move_list[*nom+3]=0;move_list[*nom+4]=0;*nom=*nom+5;}
>           z=adconvert(board, q, n);
>           if(z>10){/*king captures!!*/
>            move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=1;
>            move_list[*nom+3]=z;move_list[*nom+4]=8;*nom=*nom+5;}
>            }/*stay on board*/
>
>         /*king moves lower left**/
>           q=x-9;
>           if(q>1){/*stay on board*/
>           if(board[q]=='.'){/*k moves ll*/
>            move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=1;
>            move_list[*nom+3]=0;move_list[*nom+4]=0;*nom=*nom+5;}
>           z=adconvert(board, q, n);
>           if(z>10){/*king captures!!*/
>            move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=1;
>            move_list[*nom+3]=z;move_list[*nom+4]=8;*nom=*nom+5;}
>            }/*stay on board*/
>            }/*end king moves left*/
>
>          /**king moves forward**/
>           q=x+8;
>           if(q<64){/*stay on board*/
>           if(board[q]=='.'){/*k moves ll*/
>            move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=1;
>            move_list[*nom+3]=0;move_list[*nom+4]=0;*nom=*nom+5;}
>           z=adconvert(board, q, n);
>           if(z>10){/*king captures!!*/
>            move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=1;
>            move_list[*nom+3]=z;move_list[*nom+4]=8;*nom=*nom+5;}
>            }/*stay on board*/
>
>          /*king moves backward**/
>           q=x-8;
>           if(q>1){/*stay on board*/
>           if(board[q]=='.'){/*k moves ll*/
>            move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=1;
>            move_list[*nom+3]=0;move_list[*nom+4]=0;*nom=*nom+5;}
>           z=adconvert(board, q, n);
>           if(z>10){/*king captures!!*/
>            move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=1;
>            move_list[*nom+3]=z;move_list[*nom+4]=8;*nom=*nom+5;}
>            }/*stay on board*/
>
>           /*king castles right**code=9/
>            if(x==5 && board[6]=='.' && board[7]=='.' && board[8]=='R'
>             && last_move[7]!=5 && last_move[7]-10!=5){
>            move_list[*nom]=x;move_list[*nom+1]=7;move_list[*nom+2=1;
>            move_list[*nom+3]=3;move_list[*nom+4]=9;*nom=*nom+5;}
>
>           /*king castles left**/
>            if(x==5 && board[4]=='.' && board[3]=='.' && board[2]=='.' &&
>             board[1]=='R' && last_move[7]!=10 && last_move[7]-5!=10){
>             move_list[*nom]=x;move_list[*nom+1]=3;move_list[*nom+2]=1;
>             move_list[*nom+3]=3;move_list[*nom+4]=9;*nom=*nom+5;}
>
>            }/*end king moves*/
>
>    }/*check 1 to 64 squares*/
>   } /*whites turn*/
>
>
> /************blacks*******************************************
> **************turn*********************************************
>****************************************************************
> **************************************************************/
>   if(*side==2){
>      printf("here is black");
>
>
>     for(x=1;x<65;x=x+1){
>
>    if (board[x]=='p'){ /*pawn moves************************************/
>      if (board[x-8]=='.' && x-8>0){/*pawn makes 1 move ahead*/
>      move_list[*nom]=x;
>      move_list[*nom+1]=x-8;
>      move_list[*nom+2]=16;
>      move_list[*nom+3]=0;
>      move_list[*nom+4]=0;/*0 is special code for normal move*/
>      *nom=*nom+5;
>     if (x>48){/*2 spaces on first move*/
>      if (board[x-16]=='.'){
>        move_list[*nom]=x;
>        move_list[*nom+1]=x-16;
>        move_list[*nom+2]=16;/* 6 is code for white pawn*/
>        move_list[*nom+3]=0;/*0 is code for empty square*/
>        move_list[*nom+4]=7;/*7 is special code for having made 2 space 1st
>           move*/
>        *nom=*nom+5;
>       }
>      }
>      }
>      /*pawn captures*/
>       n=adconvert(board, x-9, n);
>     if(n<10 && n>0){/*pawn captures left*/
>       if(x!=1 && x!=9 && x!=17 && x!=25 && x!=33 && x!=49 && x!=57
>        && x-9>0){/*make sure pawn is not on leftedg*/
>         move_list[*nom]=x;
>         move_list[*nom+1]=x-9;
>         move_list[*nom+2]=adconvert(board, x, n);
>         move_list[*nom+3]=adconvert(board, x-9, n);
>         move_list[*nom+4]=8; /*special code for white capture*/
>         *nom=*nom+5;
>         n=0;
>        }
>       }
>       n=adconvert(board, x-7, n);
>        if(n<10 && n>0){/*pawn captures right*/
>     if(x!=8 && x!=16 && x!=24 && x!=32 && x!=40 && x!=48 && x!=56 && x!=64
>         && x-7>0){
>        move_list[*nom]=x;
>        move_list[*nom+1]=x-7;
>        move_list[*nom+2]=adconvert(board, x, n);
>        move_list[*nom+3]=adconvert(board, x-7, n);
>        move_list[*nom+4]=8;
>        *nom=*nom+5;
>        n=0;
>       }
>      }
>       n=adconvert(board, x+1, n); /*pawn en passant capture right*/
>        if(last_move[5]==7 && last_move[2]==x+1){
>         move_list[*nom]=x;
>         move_list[*nom+1]=x-9;
>         move_list[*nom+2]=adconvert(board, x , n);
>         move_list[*nom+3]=adconvert(board, x+1, n);
>         move_list[*nom+4]=9;/*special code for en passant capture*/
>         *nom=*nom+5;
>         n=0;
>        }
>        n=adconvert(board, x-1, n); /*pawn en passant capture left*/
>        if(last_move[2]==x-1 && last_move[5]==7){
>         move_list[*nom]=x;
>         move_list[*nom+1]=x-7;
>         move_list[*nom+2]=16;
>         move_list[*nom+3]=6;
>         move_list[*nom+4]=9;
>         *nom=*nom+5;
>         n=0;
>         }
>
>
>     }/*end of pawn moves******************/
>      /*Rook moves**************************************/
>       if(board[x]=='r'){
>        for(n=1;n<8;n=n+1){/*rook going right*/
>         if(x+n==9 || x+n==17 || x+n==33 || x+n==41 || x+n==49 || x+n==57 ||
>         x+n==65 || x+n==25){n=8;break;}/*rook hits right side of board*/
>          if(board[x+n]=='.'){ /*rook moves*/
>           move_list[*nom]=x;
>           move_list[*nom+1]=x+n;
>           move_list[*nom+2]=13;
>           move_list[*nom+3]=0;
>           move_list[*nom+4]=0;
>           *nom=*nom+5;
>            }
>           q=adconvert(board, x+n, q);
>           if(q<10 && q>0){/*rook capture to right*/
>            move_list[*nom]=x; move_list[*nom+1]=x+n;
>            move_list[*nom+2]=13; move_list[*nom+3]=q;move_list[*nom+4]=8;
>            *nom=*nom+5;
>             }
>           if(q!=0){/*if rook has either captured or been blocked*/
>            n=8;}
>           }/*end rook going right*/
>
>
>            for(n=1;n<8;n=n+1){/*rook going left*****/
>             if(x-n==8 || x-n==16 || x-n==24 || x-n==32 || x-n==40
>             || x-n==48 || x-n==56 || x-n==64 || x==1){
>              n=8;break;}/*rook hits left side of board*/
>              if(board[x-n]=='.'){/*rook moves left*/
>               move_list[*nom]=x;move_list[*nom+1]=x-n;
>               move_list[*nom+2]=13;move_list[*nom+3]=0;move_list[*nom+4]=0;
>                *nom=*nom+5;}
>              q=adconvert(board, x-n, q);
>               if(q<10 && q>0){/*rook capture to left*/
>                move_list[*nom]=x;move_list[*nom+1]=x-n;move_list[*nom+2]=13;
>                move_list[*nom+3]=q;move_list[*nom+4]=8;*nom=*nom+5;}
>              if(q!=0){/*rook has either captured or blocked*/
>               n=8;}
>          }/*end rook going left*/
>
>
>             for(n=8;n<57;n=n+8){/* rook moves forward*/
>              if(x-n<1){/*rook hits front of board*/
>                n=57;break;}
>              if(board[x-n]=='.'){/*rook moves forward*/
>               move_list[*nom]=x;move_list[*nom+1]=x-n;move_list[*nom+2]=13;
>               move_list[*nom+3]=0;move_list[*nom+4]=0;*nom=*nom+5;}
>              q=adconvert(board, x-n, n);
>              if(q<10 && q>0){/*rook captures to front*/
>               move_list[*nom]=x;move_list[*nom+1]=x-n;move_list[*nom+2]=13;
>               move_list[*nom+3]=q;move_list[*nom+4]=8;*nom=*nom+5;}
>               if(q!=0){/*rook has either captured or blocked*/
>                n=57;}
>           }/*end rook moves forward*/
>          for(n=8;n<57;n=n+8){/*rook moves backward*/
>           if(x+n>64){/*rook hits back of board*/
>            n=57;break;}
>             if(board[x+n]=='.'){/*rookmoves backward*/
>              move_list[*nom]=x;move_list[*nom+1]=x+n;move_list[*nom+2]=13;
>              move_list[*nom+3]=0;move_list[*nom+4]=0l;*nom=*nom+5;}
>             q=adconvert(board, x+n, n);
>             if(q<10 && q>0){/*rook captures backwards*/
>              move_list[*nom]=x;move_list[*nom+1]=x+n;move_list[*nom+2]=13;
>              move_list[*nom+3]=q;move_list[*nom+4]=8;*nom=*nom+5;}
>              if(q!=0){/*rook has captured or stopped*/
>               n=57;break;}
>             }/*end rook moves backward*/
>              }/*end rook moves*/
>
>
>         /********night moves**************/
>     if(board[x]=='n'){
>      if(x!=8 && x!=16 && x!=32 && x!=40 && x!=48 && x!=56
>        && x!=64){/*knight move upper right*/
>        if(x<49){/*N cant jump off board*/
>         if(board[x+17]=='.'){
>        move_list[*nom]=x;move_list[*nom+1]=x+17;move_list[*nom+2]=14;
>        move_list[*nom+3]=0;move_list[*nom+4]=0;*nom=*nom+5;}
>        q=adconvert(board, x+17, n);
>        if(q<10 && q>0){/*knight capture upper right*/
>         move_list[*nom]=x;move_list[*nom+1]=x+17;move_list[*nom+2]=14;
>         move_list[*nom+3]=q;move_list[*nom+4]=8;*nom=*nom+5;}
>         }/*finish N upper right test
>
>
>             /*N moves far right up*/
>         if(x<57){/*fru test 1*/
>         if(x!=7 && x!=15 && x!=23 && x!=31 && x!=39 && x!=47 && x!=55
>          && x!=63){/*fru test2*/
>         if(board[x+10]=='.'){
>        move_list[*nom]=x;move_list[*nom+1]=x+10;move_list[*nom+2]=14;
>        move_list[*nom+3]=0;move_list[*nom+4]=0;*nom=*nom+5;}
>        q=adconvert(board, x+10, n);
>        if(q<10 && q>0){/*knight capture upper right*/
>         move_list[*nom]=x;move_list[*nom+1]=x+10;move_list[*nom+2]=14;
>         move_list[*nom+3]=q;move_list[*nom+4]=8;*nom=*nom+5;}
>         }/*end fru test2*/
>         }/*fru test1*/
>
>
>         if(x>=17){/*lr test*/
>         if(board[x-15]=='.'){/*N moves lower right*/
>          move_list[*nom]=x;move_list[*nom+1]=x-15;move_list[*nom+2]=14;
>          move_list[*nom+3]=0;move_list[*nom+4]=0;*nom=*nom+5;}
>         q=adconvert(board,x-15,n);
>         if(q<10 && q>0){/*N captures lower right*/
>          move_list[*nom]=x;move_list[*nom+1]=x-15;move_list[*nom+2]=14;
>          move_list[*nom+3]=q;move_list[*nom+4]=8;*nom=*nom+5;}
>          }/*end lr test*/
>
>         /*N move far right down*/
>          if(x>=9){/*frd test1*/
>          if(x!=7 && x!=15 && x!=23 && x!= 31 && x!=39 && x!=47 && x!=55
>           && x!=63){/*frd test2*/
>          if(board[x-6]=='.'){
>        move_list[*nom]=x;move_list[*nom+1]=x-6;move_list[*nom+2]=14;
>        move_list[*nom+3]=0;move_list[*nom+4]=0;*nom=*nom+5;}
>        q=adconvert(board, x-6, n);
>        if(q<10 && q>0){/*knight capture upper right*/
>         move_list[*nom]=x;move_list[*nom+1]=x-6;move_list[*nom+2]=14;
>         move_list[*nom+3]=q;move_list[*nom+4]=8;*nom=*nom+5;}
>         }/*end frd test2*/
>         }/*end frd test1*/
>
>         }/*end N moves upper right and lower right*/
>
>       if(x!=1 && x!=9 && x!=17 && x!=25 && x!=33 && x!=41 && x!=49 && x!=57){
>       /*N moves upper left*/
>        if(x<=48){/*ul test*/
>        if(board[x+15]=='.'){
>         move_list[*nom]=x;move_list[*nom+1]=x+15;move_list[*nom+2]=14;
>         move_list[*nom+3]=0;move_list[*nom+4]=0;*nom=*nom+5;}
>        q=adconvert(board, x+15, n);
>        if(q<10 && q>0){/*knight captures upper left*/
>         move_list[*nom]=x;move_list[*nom+1]=x+15;move_list[*nom+2]=14;
>         move_list[*nom+3]=q;move_list[*nom+4]=8;*nom=*nom+5;}
>         }/*end il test*/
>
>         /*far upper left*/
>         if(x<=56){/*ful test1*/
>         if(x!=2 && x!=10 && x!= 18 && x!= 26 && x!=34 && x!=42 && x!= 50 &&
>          x!=58){/*ful test2*/
>        if(board[x+6]=='.'){
>         move_list[*nom]=x;move_list[*nom+1]=x+6;move_list[*nom+2]=14;
>         move_list[*nom+3]=0;move_list[*nom+4]=0;*nom=*nom+5;}
>        q=adconvert(board, x+6, n);
>        if(q<10 && q>0){/*knight captures upper left*/
>         move_list[*nom]=x;move_list[*nom+1]=x+6;move_list[*nom+2]=14;
>         move_list[*nom+3]=q;move_list[*nom+4]=8;*nom=*nom+5;}
>         }/*end ful test1*/
>
>         }/*end ful test2*/
>
>         if(x>=17){/*ll test*/
>         if(board[x-17]=='.'){/*N moves lower left*/
>          move_list[*nom]=x;move_list[*nom+1]=x-17;move_list[*nom+2]=14;
>          move_list[*nom+3]=0;move_list[*nom+4]=0;*nom=*nom+5;}
>         q=adconvert(board,x-17,n);
>         if(q<10 && q>0){/*N captures lower left*/
>          move_list[*nom]=x;move_list[*nom+1]=x-17;move_list[*nom+2]=14;
>          move_list[*nom+3]=q;move_list[*nom+4]=8;*nom=*nom+5;}
>          }/*end ll test*/
>
>          /*lower far left */
>           if(x!=2 && x!=10 && x!=18 && x!=26 && x!=34 && x!=42 && x!=50 &&
>            x!=58){/*lfl test1*/
>            if(x>=9){/*lfl test2*/
>         if(board[x-10]=='.'){/*N moves lower left*/
>          move_list[*nom]=x;move_list[*nom+1]=x-10;move_list[*nom+2]=14;
>          move_list[*nom+3]=0;move_list[*nom+4]=0;*nom=*nom+5;}
>         q=adconvert(board,x-10,n);
>         if(q<10 && q>0){/*N captures lower far left*/
>          move_list[*nom]=x;move_list[*nom+1]=x-10;move_list[*nom+2]=14;
>          move_list[*nom+3]=q;move_list[*nom+4]=8;*nom=*nom+5;}
>          }/*end lfl test2*/
>          }/*end lfl test1*/
>
>          }/* end N moves upper and lower left*/
>
>      }/*end N moves****/
>
>      /********************bishop moves*********************/
>
>
>          if(board[x]=='b'){/*test for bishop*/
>      /*bishop moves upper right***/
>       for(n=1;n<8;n=n+1){
>        q=(x+n+(n*8));
>        if(q==9 || q==17 || q==25 || q==33 || q==41 || q==49 || q==57 ||
>        q==65){/*bishop cant go off board*/
>         n=8;break;}
>        if(q>64){/*b cant go off board*/
>         n=8;break;}
>         if(board[q]=='.'){/*bishop moves ur*/
>           move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=15;
>           move_list[*nom+3]=0;move_list[*nom+4]=0;*nom=*nom+5;}
>         z=adconvert(board, q, z);
>         if(z<10 && z>0){/*b captures ur*/
>          move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=15;
>          move_list[*nom+3]=z;move_list[*nom+4]=8;*nom=*nom+5;}
>         if(z!=0){/*bishop has captured or been blocked*/
>          n=8;break;}
>
>        }/*end b moves ur*/
>
>         /*bishop moves lower right**/
>         for(n=1;n<8;n=n+1){
>        q=(x+n-(n*8));
>        if(q==9 || q==17 || q==25 || q==33 || q==41 || q==49 || q==57 ||
>        q==65){/*bishop cant go off board*/
>         n=8;break;}
>        if(q<1){/*b cant go off board*/
>         n=8;break;}
>         if(board[q]=='.'){/*bishop moves lr*/
>           move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=15;
>           move_list[*nom+3]=0;move_list[*nom+4]=0;*nom=*nom+5;}
>         z=adconvert(board, q, z);
>         if(z<10 && z>0){/*b captures lr*/
>          move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=15;
>          move_list[*nom+3]=z;move_list[*nom+4]=8;*nom=*nom+5;}
>         if(z!=0){/*bishop has captured or been blocked*/
>          n=8;break;}
>
>        }/*end b moves lr*/
>
>         /*bishop moves upper left*/
>       for(n=1;n<8;n=n+1){
>        q=(x-n+(n*8));
>        if(q==16 || q==24 || q==32 || q==40 || q==48 || q==56 || q==64
>          ){/*bishop cant go off board*/
>         n=8;break;}
>        if(q>64){/*b cant go off board*/
>         n=8;break;}
>         if(board[q]=='.'){/*bishop moves ur*/
>           move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=15;
>           move_list[*nom+3]=0;move_list[*nom+4]=0;*nom=*nom+5;}
>         z=adconvert(board, q, z);
>         if(z<10 && z>0){/*b captures ur*/
>          move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=15;
>          move_list[*nom+3]=z;move_list[*nom+4]=8;*nom=*nom+5;}
>         if(z!=0){/*bishop has captured or been blocked*/
>          n=8;break;}
>
>        }/*end b moves ul*/
>
>         /*bishop moves lower left*/
>          for(n=1;n<8;n=n+1){
>        q=(x-n-(n*8));
>        if(q==16 || q==24 || q==32 || q==40 || q==48 || q==56 || q==64
>         || q==8){/*bishop cant go off board*/
>         n=8;break;}
>        if(q<1){/*b cant go off board*/
>         n=8;break;}
>         if(board[q]=='.'){/*bishop moves ur*/
>           move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=15;
>           move_list[*nom+3]=0;move_list[*nom+4]=0;*nom=*nom+5;}
>         z=adconvert(board, q, z);
>         if(z<10 && z>0){/*b captures ur*/
>          move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=15;
>          move_list[*nom+3]=z;move_list[*nom+4]=8;*nom=*nom+5;}
>         if(z!=0){/*bishop has captured or been blocked*/
>          n=8;break;}
>
>        }/*end b moves ll*/
>
>     }/*end bishop moves***/
>
>
>/*************queen moves*************/
>
>                  if(board[x]=='q'){/*test for bishop*/
>      /*bishop moves upper right***/
>       for(n=1;n<8;n=n+1){
>        q=(x+n+(n*8));
>        if(q==9 || q==17 || q==25 || q==33 || q==41 || q==49 || q==57 ||
>        q==65){/*bishop cant go off board*/
>         n=8;break;}
>        if(q>64){/*b cant go off board*/
>         n=8;break;}
>         if(board[q]=='.'){/*bishop moves ur*/
>           move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=12;
>           move_list[*nom+3]=0;move_list[*nom+4]=0;*nom=*nom+5;}
>         z=adconvert(board, q, z);
>         if(z<10 && z>0){/*b captures ur*/
>          move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=12;
>          move_list[*nom+3]=z;move_list[*nom+4]=8;*nom=*nom+5;}
>         if(z!=0){/*bishop has captured or been blocked*/
>          n=8;break;}
>
>        }/*end b moves ur*/
>
>         /*bishop moves lower right**/
>         for(n=1;n<8;n=n+1){
>        q=(x+n-(n*8));
>        if(q==9 || q==17 || q==25 || q==33 || q==41 || q==49 || q==57 ||
>        q==65){/*bishop cant go off board*/
>         n=8;break;}
>        if(q<1){/*b cant go off board*/
>         n=8;break;}
>         if(board[q]=='.'){/*bishop moves lr*/
>           move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=12;
>           move_list[*nom+3]=0;move_list[*nom+4]=0;*nom=*nom+5;}
>         z=adconvert(board, q, z);
>         if(z<10 && z>0){/*b captures lr*/
>          move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=12;
>          move_list[*nom+3]=z;move_list[*nom+4]=8;*nom=*nom+5;}
>         if(z!=0){/*bishop has captured or been blocked*/
>          n=8;break;}
>
>        }/*end b moves lr*/
>
>         /*bishop moves upper left*/
>       for(n=1;n<8;n=n+1){
>        q=(x-n+(n*8));
>        if(q==16 || q==24 || q==32 || q==40 || q==48 || q==56 || q==64
>          ){/*bishop cant go off board*/
>         n=8;break;}
>        if(q>64){/*b cant go off board*/
>         n=8;break;}
>         if(board[q]=='.'){/*bishop moves ur*/
>           move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=12;
>           move_list[*nom+3]=0;move_list[*nom+4]=0;*nom=*nom+5;}
>         z=adconvert(board, q, z);
>         if(z<10 && z>0){/*b captures ur*/
>          move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=12;
>          move_list[*nom+3]=z;move_list[*nom+4]=8;*nom=*nom+5;}
>         if(z!=0){/*bishop has captured or been blocked*/
>          n=8;break;}
>
>        }/*end b moves ul*/
>
>         /*bishop moves lower left*/
>          for(n=1;n<8;n=n+1){
>        q=(x-n-(n*8));
>        if(q==16 || q==24 || q==32 || q==40 || q==48 || q==56 || q==64
>         || q==8){/*bishop cant go off board*/
>         n=8;break;}
>        if(q<1){/*b cant go off board*/
>         n=8;break;}
>         if(board[q]=='.'){/*bishop moves ur*/
>           move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=12;
>           move_list[*nom+3]=0;move_list[*nom+4]=0;*nom=*nom+5;}
>         z=adconvert(board, q, z);
>         if(z<10 && z>0){/*b captures ur*/
>          move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=12;
>          move_list[*nom+3]=z;move_list[*nom+4]=8;*nom=*nom+5;}
>         if(z!=0){/*bishop has captured or been blocked*/
>          n=8;break;}
>
>        }/*end b moves ll*/
>
>       /******queen as rook*****/
>
>       for(n=1;n<8;n=n+1){/*rook going right*/
>         if(x+n==9 || x+n==17 || x+n==33 || x+n==41 || x+n==49 || x+n==57 ||
>         x+n==65 || x+n==25){n=8;break;}/*rook hits right side of board*/
>          if(board[x+n]=='.'){ /*rook moves*/
>           move_list[*nom]=x;
>           move_list[*nom+1]=x+n;
>           move_list[*nom+2]=12;
>           move_list[*nom+3]=0;
>           move_list[*nom+4]=0;
>           *nom=*nom+5;
>            }
>           q=adconvert(board, x+n, q);
>           if(q<10 && q>0){/*rook capture to right*/
>            move_list[*nom]=x; move_list[*nom+1]=x+n;
>            move_list[*nom+2]=12; move_list[*nom+3]=q;move_list[*nom+4]=8;
>            *nom=*nom+5;
>             }
>           if(q!=0){/*if rook has either captured or been blocked*/
>            n=8;}
>           }/*end rook going right*/
>
>
>            for(n=1;n<8;n=n+1){/*rook going left*****/
>             if(x-n==8 || x-n==16 || x-n==24 || x-n==32 || x-n==40
>             || x-n==48 || x-n==56 || x-n==64 || x==1){
>              n=8;break;}/*rook hits left side of board*/
>              if(board[x-n]=='.'){/*rook moves left*/
>               move_list[*nom]=x;move_list[*nom+1]=x-n;
>               move_list[*nom+2]=12;move_list[*nom+3]=0;move_list[*nom+4]=0;
>                *nom=*nom+5;}
>              q=adconvert(board, x-n, q);
>               if(q<10 && q>0){/*rook capture to left*/
>                move_list[*nom]=x;move_list[*nom+1]=x-n;move_list[*nom+2]=12;
>                move_list[*nom+3]=q;move_list[*nom+4]=8;*nom=*nom+5;}
>              if(q!=0){/*rook has either captured or blocked*/
>               n=8;}
>          }/*end rook going left*/
>
>
>             for(n=8;n<57;n=n+8){/* rook moves forward*/
>              if(x+n>64){/*rook hits front of board*/
>                n=57;break;}
>              if(board[x+n]=='.'){/*rook moves forward*/
>               move_list[*nom]=x;move_list[*nom+1]=x+n;move_list[*nom+2]=12;
>               move_list[*nom+3]=0;move_list[*nom+4]=0;*nom=*nom+5;}
>              q=adconvert(board, x+n, n);
>              if(q<10 && q>0){/*rook captures to front*/
>               move_list[*nom]=x;move_list[*nom+1]=x+n;move_list[*nom+2]=12;
>               move_list[*nom+3]=q;move_list[*nom+4]=8;*nom=*nom+5;}
>               if(q!=0){/*rook has either captured or blocked*/
>                n=57;}
>           }/*end rook moves forward*/
>          for(n=8;n<57;n=n+8){/*rook moves backward*/
>           if(x-n<1){/*rook hits back of board*/
>            n=57;break;}
>             if(board[x-n]=='.'){/*rookmoves backward*/
>              move_list[*nom]=x;move_list[*nom+1]=x-n;move_list[*nom+2]=12;
>              move_list[*nom+3]=0;move_list[*nom+4]=0l;*nom=*nom+5;}
>             q=adconvert(board, x-n, n);
>             if(q<10 && q>0){/*rook captures backwards*/
>              move_list[*nom]=x;move_list[*nom+1]=x-n;move_list[*nom+2]=12;
>              move_list[*nom+3]=q;move_list[*nom+4]=8;*nom=*nom+5;}
>              if(q!=0){/*rook has captured or stopped*/
>               n=57;break;}
>             }/*end rook moves backward*/
>
>     }/*end queen moves***/
>
>    /***king moves!!!:) ;)***/
>
>        if(board[x]=='k'){/**king moves**/
>         q=x+1;
>         if(q!=9 || q!=17 || q!=25 || q!=33 || q!=41 || q!=49 || q!=57 ||
>          q!=65){/*king moves right*/
>           if(board[q]=='.'){/* moves r*/
>            move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=11;
>            move_list[*nom+3]=0;move_list[*nom+4]=0;*nom=*nom+5;}
>           z=adconvert(board, q, n);
>           if(z<10 && z>0){/*king captures!!*/
>            move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=11;
>            move_list[*nom+3]=z;move_list[*nom+4]=8;*nom=*nom+5;}
>
>         /*king moves upper right*/
>          q=x+9;
>          if(q<65){
>           if(board[q]=='.'){/*k moves r*/
>            move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=11;
>            move_list[*nom+3]=0;move_list[*nom+4]=0;*nom=*nom+5;}
>           z=adconvert(board, q, n);
>           if(z<10 && z>0){/*king captures!!*/
>            move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=11;
>            move_list[*nom+3]=z;move_list[*nom+4]=8;*nom=*nom+5;}
>            }
>         /*king moves lower right*/
>          q=x-7;
>          if(q>7){
>           if(board[q]=='.'){/*k moves r*/
>            move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=11;
>            move_list[*nom+3]=0;move_list[*nom+4]=0;*nom=*nom+5;}
>           z=adconvert(board, q, n);
>           if(z<10 && z>0){/*king captures!!*/
>            move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=11;
>            move_list[*nom+3]=z;move_list[*nom+4]=8;*nom=*nom+5;}
>            }
>            }/*end king moves right*/
>
>           /**king moves left**/
>           q=x-1;
>          if(q!=8 && q!=16 && q!=24 && q!=32 && q!=40 && q!=48 && q!=56 &&
>           q!=64){/*king cant jump off board*/
>           if(board[q]=='.'){/*k moves l*/
>            move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=11;
>            move_list[*nom+3]=0;move_list[*nom+4]=0;*nom=*nom+5;}
>           z=adconvert(board, q, n);
>           if(z<10 && z>0){/*king captures!!*/
>            move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=11;
>            move_list[*nom+3]=z;move_list[*nom+4]=8;*nom=*nom+5;}
>
>             /*king moves upper left*/
>           q=x+7;
>           if(q<57){/*stay on board*/
>           if(board[q]=='.'){/*k moves ul*/
>            move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=11;
>            move_list[*nom+3]=0;move_list[*nom+4]=0;*nom=*nom+5;}
>           z=adconvert(board, q, n);
>           if(z<10 && z>0){/*king captures!!*/
>            move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=11;
>            move_list[*nom+3]=z;move_list[*nom+4]=8;*nom=*nom+5;}
>            }/*stay on board*/
>
>         /*king moves lower left**/
>           q=x-9;
>           if(q>1){/*stay on board*/
>           if(board[q]=='.'){/*k moves ll*/
>            move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=11;
>            move_list[*nom+3]=0;move_list[*nom+4]=0;*nom=*nom+5;}
>           z=adconvert(board, q, n);
>           if(z<10 && z>0){/*king captures!!*/
>            move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=11;
>            move_list[*nom+3]=z;move_list[*nom+4]=8;*nom=*nom+5;}
>            }/*stay on board*/
>            }/*end king moves left*/
>
>          /**king moves forward**/
>           q=x+8;
>           if(q<64){/*stay on board*/
>           if(board[q]=='.'){/*k moves ll*/
>            move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=11;
>            move_list[*nom+3]=0;move_list[*nom+4]=0;*nom=*nom+5;}
>           z=adconvert(board, q, n);
>           if(z<10 && z>0){/*king captures!!*/
>            move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=11;
>            move_list[*nom+3]=z;move_list[*nom+4]=8;*nom=*nom+5;}
>            }/*stay on board*/
>
>          /*king moves backward**/
>           q=x-8;
>           if(q>1){/*stay on board*/
>           if(board[q]=='.'){/*k moves ll*/
>            move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=11;
>            move_list[*nom+3]=0;move_list[*nom+4]=0;*nom=*nom+5;}
>           z=adconvert(board, q, n);
>           if(z<10 && z>0){/*king captures!!*/
>            move_list[*nom]=x;move_list[*nom+1]=q;move_list[*nom+2]=11;
>            move_list[*nom+3]=z;move_list[*nom+4]=8;*nom=*nom+5;}
>            }/*stay on board*/
>
>           /*king castles right**code=9 last_move[6]=5*/
>            if(x==61 && board[63]=='.' && board[62]=='.' && board[64]=='r'
>              && last_move[6]!=5 && (last_move[6]-10)!=5){
>            move_list[*nom]=x;move_list[*nom+1]=63;move_list[*nom+2]=11;
>            move_list[*nom+3]=13;move_list[*nom+4]=9;*nom=*nom+5;}
>
>           /*king castles left**last_move[6]=10*/
>            if(x==61 && board[60]=='.' && board[59]=='.' && board[58]=='.' &&
>             board[57]=='r' && last_move[6]!=10 && last_move[6]-5!=10){
>             move_list[*nom]=x;move_list[*nom+1]=58;move_list[*nom+2]=11;
>             move_list[*nom+3]=13;move_list[*nom+4]=9;*nom=*nom+5;}
>
>            }/*end king moves*/
>
>    }/*check 1 to 64 squares*/
>
>
>   }/*blacks turn*/
>
>   printf("nom %d %h\n",*nom,&nom);
>  return(0);
>}
>
>  adconvert(board,x, n)/*convert ascii board piece to integer code*/
>   int x, n;
>   char board[64];
>   {
>     n=0;
>     if(board[x]=='p')
>       n=16;
>     if(board[x]=='k')
>        n=11;
>     if(board[x]=='q')
>        n=12;
>     if(board[x]=='r')
>         n=13;
>     if(board[x]=='n')
>       n=14;
>     if(board[x]=='b')
>       n=15;
>
>     if(board[x]=='P')
>      n=6;
>     if(board[x]=='K')
>       n=1;
>     if(board[x]=='Q')
>       n=2;
>     if(board[x]=='R')
>       n=3;
>     if(board[x]=='N')
>       n=4;
>     if(board[x]=='B')
>        n=5;
>    return(n);
>   }



This page took 0 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.