Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package CC4PlayGround;
- import java.util.Objects;
- import java.util.Random;
- public class CC4Playground {
- /*Global Variables*/
- String[][] board;
- Boolean winner;
- Boolean draw;
- int winningPlayer;
- int playerTurn;
- /*Constructor*/
- public CC4Playground(){
- winningPlayer = 0;
- draw = false;
- playerTurn = 1;
- board = new String[6][7];
- newGameBoard();
- displayBoard();
- }
- /*provide a better look for the board*/
- private void newGameBoard(){
- for(int i = 0; i < board.length; i++){
- for(int j = 0; j < board[0].length; j++){
- board[i][j] = " - ";
- }
- }
- }
- private void displayBoard(){
- System.out.println(" ");
- System.out.println(" *** Connect 4 *** ");
- System.out.println(" ");
- System.out.println(" 0 1 2 3 4 5 6");
- for(int i = 0; i < board.length; i++){
- for(int j = 0; j < board[0].length; j++){
- if( board[i][j].length() == 1)
- System.out.print(" " + board[i][j]+ " ");
- else
- System.out.print(board[i][j]);
- }
- System.out.println();
- }
- System.out.println();
- }
- /*the column is full*/
- private boolean isColumnFull(int col){
- return getNextAvailableSlot(col) == -1;
- }
- /*return the next available row pos of a given column*/
- private int getNextAvailableSlot(int col){
- int rows = board.length;
- int cols = board[0].length;
- for(int pos = rows-1; pos >= 0; --pos) {
- if(board[pos][col] == " - " ){
- return pos;
- }
- }
- return -1;
- }
- /* swaps turn for current player */
- private void swapPlayerTurn(){
- if(playerTurn == 1){
- playerTurn = 2;
- } else {
- playerTurn = 1;
- }
- }
- private void placePiece(){
- switch(playerTurn){
- case 1:
- System.out.println("Player X " + playerTurn + " please select which col to place your piece (1-7)");
- String input = new java.util.Scanner(System.in).nextLine();
- int colChoice = Integer.parseInt(input) - 1;
- String pieceToPlace = "X";
- // todo ohne isColumnFull prüfen geht der Spiel unendlich
- if(!isColumnFull(colChoice))
- board[getNextAvailableSlot(colChoice)][colChoice] = pieceToPlace;
- displayBoard();
- //decideWinner();
- swapPlayerTurn();
- break;
- case 2:
- System.out.println("Player O " + playerTurn + " places the piece");
- Random rdm = new Random();
- colChoice = rdm.nextInt(6)+1;
- pieceToPlace = "O";
- if(!isColumnFull(colChoice))
- board[getNextAvailableSlot(colChoice)][colChoice] = pieceToPlace;
- displayBoard();
- swapPlayerTurn();
- break;
- default:
- System.out.println("no valid turn");
- break;
- //swapPlayerTurn();
- }
- //decideWinner();
- //decideWinner(board);
- }
- private final int MATCHES = 4;
- private boolean didWinleft(String player) {
- int rows = board.length;
- int cols = board[0].length;
- for(int i = 0; i < rows; i++){
- for(int j = 0; j <= cols-MATCHES; j++){
- if( board[i][j] == player)
- {
- boolean ab = board[i][j] == board[i][j+1];
- boolean cd = board[i][j+1] == board[i][j+2];
- boolean de = board[i][j+2] == board[i][j+3];
- if(ab && cd && de){
- return true;
- }
- }
- }
- }
- return false;
- }
- private boolean didWinup(String player) {
- int rows = board.length;
- int cols = board[0].length;
- for(int i = 0; i <= rows-MATCHES; i++){
- for(int j = 0; j < cols; j++){
- if( board[i][j] == player)
- {
- boolean ab = board[i][j] == board[i+1][j];
- boolean cd = board[i+1][j] == board[i+2][j];
- boolean de = board[i+2][j] == board[i+3][j];
- if(ab && cd && de){
- return true;
- }
- }
- }
- }
- return false;
- }
- private boolean didWinleftup(String player) {
- int rows = board.length;
- int cols = board[0].length;
- for(int i = 0; i <= rows-MATCHES; i++){
- for(int j = 0; j <= cols-MATCHES; j++){
- if( board[i][j] == player)
- {
- boolean ab = board[i][j] == board[i+1][j+1];
- boolean cd = board[i+1][j+1] == board[i+2][j+2];
- boolean de = board[i+2][j+2] == board[i+3][j+3];
- if(ab && cd && de){
- return true;
- }
- }
- }
- }
- return false;
- }
- private boolean didWinRightup(String player) {
- int rows = board.length;
- int cols = board[0].length;
- for(int i = rows-MATCHES; i >= 0; i--){
- for(int j = cols-MATCHES; j >= 0; j--){
- if( board[i][j] == player)
- {
- boolean ab = board[i][j] == board[i+1][j+1];
- boolean cd = board[i+1][j+1] == board[i+2][j+2];
- boolean de = board[i+2][j+2] == board[i+3][j+3];
- if(ab && cd && de){
- return true;
- }
- }
- }
- }
- return false;
- }
- public void playGame(){
- while(winningPlayer == 0){
- placePiece();
- String[] players = new String[]{"X", "O"};
- for(String player : players){
- boolean didWin = didWinRightup(player);
- didWin |= didWinleftup(player);
- didWin |= didWinup(player);
- didWin |= didWinleft(player);
- if(didWin){
- System.out.println("gewonnen " + player);
- }
- }
- }
- }
- public static void main(String[] args) {
- CC4Playground main = new CC4Playground();
- main.playGame();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment