|
02-02-2009, 12:33
|
|
|
|
חבר מתאריך: 10.10.06
הודעות: 64
|
|
אוקיי קבלו ביטול, הסתדרתי עם הסעיף הזה
נשאר סעיף אחרון שקשור לשניים שבאו לפניו:
[התמונה הבאה מגיעה מקישור שלא מתחיל ב https ולכן לא הוטמעה בדף כדי לשמור על https תקין: http://www.zix.co.il/images/z-1300922876.JPG]
והתכנית הכתובה:
קוד PHP:
#include <stdio.h>
/*Q2 Part A: get_Color()*/ char get_Color (char board[10][10], int row, int col) { char contain; if (board[row][col] =='@') {contain='B';} else if (board[row][col] =='O') {contain='W';} else {contain='N';} return contain; } /*Q2 Part B: check_Move()*/ int check_Move (char board[10][10], int row, int col, char dir, char move) { if (get_Color (board,row,col) == 'B') { if (dir =='R') { if (move == 'M') { if (get_Color (board,row+1,col+1) == 'N' ) { return 1 ; } else return 0 ; } else if (move == 'J') { if ((get_Color (board,row+1,col+1) == 'W') && (get_Color (board,row+2,col+2) == 'N')) { return 1 ;} else return 0 ; } } if (dir == 'L') { if (move == 'M') { if (get_Color (board,row+1,col-1) == 'N') { return 1 ; } else return 0 ; } else if (move == 'J') { if ((get_Color (board,row+1,col-1) == 'W') && (get_Color (board,row+2,col-2) == 'N')) { return 1 ; } else return 0 ; } } } /*If the piece is white (white pieces move upwards on the board)*/ else if (get_Color (board,row,col) == 'W') { if (dir =='R') { if (move == 'M') { if (get_Color (board,row-1,col+1) == 'N' ) { return 1 ; } else return 0 ; } else if (move = 'J') { if ((get_Color (board,row-1,col+1) == 'B') && (get_Color (board,row-2,col+2) == 'N')) { return 1 ; } else return 0 ; } } if (dir =='L') { if (move == 'M') { if (get_Color (board,row-1,col-1) == 'N') { return 1 ; } else return 0 ; } else if (move == 'J') { if ((get_Color (board,row-1,col-1) == 'B') && (get_Color (board,row-2,col-2) == 'N')) { return 1 ; } else return 0 ; } } } else return 0 ; }
/*print_Board_Score - function prints score and current picture of game board. DO NOT EDIT*/ void print_Board_Score(char board[10][10]) { int i,j,b,w; i=j=b=w=0; printf("\n "); for(i=0;i<10;i++) printf("%d",i); printf("\n"); for(i=0;i<10;i++) { printf("%d",i); for(j=0;j<10;j++) { printf("%c",board[i][j]); if(board[i][j]=='@') b++; else if(board[i][j]=='O') w++; } printf("\n"); } printf("Score:\nBlack - %d\nWhite - %d\n\n",b,w); } /*Q2 Part C: make_Move()*/ void make_Move (char board[10][10]) { int r; /*row*/ int c; /*col*/ char d; /*direction*/ char m; /*move*/ /*char i="Invalid selection!";*/ /*print initial board state and get input*/ print_Board_Score(board) ; printf ("Enter location of piece to move:\n"); scanf ("%d %d", &r , &c ); printf ("\nEnter direction and move:\n"); scanf ("%c%c", &d , &m ); /*black piece case*/ if (get_Color (board,r,c) == 'B') { if (d == 'R') { if (m == 'M') { if (check_Move (board,r,c,d,m) == 1 ) { /*if move is ok*/ board[r][c] = ' ' ; board[r+1][c+1] = '@' ; } else printf("Invalid selection!\n") ; } else if ( m == 'J') { if (check_Move (board,r,c,d,m) == 1 ) { /*if move is ok*/ board[r][c] = ' ' ; board[r+1][c+1] = ' ' ; board[r+2][c+2] = '@' ; } else printf("Invalid selection!\n") ;} else printf("Invalid selection!\n") ; } else if (d == 'L') { if (m == 'M') { if (check_Move (board,r,c,d,m) == 1 ) { /*if move is ok*/ board[r][c] = ' ' ; board[r+1][c-1] = '@' ; } else printf("Invalid selection!\n") ;} else if ( m == 'J') { if (check_Move (board,r,c,d,m) == 1 ) { /*if move is ok*/ board[r][c] = ' ' ; board[r+1][c-1] = ' ' ; board[r+2][c-2] = '@' ; } else printf("Invalid selection!\n") ; } else printf("Invalid selection!\n") ; } else printf("Invalid selection!\n") ; } /*white piece case*/ if (get_Color(board,r,c) == 'W') { if (d == 'R') { if (m == 'M') { if (check_Move (board,r,c,d,m) == 1 ) { /*if move is ok*/ board[r][c] = ' ' ; board[r-1][c+1] = 'O' ; } else printf("Invalid selection!\n") ; } else if ( m == 'J') { if (check_Move (board,r,c,d,m) == 1 ) { /*if move is ok*/ board[r][c] = ' ' ; board[r-1][c+1] = ' ' ; board[r-2][c+2] = 'O' ; } else printf("Invalid selection!\n") ;} else printf("Invalid selection!\n") ; } else if (d == 'L') { if (m == 'M') { if (check_Move (board,r,c,d,m) == 1 ) { /*if move is ok*/ board[r][c] = ' ' ; board[r-1][c-1] = 'O' ; } else printf("Invalid selection!\n") ;} else if ( m == 'J') { if (check_Move (board,r,c,d,m) == 1 ) { /*if move is ok*/ board[r][c] = ' ' ; board[r-1][c-1] = ' ' ; board[r-2][c-2] = 'O' ; } else printf("Invalid selection!\n") ; } else printf("Invalid selection!\n") ; } else printf("Invalid selection!\n") ; } if (get_Color(board,r,c) == 'N') { printf("Invalid selection!\n") ; } print_Board_Score(board) ;
} /*MAIN function -- does not need any changes */ void main() { int i,j; char board[10][10]; /*fill board matrix empty squares*/ for(i=0;i<10;i++) { for(j=0;j<10;j++) { board[i][j] = (i+j)%2==0 ? 219 : 32; } } /*place some pieces on the board*/ board[3][2]=board[4][1]='@';board[4][3]=board[4][5]=board[3][0]=board[5][0]='O'; /*Q2A*/ printf("%c\n",get_Color(board,3,2)); printf("%c\n",get_Color(board,1,0)); printf("%c\n",get_Color(board,4,3)); printf("%c\n",get_Color(board,-1,2)); /*Q2B*/ printf("%d\n",check_Move(board,3,0,'R','M')); /*legal move*/ printf("%d\n",check_Move(board,5,0,'R','J')); /*illegal jump*/ printf("%d\n",check_Move(board,4,1,'L','M')); /*illegal move*/ printf("%d\n",check_Move(board,3,2,'L','J')); /*illegal jump*/ printf("%d\n",check_Move(board,3,2,'R','J')); /*legal jump*/ printf("%d\n",check_Move(board,4,5,'R','J')); /*illegal jump*/ /*Q2C*/ for(i=0; i<6; i++) make_Move(board); getch() ; }
כאשר PART C הוא זה הבעייתי. ניסיתי לשנות מיקום של חייל לפי ההצבות של הכלים בפונקצית המיין אבל משום מה זה כותב שהמהלך הוא בלתי חוקי. מה התפקשש לי בדרך?
|
|