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

import java.util.HashMap;

Uploaded by

raneemmahmoud333
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views

import java.util.HashMap;

Uploaded by

raneemmahmoud333
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
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