0% found this document useful (0 votes)
3 views

import java.util.HashMap;

Uploaded by

raneemmahmoud333
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views

import java.util.HashMap;

Uploaded by

raneemmahmoud333
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 9

import java.util.

HashMap;
import java.util.Map;

public class Actions extends Board{

char Empty ='.';


char Wall = '#';

public Actions(Board board) {


super(board.rows, board.cols);
this.board = board.board;
}

public void moveUp() {

for(int i=rows-1 ; i>0; i--){


for(int j=0 ;j<cols; j++) {
if ( board[i][j]!=(Wall) && board[i][j]!=(Empty) && board[i -
1][j]==(Empty)){
board[i-1][j] = board[i][j];
board[i][j] = Empty;
} else if (board[i][j]!=(Wall) && board[i][j]!=(Empty) &&
board[i - 1][j]!=(Empty) && board[i - 1][j]!=(Wall) && board[i - 1][j]!=(board[i]
[j])) {
int k = i;
while (k + 1 < rows && board[k - 1][j]==(Empty)) {
board[k - 1][j] = board[k][j];
board[k][j] = Empty;
k++;
}
while (k - 1 >=0 && board[k - 1][j]==(Empty)) {
board[k - 1][j] = board[k][j];
board[k][j] = Empty;
k--;
}

} else if(board[i][j]!=(Wall) && board[i][j]!=(Empty) &&


board[i - 1][j]!=(Empty) && board[i - 1][j]!=(Wall) && board[i - 1][j]==(board[i]
[j])){
board[i - 1][j] = board[i][j];
board[i][j] = Empty;

int k = i;
while (k + 1 < rows && board[k - 1][j]==(board[k][j])) {
board[k - 1][j] = board[k][j];
board[k][j] = Empty;
k++;
}
while (k - 1 >=0 && board[k - 1][j]==(board[k][j])) {
board[k - 1][j] = board[k][j];
board[k][j] = Empty;
k--;
}
}
}
}
System.out.println("Moving up");
printBoard();
isWin();
}

public void moveDown() {


for(int i=0 ; i<rows-1 ; i++){
for(int j=0 ;j<cols; j++){
if (board[i][j]!=(Wall) && board[i][j]!=(Empty) && board[i + 1]
[j]==(Empty)){
board[i+1][j] = board[i][j];
board[i][j] = Empty;

} else if (board[i][j]!=(Wall) && board[i][j]!=(Empty) &&


board[i + 1][j]!=(Empty) && board[i + 1][j]!=(Wall) && board[i + 1][j]!=(board[i]
[j])) {
int k = i;
while (k + 1 < rows && board[k + 1][j]==(Empty)) {
board[k + 1][j] = board[k][j];
board[k][j] = Empty;
k++;
}
while (k - 1 >=0 && board[k+1][j]==(Empty)) {
board[k + 1][j] = board[k][j];
board[k][j] = Empty;
k--;
}

} else if(board[i][j]!=(Wall) && board[i][j]!=(Empty) &&


board[i + 1][j]!=(Empty) && board[i + 1][j]!=(Wall) && board[i + 1][j]==(board[i]
[j])){
board[i + 1][j] = board[i][j];
board[i][j] = Empty;

int k = i;
while (k + 1 < rows && board[k + 1][j]==(board[k][j])) {
board[k + 1][j] = board[k][j];
board[k][j] = Empty;
k++;
}
while (k - 1 >=0 && board[k+1][j]==(board[k][j])) {
board[k + 1][j] = board[k][j];
board[k][j] = Empty;
k--;
}

}
}
}

System.out.println("Moving down");
printBoard();
isWin();

public void moveLeft() {


for (int i = 0; i < rows; i++) {
for (int j = cols -1; j > 0; j--) {
if (board[i][j]!=(Wall) && board[i][j]!=(Empty) && board[i ][j-
1]==(Empty)){
board[i][j- 1] = board[i][j];
board[i][j] = Empty;

} else if (board[i][j]!=(Wall) && board[i][j]!=(Empty) &&


board[i][j-1]!=(Empty) && board[i ][j-1]!=(Wall) && board[i][j - 1]!=(board[i][j]))
{
int k = j;
while (k + 1 < cols && board[i][k - 1]==(Empty)) {
board[i][k - 1] = board[i][k];
board[i][k] = Empty;
k++;
}
while (k - 1 >=0 && board[i][k - 1]==(Empty)) {
board[i][k - 1] = board[i][k];
board[i][k] = Empty;
k--;
}

} else if(board[i][j]!=(Wall) && board[i][j]!=(Empty) &&


board[i][j - 1]!=(Empty) && board[i][j- 1]!=(Wall) && board[i][j- 1]==(board[i]
[j])){
int k = j;
while (k + 1 < cols && board[i][k - 1]==(board[i][k])) {
board[i][k - 1] = board[i][k];
board[i][k] = Empty;
k++;
}
while (k - 1 >=0 && board[i][k - 1]==(board[i][k])) {
board[i][k - 1] = board[i][k];
board[i][k] = Empty;
k--;
}

}
}
}

System.out.println("Moving left");
printBoard();
isWin();
}

public void moveRight() {


for(int i=0 ; i<rows ; i++) {
for(int j=0 ;j<cols-1; j++){
if (board[i][j]!=(Wall) && board[i][j]!=(Empty) && board[i ][j+
1]==(Empty)){
board[i][j+ 1] = board[i][j];
board[i][j] = Empty;

} else if (board[i][j]!=(Wall) && board[i][j]!=(Empty) &&


board[i][j+1]!=(Empty) && board[i ][j+1]!=(Wall) && board[i][j + 1]!=(board[i][j]))
{
int k = j;
while (k + 1 < cols && board[i][k + 1]==(Empty)) {
board[i][k + 1] = board[i][k];
board[i][k] = Empty;
k++;
}
while (k - 1 >= 0 && board[i][k + 1]==(Empty)) {
board[i][k + 1] = board[i][k];
board[i][k] = Empty;
k--;
}

} else if(board[i][j]!=(Wall) && board[i][j]!=(Empty) &&


board[i][j + 1]!=(Empty) && board[i][j+ 1]!=(Wall) && board[i][j+ 1]==(board[i]
[j])){
int k = j;
while (k + 1 < cols && board[i][k + 1]==(board[i][k])) {
board[i][k + 1] = board[i][k];
board[i][k] = Empty;
k++;
}
while (k - 1 >= 0 && board[i][k + 1]==(board[i][k])) {
board[i][k + 1] = board[i][k];
board[i][k] = Empty;
k--;
}

}
}
}

System.out.println("Moving right");
printBoard();
isWin();
}
public boolean isWin(){
Map<Character, Integer> colorsNum = new HashMap<>();

for (int i = 0; i < rows; i++) {


for (int j = 0; j < cols; j++) {
char cell = board[i][j];
if (cell==(Wall) || cell==(Empty)) {
continue;
}
colorsNum.put(cell, colorsNum.getOrDefault(cell, 0) + 1);
}
}

for (int i : colorsNum.values()) {


if (i != 1) {
return false;
}
}
System.out.println(" (; (: you WIN the game :) ;)");
return true;

}
public void restartGame() {
System.out.println("Restarting the game...");
saveInitialState();
resetToInitialState();
}

import java.util.HashMap;
import java.util.Map;

public class Actions extends Board{

char Empty ='.';


char Wall = '#';

public Actions(Board board) {


super(board.rows, board.cols);
this.board = board.board;
}

public void moveUp() {

for(int i=rows-1 ; i>0; i--){


for(int j=0 ;j<cols; j++) {
if ( board[i][j]!=(Wall) && board[i][j]!=(Empty) && board[i -
1][j]==(Empty)){
board[i-1][j] = board[i][j];
board[i][j] = Empty;

} else if (board[i][j]!=(Wall) && board[i][j]!=(Empty) &&


board[i - 1][j]!=(Empty) && board[i - 1][j]!=(Wall) && board[i - 1][j]!=(board[i]
[j])) {
int k = i;
while (k - 1 >= 0 && board[k][j] != Empty && board[k - 1]
[j]==(Empty)) {
board[k - 1][j] = board[k][j];
board[k][j] = Empty;
k--;
}
if (k - 1 >= 0 && board[k - 1][j]==(Empty)) {
board[k - 1][j] = board[k][j];
board[k][j] = Empty;
}

} else if(board[i][j]!=(Wall) && board[i][j]!=(Empty) &&


board[i - 1][j]!=(Empty) && board[i - 1][j]!=(Wall) && board[i - 1][j]==(board[i]
[j])){
board[i - 1][j] = board[i][j];
board[i][j] = Empty;

int k = i;
while (k - 1 >=0 && board[k - 1][j]==(board[i][j])) {
board[k - 1][j] = board[i][j];
board[k][j] = Empty;
k--;
}
if (k - 1 >= 0 && board[k - 1][j]==(board[i][j])) {
board[k - 1][j] = board[k][j];
board[k][j] = Empty;
}

}
}
}
System.out.println("Moving up");
printBoard();
isWin();
}

public void moveDown() {


for(int i=0 ; i<rows-1 ; i++){
for(int j=0 ;j<cols; j++){
if (board[i][j]!=(Wall) && board[i][j]!=(Empty) && board[i + 1]
[j]==(Empty)){
board[i+1][j] = board[i][j];
board[i][j] = Empty;

} else if (board[i][j]!=(Wall) && board[i][j]!=(Empty) &&


board[i + 1][j]!=(Empty) && board[i + 1][j]!=(Wall) && board[i + 1][j]!=(board[i]
[j])) {
int k = i;
while (k + 1 < rows && board[k + 1][j]==(Empty)) {
board[k + 1][j] = board[i][j];
board[k][j] = Empty;
k++;
}
if (k + 1 < rows && board[k + 1][j]==(Empty)) {
board[k + 1][j] = board[i][j];
board[k][j] = Empty;
}

} else if(board[i][j]!=(Wall) && board[i][j]!=(Empty) &&


board[i + 1][j]!=(Empty) && board[i + 1][j]!=(Wall) && board[i + 1][j]==(board[i]
[j])){
board[i + 1][j] = board[i][j];
board[i][j] = Empty;

int k = i;
while (k + 1 < rows && board[k + 1][j]==(board[k][j])) {
board[k + 1][j] = board[k][j];
board[k][j] = Empty;
k++;
}
if (k + 1 < rows && board[k + 1][j]==(board[k][j])) {
board[k + 1][j] = board[k][j];
board[k][j] = Empty;
}

}
}
}
System.out.println("Moving down");
printBoard();
isWin();

public void moveLeft() {


for (int i = 0; i < rows; i++) {
for (int j = cols -1; j > 0; j--) {
if (board[i][j]!=(Wall) && board[i][j]!=(Empty) && board[i ][j-
1]==(Empty)){
board[i][j- 1] = board[i][j];
board[i][j] = Empty;

} else if (board[i][j]!=(Wall) && board[i][j]!=(Empty) &&


board[i][j-1]!=(Empty) && board[i ][j-1]!=(Wall) && board[i][j - 1]!=(board[i][j]))
{
int k = j;
while (k - 1 >=0 && board[i][k] != Empty && board[i][k -
1]==(Empty)) {
board[i][k - 1] = board[i][k];
board[i][k] = Empty;
k--;
}
if (k - 1 >=0 && board[i][k] != Empty && board[i][k -
1]==(Empty)) {
board[i][k - 1] = board[i][k];
board[i][k] = Empty;
}

} else if(board[i][j]!=(Wall) && board[i][j]!=(Empty) &&


board[i][j - 1]!=(Empty) && board[i][j- 1]!=(Wall) && board[i][j- 1]==(board[i]
[j])){
int k = j;
while (k - 1>=0 && board[i][k + 1]==(Empty)) {
board[i][k + 1] = board[i][k];
board[i][k] = Empty;
k--;
}
if (k - 1>=0 && board[i][k + 1]==(Empty)) {
board[i][k + 1] = board[i][k];
board[i][k] = Empty;
}
}
}
}

System.out.println("Moving left");
printBoard();
isWin();
}

public void moveRight() {


for(int i=0 ; i<rows ; i++) {
for(int j=0 ;j<cols-1; j++){
if (board[i][j]!=(Wall) && board[i][j]!=(Empty) && board[i ][j+
1]==(Empty)){
board[i][j+ 1] = board[i][j];
board[i][j] = Empty;

} else if (board[i][j]!=(Wall) && board[i][j]!=(Empty) &&


board[i][j+1]!=(Empty) && board[i ][j+1]!=(Wall) && board[i][j + 1]!=(board[i][j]))
{
int k = j;
while (k + 1 < cols && board[i][k + 1]==(Empty)) {
board[i][k + 1] = board[i][k];
board[i][k] = Empty;
k++;
}
if (k + 1 < cols && board[i][k + 1]==(Empty)) {
board[i][k + 1] = board[i][k];
board[i][k] = Empty;
}

} else if(board[i][j]!=(Wall) && board[i][j]!=(Empty) &&


board[i][j + 1]!=(Empty) && board[i][j+ 1]!=(Wall) && board[i][j+ 1]==(board[i]
[j])){
int k = j;
while (k + 1 < cols && board[i][k + 1]==(board[i][k])) {
board[i][k + 1] = board[i][k];
board[i][k] = Empty;
k++;
}
if (k + 1 < cols && board[i][k + 1]==(board[i][k])) {
board[i][k + 1] = board[i][k];
board[i][k] = Empty;
}

}
}
}

System.out.println("Moving right");
printBoard();
isWin();
}
public boolean isWin(){
Map<Character, Integer> colorsNum = new HashMap<>();

for (int i = 0; i < rows; i++) {


for (int j = 0; j < cols; j++) {
char cell = board[i][j];
if (cell==(Wall) || cell==(Empty)) {
continue;
}
colorsNum.put(cell, colorsNum.getOrDefault(cell, 0) + 1);
}
}

for (int i : colorsNum.values()) {


if (i != 1) {
return false;
}
}
System.out.println(" (; (: you WIN the game :) ;)");
return true;
}
public void restartGame() {
System.out.println("Restarting the game...");
saveInitialState();
resetToInitialState();
}

You might also like