Python 3.6 (Project) Connect four Game (using GUI): Connect four is a two-player
ID: 3848476 • Letter: P
Question
Python 3.6 (Project)
Connect four Game (using GUI): Connect four is a two-player board game in which the players alternately drop colored disks into a seven-column, six-row vertically suspended grid, as shown below. The objective of the game is to connect four same-colored disks in a row, a column, or a diagonal before your opponent can do likewise. In the preceding figure, the red disk is shown in a dark color and the yellow in a light color. Whenever a disk is placed, the program redisplays the board on the console and determines the status of the game (win, draw, or continue). To place a disk, the player needs to click an available cell. An available cell is unoccupied and its downward neighbor is occupied. The program flashes the four winning cells if a player wins and reports no winners if all cells are occupied with no winners.Explanation / Answer
import java.util.*; public class ConnectFourGame { public static boolean putDisk(char[][] field, int column, char color) { if (field[0][column] != ' ') return false; for (int row = 0; row < 7; ++row) { if (field[row][column] != ' ') { field[row-1][column] = color; return true; } } field[6][column] = color; return true; } private static char getWinnerInRows(char[][] field) { for (int row = 0; row < 7; ++row) { int count = 0; for (int column = 1; column < 7; ++column) { if (field[row][column] != ' ' && field[row][column] == field[row][column-1]) ++count; else count = 1; if (count >= 4) { return field[row][column]; } } } return ' '; } private static char getWinnerInColumns(char[][] field) { for (int column = 0; column < 7; ++column) { int count = 0; for (int row = 1; row < 7; ++row) { if (field[row][column] != ' ' && field[row][column] == field[row-1][column]) ++count; else count = 1; if (count >= 4) { return field[row][column]; } } } return ' '; } private static char getWinnerInDiagonals(char[][] field) { for (int column = 0; column < 7; ++column) { int count = 0; for (int row = 1; row < 7; ++row) { if (column + row >= 7) break; if (field[row][column+row] != ' ' && field[row-1][column + row - 1] == field[row][column+row]) ++count; else count = 1; if (count >= 4) return field[row][column+row]; } } for (int row = 0; row < 7; ++row) { int count = 0; for (int column = 1; column < 7; ++column) { if (column + row >= 7) break; if (field[row + column][column] != ' ' && field[row+column - 1][column - 1] == field[row + column][column]) ++count; else count = 1; if (count >= 4) return field[row + column][column]; } } for (int column = 0; column < 7; ++column) { int count = 0; for (int row = 1; row < 7; ++row) { if (column - row < 0) break; if (field[row][column-row] != ' ' && field[row - 1][column - row + 1] == field[row][column-row]) ++count; else count = 1; if (count >= 4) return field[row][column-row]; } } for (int row = 0; row < 7; ++row) { int count = 0; for (int column = 5; column >= 0; --column) { if (column - row < 0) break; if (field[column - row][column] != ' ' && field[column - row - 1][column + 1] == field[column - row][column]) ++count; else count = 1; if (count >= 4) return field[column - row][column]; } } return ' '; } public static char getWinner(char[][] field) { char winner = getWinnerInRows(field); if (winner != ' ') return winner; winner = getWinnerInColumns(field); if (winner != ' ') return winner; winner = getWinnerInDiagonals(field); if (winner != ' ') return winner; for (int i = 0; iRelated Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.