Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Write a program for a game called \"connect four\" (in C++14) ***I\'m not sure h

ID: 3801755 • Letter: W

Question

Write a program for a game called "connect four" (in C++14)

***I'm not sure how to even begin writing this. Any help provided would be greatly appreciated!***

This program:

1. Lays out a Connect 4 board (6 high x 7 long) and assigns each space a number.

2. Allows each player to select a space to play, filling that space with either an ‘R’ or ‘B’ for Red or Black.

3. Uses a random number generator to determine which player goes first.

4. One additional unique component.

Program must include:
- Functions

- Array

- Loop

- Branching

- Random number generator

Assumptions:

- The player can only fill in from the bottom of the board and on top of other plays.

Creative Liberties:
- Symbols used for the board.

- Symbols used to indicate each player.

Explanation / Answer

#include<iostream>
#include<cstring>
#include<time.h>
#include<stdlib.h>
#include<stdio.h>

#define R 6
#define C 7

using namespace std;

void printBoard(char *board);
int takeTurn(char *board, int player, const char*);
int checkWin(char *board);
int checkFour(char *board, int, int, int, int);
int horizontalCheck(char *board);
int verticalCheck(char *board);
int diagonalCheck(char *board);

int main(int argc, char **argv)
{
   const char *options = "RB";
   char board[R*C];

   memset(board, ' ', R * C);


/* initialize random seed: */
srand (time(NULL));

int turn;

turn = rand() % 2;

   int done = 0;

   for(; turn < R * C && !done; turn++){
      printBoard(board);
      while(!takeTurn(board, turn % 2, options)){
         printBoard(board);
         puts("This Column full! Try another one. ");
      }
      done = checkWin(board);
   }
   printBoard(board);

   if(turn == R * C && !done){
      puts("It's a tie!");
   } else {
      turn--;
      printf("Player %d (%c) wins! ", turn % 2 + 1, options[turn % 2]);
   }

   return 0;

}

void printBoard(char *board){
   int row, col;

   system("clear");
   puts(" ---Welcome to Connect Four Game--- ");
   for(row = 0; row < R; row++){
      for(col = 0; col < C; col++){
         printf("| %c ", board[C * row + col]);
      }
      puts("|");
      puts("-----------------------------");

   }
   puts(" 1   2   3   4   5   6   7 ");

}

int takeTurn(char *board, int player, const char *options){
   int row, col = 0;
   printf("Player %d (%c): Enter place number: ", player + 1, options[player]);

   while(1){
      if(1 != scanf("%d", &col) || col < 1 || col > 7 ){
         while(getchar() != ' ');
         puts("Out of range! Try again.");
      } else {
         break;
      }
   }
   col--;

   for(row = R - 1; row >= 0; row--){
      if(board[C * row + col] == ' '){
         board[C * row + col] = options[player];
         return 1;
      }
   }
   return 0;

}
int checkWin(char *board){
    return (horizontalCheck(board) || verticalCheck(board) || diagonalCheck(board));

}
int checkFour(char *board, int a, int b, int c, int d){
    return (board[a] == board[b] && board[b] == board[c] && board[c] == board[d] && board[a] != ' ');

}
int horizontalCheck(char *board){
    int row, col, idx;
    const int WIDTH = 1;

    for(row = 0; row < R; row++){
       for(col = 0; col < C - 3; col++){
          idx = C * row + col;
          if(checkFour(board, idx, idx + WIDTH, idx + WIDTH * 2, idx + WIDTH * 3)){
             return 1;
          }
       }
    }
    return 0;

}
int verticalCheck(char *board){
    int row, col, idx;
    const int HEIGHT = 7;

    for(row = 0; row < R - 3; row++){
       for(col = 0; col < C; col++){
          idx = C * row + col;
          if(checkFour(board, idx, idx + HEIGHT, idx + HEIGHT * 2, idx + HEIGHT * 3)){
              return 1;
          }
       }
    }
    return 0;

}
int diagonalCheck(char *board){
   int row, col, idx, count = 0;
   const int DIAG_RGT = 6, DIAG_LFT = 8;

   for(row = 0; row < R - 3; row++){
      for(col = 0; col < C; col++){
         idx = C * row + col;
         if(count <= 3 && checkFour(board, idx, idx + DIAG_LFT, idx + DIAG_LFT * 2, idx + DIAG_LFT * 3) || count >= 3 && checkFour(board, idx, idx + DIAG_RGT, idx + DIAG_RGT * 2, idx + DIAG_RGT * 3)){
            return 1;
         }
         count++;
      }
      count = 0;
   }
   return 0;

}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote