Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdbool.h>
- #define ROWS 6
- #define COLS 7
- // start it with startGame function
- void initializeBoard(char board[ROWS][COLS]);
- void printBoard(char board[ROWS][COLS]);
- void startGame();
- bool checkWin(int a, int b, char board[ROWS][COLS]);
- int drop(int b, char player, char board[ROWS][COLS]);
- int main()
- {
- int hold,error=0, hold2=0, charsPlaced=0;
- bool gamewon=false;
- char player='*';
- char board[ROWS][COLS];
- initializeBoard(board);
- startGame();
- printBoard(board);
- while(!gamewon)
- {
- if(hold2 !=-1)
- {
- if(player=='*')
- {
- printf("player 1 drop where?\n");
- player='o';
- }
- else
- {
- printf("player 2 drop where?\n");
- player='*';
- }
- }
- while(true)
- {
- if(charsPlaced==42) break; //draw
- scanf("%d", &hold);
- if(scanf("%d", &hold)<1)
- {
- error=1;
- printf("doomed\n"); // doomed
- }
- hold--; // we take 1
- if(hold<=6 && hold>=0) break;
- else printf("please enter a valid value motherfuckeer\n");
- }
- if(charsPlaced==42) break; //draw
- hold2 = drop(hold,player, board[ROWS][COLS]);
- if(hold2==-2) printf(" FULL please choose another\n");
- else if(hold2==-1) printf("PLease enter a valid range\n");
- else
- {
- gamewon= checkWin(hold2, hold, board[ROWS][COLS]);
- charsPlaced++;
- }
- printBoard(board[ROWS][COLS]);
- }
- return 0;
- }
- bool checkWin(int a, int b,char board[ROWS][COLS])
- {
- int vertical=1, horizontal=1, diagonal1=1, diagonal2=1, i,ii;
- char player=board[a][b];
- for(i = a;board[i][b] == player && i <= 5;i++,vertical++); //Check down
- for(i = a;board[i][b] == player && i >= 0;i--,vertical++); //Check up
- if(vertical >= 4)return true;
- for(ii = b;board[a][ii] == player && ii >= 0;ii--,horizontal++); //Check left
- for(ii = b;board[a][ii] == player && ii <= 6;ii++,horizontal++); //Check right
- if(horizontal >= 4) return true;
- for(i = a, ii= b;board[i][ii] == player && i>=0 && ii >=0; diagonal1 ++, i --, ii --);//up and left
- for(i = a, ii = b;board[i][ii] == player && i<=5 && ii <=6;diagonal1 ++, i ++, ii ++);//down and right
- if(diagonal1 >= 4) return true;
- //check for diagonal 2(/)
- for(i = a, ii=b; board[i][ii] == player && i>=0 && ii <= 6; diagonal2 ++, i --, ii ++);//up and right
- for(i = a, ii=b; board[i][ii] == player && i<=5 && ii >=0; diagonal2 ++, i ++, ii --);//up and left
- if(diagonal2 >= 4) return true;
- return false;
- }
- int drop(int b, char player, char board[ROWS][COLS])
- {
- if(b>=1 && b<=7)
- {
- if(board[0][b]==' ')
- {
- int i;
- for(i=0;board[i][b-1]==' ';i++)
- if(i==5)
- {
- board[i][b-1]=player;
- return i;
- }
- i--;
- board[i][b-1]=player;
- return i;
- }
- else return -2; // full
- }
- else return -1; // not valid
- }
- void startGame()
- {
- printf("Welcome to Connect-4!\n");
- }
- void initializeBoard(char board[ROWS][COLS])
- {
- for(int i=0;i<ROWS;i++)
- {
- for(int j=0;j<COLS;j++)
- {
- board[i][j]=' ';
- }
- }
- }
- void printBoard(char board[ROWS][COLS])
- {
- for(int i=0;i<ROWS;i++)
- {
- for(int j=0;j<COLS;j++)
- {
- printf("|%c",board[i][j]);
- }
- printf("|\n");
- }
- printf("---------------\n");
- for(int i=1;i<COLS+1;i++)
- printf(" %d",i);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement