Guest User

Untitled

a guest
May 8th, 2015
491
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.43 KB | None | 0 0
  1. #include <stdio.h>
  2. #define R 6 // Rows
  3. #define C 7 //coloumns
  4. void printBoard(char board[R][C]);
  5. void initializeBoard(char board[R][C]);
  6. int checkMove(char board[R][C], int col, char player,int steps[42], int count);
  7. int inRange(int col);
  8. void scanMove(int col);
  9. void printTurn(char player);
  10. int emptyPlace(char board[R][C], int col);
  11. void startGame(char board[R][C], int col, char player, int count);
  12. int lastMove(char board[R][C], int steps[42], int count);
  13. void Undo(char board[R][C], int steps[42],int i);
  14.  
  15.  
  16. int main()
  17. {
  18. int col=0, i=0;
  19. char board[R][C], player='o';
  20. int steps[42]={0};
  21.  
  22. initializeBoard(board);
  23. printBoard(board);
  24. while(1){
  25.  
  26. if(player=='o')
  27. {
  28. player='*';
  29. }
  30. else
  31. {
  32. player='o';
  33. }
  34. checkMove(board, col, player, steps, i);
  35. printf("\nsteps %d\n", steps[i]);
  36. i++;
  37. }
  38.  
  39. return 0;
  40.  
  41.  
  42. }
  43.  
  44. void undo(char board[R][C], int steps[42],int i)
  45. {
  46. if(i>0)
  47. {
  48. board[lastMove(board, steps, i)][steps[i]]=' ';
  49.  
  50. }
  51. }
  52.  
  53. /*last_turn = (last_turn == 'o')?('*'):('o')
  54. int vertical=1, horizontal=1, diagonal1=1, diagonal2=1, i,ii;
  55. char player=board[row][move-1];
  56. for(i = row;board[row][move-1] == player && i < 6;i++,vertical++); //Check down
  57. for(i = row;board[row][move-1] == player && i >= 0;i--,vertical++); //Check up
  58. if(vertical >= 4)return player;
  59.  
  60. for(ii = move;board[row][ii] == player && ii >= 0;ii--,horizontal++); //Check left
  61. for(ii = move;board[row][ii] == player && ii <= 6;ii++,horizontal++); //Check right
  62. if(horizontal >= 4) return player;
  63.  
  64. for(i = row, ii= move-1;board[i][ii] == player && i>=0 && ii >=0; diagonal1 ++, i --, ii --);//up and left
  65. for(i = row, ii = move-1;board[i][ii] == player && i<=5 && ii <=6;diagonal1 ++, i ++, ii ++);//down and right
  66. if(diagonal1 >= 4) return player;
  67.  
  68. check for diagonal 2(/)
  69. for(i = row, ii=move-1; board[i][ii] == player && i>=0 && ii <= 6; diagonal2 ++, i --, ii ++);//up and right
  70. for(i = row, ii=move-1; board[i][ii] == player && i<=5 && ii >=0; diagonal2 ++, i ++, ii --);//up and left
  71. if(diagonal2 >= 4) return player;
  72.  
  73. */
  74.  
  75. void allTogether(char board[R][C], int col, char player, int count, int steps[42])
  76. {
  77. count=-1;
  78. int valid=checkMove(board, col, player, steps, count);
  79. while(valid!=1)
  80. {
  81. scanf("%d", &col);
  82. checkMove(board, col, player, steps, count);
  83. }
  84. count++;
  85.  
  86.  
  87. }
  88.  
  89. int lastMove(char board[R][C], int steps[42], int count)
  90. {
  91. int laststep=0, i;
  92. for(i=0;i<R;i++)
  93. {
  94. if(board[i][steps[count]]!=' ')
  95. {
  96. laststep=i;
  97. return laststep;
  98. }
  99. }
  100. return laststep;
  101. }
  102.  
  103. int emptyPlace(char board[R][C], int col)
  104. {
  105. int row=-1;
  106. int i;
  107. for(i=0;i<R;i++)
  108. {
  109. if(board[i][col-1]==' ') row++;
  110. }
  111. return row;
  112. }
  113. int inRange(int col)
  114. {
  115. if(col>=1 && col<=7) return 1;
  116.  
  117.  
  118. return 0;
  119. }
  120.  
  121. int checkMove(char board[R][C], int col, char player,int steps[42], int i)
  122. {
  123. int range=0;
  124. printTurn(player);
  125. scanf("%d", &col);
  126. int row=emptyPlace(board, col);
  127. range= inRange(col);
  128. if(col==0)
  129. {
  130. undo(board, steps, i);
  131. printBoard(board);
  132. return 1;
  133. }
  134. if(row==-1)
  135. {
  136. printf("Invalid move. Column 3 is full.\nPlease try again:");
  137. return -2; // invalid
  138. }
  139. if(range==0)
  140. {
  141.  
  142. printf("Invalid move. Input move is out of range.\nPlease try again:");
  143. return 0; //invalid
  144.  
  145. }
  146. int cell=emptyPlace(board, col);
  147.  
  148. board[cell][col-1]=player;
  149. printf("%d\n",col);
  150. if(col!=0){
  151. steps[i]=col;
  152. i++;
  153. }
  154. printBoard(board);
  155. return 1; // valid move
  156.  
  157. }
  158.  
  159.  
  160. void scanMove(int col)
  161. {
  162. scanf("%d", &col);
  163. }
  164.  
  165. void initializeBoard(char board[R][C])
  166. {
  167. for(int i=0;i<R;i++)
  168. {
  169. for(int j=0;j<C;j++)
  170. {
  171. board[i][j]=' ';
  172. }
  173. }
  174. }
  175.  
  176. void printTurn(char player)
  177. {
  178. printf("\nPlayer %c, in which column would you like to place your token? (enter 0 to undo)\n", player);
  179. return;
  180. }
  181. void printBoard(char board[R][C])
  182. {
  183. for(int i=0;i<R;i++)
  184. {
  185. for(int j=0;j<C;j++)
  186. {
  187. printf("|%c",board[i][j]);
  188. }
  189. printf("|\n");
  190.  
  191. }
  192. printf("---------------\n");
  193. for(int i=1;i<C+1;i++)
  194. printf(" %d",i);
  195. }
Advertisement
Add Comment
Please, Sign In to add comment