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

I have to create an undo and redo function in a connect four game utilizing doub

ID: 645004 • Letter: I

Question

I have to create an undo and redo function in a connect four game utilizing doubly linked lists. Right now I'm working on storing the board into my struct and doing a previous function. This is what I have but keep getting the error (Array type 'char **[6][7]' is not assignable) at tail->move=board;

This is my code:

typedef struct cell *LIST;

struct cell {

char **move[6][7];

LIST prev;

LIST next;

  

};

bool NewMove (char board)

{

  

LIST tail;

tail->move=board;

LIST temp=new cell;

tail->next=temp;

temp->prev=tail;

tail=tail->next;

temp->next=NULL;

return true;

}

Explanation / Answer

Program:

import javax.swing.JOptionPane;

public class ConnectFourGame {

private int[][] board;
//private GameStatus status;;
private int player, bSize;

public ConnectFourGame () {
//status = GameStatus.InProgress;

Object[] possibilities = {"4", "5", "6", "7", "8", "9", "10",
"11", "12", "13", "14", "15", "16", "17", "18", "19"};

String s = (String)JOptionPane.showInputDialog(null,
"Choose Board Size:", "Sizes", JOptionPane.PLAIN_MESSAGE,
null, possibilities, "10");

if(s == null || (s != null && ("".equals(s)))){
s = "10";
}

bSize = Integer.parseInt(s);

Object[] playerSelect = {"1", "2"};
String s2 = (String)JOptionPane.showInputDialog(null,
"Choose Player to Start", "Start", JOptionPane.PLAIN_MESSAGE,
null, playerSelect, "1");

if(s2 == null || (s2 != null && ("".equals(s)))){
s2 = "1";
}

player = Integer.parseInt(s2);

board = new int[bSize][bSize];
reset();
}

public int getSize(){
return bSize;
}

public void reset(){
for (int r = 0; r < bSize; r++)
for (int c = 0; c < bSize; c++)
board[r][c] = -1;
}
public int selectCol (int pCol) {

for (int r = bSize - 1; r >= 0; r--)
if (board[r][pCol] == -1){
board[r][pCol] = player;
return r;
}

return -1;
}

public int nextPlayer() {

if (player == 1)
player = 2;
else
player = 1;

return player;
}

public int getCurrentPlayer () {
return player;
}

public GameStatus isWinner() {
int count = 0;
for (int r = 0; r < bSize; r++)
for (int c = 0; c < bSize - 3; c++)
if ((board[r][c] == 1) && (board[r][c + 1] == 1) &&
(board[r][c + 2] == 1) && (board[r][c + 3] == 1)){
return GameStatus.Player1WON;
}

for (int r = 0; r < bSize; r++)
for (int c = 0; c < bSize - 3; c++)
if ((board[r][c] == 2) && (board[r][c + 1] == 2) &&
(board[r][c + 2] == 2) && (board[r][c + 3] == 2)){
return GameStatus.Player2WON;
}

for (int c = 0; c < bSize; c++)
for (int r = 0; r < (bSize - 3); r++)
if ((board[r][c] == 1) && (board[r + 1][c] == 1) &&
(board[r + 2][c] == 1) && (board[r + 3][c] == 1)){
return GameStatus.Player1WON;
}   
for (int c = 0; c < bSize; c++)
for (int r = 0; r < (bSize - 3); r++)
if ((board[r][c] == 2) && (board[r + 1][c] == 2) &&
(board[r + 2][c] == 2) && (board[r + 3][c] == 2)){
return GameStatus.Player2WON;
}

for (int r = 0; r < bSize - 3; r++)
for (int c = 0; c < bSize - 3; c++)
if ((board[r][c] == 1) && (board[r+1][c + 1] == 1) &&
(board[r+2][c + 2] == 1) && (board[r+3][c + 3] == 1)){
return GameStatus.Player1WON;
}   

for (int r = bSize - 1; r >= 3; r--)
for (int c = 0; c < bSize - 3; c++)
if ((board[r][c] == 1) && (board[r-1][c + 1] == 1) &&
(board[r-2][c + 2] == 1) && (board[r-3][c + 3] == 1)){
return GameStatus.Player1WON;
}

for (int r = 0; r < bSize - 3; r++)
for (int c = 0; c < bSize - 3; c++)
if ((board[r][c] == 2) && (board[r+1][c + 1] == 2) &&
(board[r+2][c + 2] == 2) && (board[r+3][c + 3] == 2)){
return GameStatus.Player2WON;
}

for (int r = bSize - 1; r >= 3; r--)
for (int c = 0; c < bSize - 3; c++)
if ((board[r][c] == 2) && (board[r-1][c + 1] == 2) &&
(board[r-2][c + 2] == 2) && (board[r-3][c + 3] == 2)){
return GameStatus.Player2WON;
}

for (int r = 0; r < bSize; r++)
for (int c = 0; c < bSize; c++)
if(board[r][c] != -1)
count ++;
if(count == (bSize)*(bSize))
return GameStatus.Cats;

return GameStatus.InProgress;
}

public int [][] getBoard() {
return board;
}

public void undo(){

}

}