Advertisement
Guest User

Untitled

a guest
May 6th, 2015
258
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.85 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdbool.h>
  3. #define ROWS 6
  4. #define COLS 7
  5. // start it with startGame function
  6. void initializeBoard(char board[ROWS][COLS]);
  7. void printBoard(char board[ROWS][COLS]);
  8. void startGame();
  9. bool checkWin(int a, int b, char board[ROWS][COLS]);
  10. int drop(int b, char player, char board[ROWS][COLS]);
  11.  
  12.  
  13. int main()
  14. {
  15. int hold,error=0, hold2=0, charsPlaced=0;
  16. bool gamewon=false;
  17. char player='*';
  18. char board[ROWS][COLS];
  19. initializeBoard(board);
  20. startGame();
  21. printBoard(board);
  22. while(!gamewon)
  23. {
  24. if(hold2 !=-1)
  25. {
  26. if(player=='*')
  27. {
  28. printf("player 1 drop where?\n");
  29. player='o';
  30. }
  31. else
  32. {
  33. printf("player 2 drop where?\n");
  34. player='*';
  35. }
  36. }
  37.  
  38. while(true)
  39. {
  40. if(charsPlaced==42) break; //draw
  41. scanf("%d", &hold);
  42. if(scanf("%d", &hold)<1)
  43. {
  44. error=1;
  45. printf("doomed\n"); // doomed
  46. }
  47. hold--; // we take 1
  48. if(hold<=6 && hold>=0) break;
  49. else printf("please enter a valid value motherfuckeer\n");
  50.  
  51. }
  52.  
  53. if(charsPlaced==42) break; //draw
  54. hold2 = drop(hold,player, board[ROWS][COLS]);
  55. if(hold2==-2) printf(" FULL please choose another\n");
  56. else if(hold2==-1) printf("PLease enter a valid range\n");
  57. else
  58. {
  59. gamewon= checkWin(hold2, hold, board[ROWS][COLS]);
  60. charsPlaced++;
  61. }
  62. printBoard(board[ROWS][COLS]);
  63.  
  64. }
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71. return 0;
  72. }
  73.  
  74. bool checkWin(int a, int b,char board[ROWS][COLS])
  75. {
  76. int vertical=1, horizontal=1, diagonal1=1, diagonal2=1, i,ii;
  77. char player=board[a][b];
  78. for(i = a;board[i][b] == player && i <= 5;i++,vertical++); //Check down
  79. for(i = a;board[i][b] == player && i >= 0;i--,vertical++); //Check up
  80. if(vertical >= 4)return true;
  81.  
  82. for(ii = b;board[a][ii] == player && ii >= 0;ii--,horizontal++); //Check left
  83. for(ii = b;board[a][ii] == player && ii <= 6;ii++,horizontal++); //Check right
  84. if(horizontal >= 4) return true;
  85.  
  86. for(i = a, ii= b;board[i][ii] == player && i>=0 && ii >=0; diagonal1 ++, i --, ii --);//up and left
  87. for(i = a, ii = b;board[i][ii] == player && i<=5 && ii <=6;diagonal1 ++, i ++, ii ++);//down and right
  88. if(diagonal1 >= 4) return true;
  89.  
  90. //check for diagonal 2(/)
  91. for(i = a, ii=b; board[i][ii] == player && i>=0 && ii <= 6; diagonal2 ++, i --, ii ++);//up and right
  92. for(i = a, ii=b; board[i][ii] == player && i<=5 && ii >=0; diagonal2 ++, i ++, ii --);//up and left
  93. if(diagonal2 >= 4) return true;
  94.  
  95. return false;
  96.  
  97. }
  98.  
  99. int drop(int b, char player, char board[ROWS][COLS])
  100. {
  101. if(b>=1 && b<=7)
  102. {
  103. if(board[0][b]==' ')
  104. {
  105. int i;
  106. for(i=0;board[i][b-1]==' ';i++)
  107. if(i==5)
  108. {
  109. board[i][b-1]=player;
  110. return i;
  111. }
  112. i--;
  113. board[i][b-1]=player;
  114. return i;
  115.  
  116. }
  117. else return -2; // full
  118. }
  119. else return -1; // not valid
  120. }
  121.  
  122.  
  123. void startGame()
  124. {
  125. printf("Welcome to Connect-4!\n");
  126.  
  127.  
  128. }
  129.  
  130.  
  131. void initializeBoard(char board[ROWS][COLS])
  132. {
  133. for(int i=0;i<ROWS;i++)
  134. {
  135. for(int j=0;j<COLS;j++)
  136. {
  137. board[i][j]=' ';
  138. }
  139. }
  140. }
  141. void printBoard(char board[ROWS][COLS])
  142. {
  143. for(int i=0;i<ROWS;i++)
  144. {
  145. for(int j=0;j<COLS;j++)
  146. {
  147. printf("|%c",board[i][j]);
  148. }
  149. printf("|\n");
  150.  
  151. }
  152. printf("---------------\n");
  153. for(int i=1;i<COLS+1;i++)
  154. printf(" %d",i);
  155. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement