private boolean gameTerminated(Model model) {
		
		boolean stuckUp = false;
		boolean stuckDown = false;
		boolean stuckLeft = false;
		boolean stuckRight = false;
		
		int[][] temp = copyArray(model.getData());
		Model modelCopy1 = new Game2048Model((Game2048Model)model);
		int[][] copyArrayModel1 = copyArray(modelCopy1.getData());
		Model modelCopy2 = new Game2048Model((Game2048Model)model);
		int[][] copyArrayModel2 = copyArray(modelCopy1.getData());
		Model modelCopy3 = new Game2048Model((Game2048Model)model);
		int[][] copyArrayModel3 = copyArray(modelCopy1.getData());
		Model modelCopy4 = new Game2048Model((Game2048Model)model);
		int[][] copyArrayModel4 = copyArray(modelCopy1.getData());
		
		//check if win or if there empty cell
		for(int i = 0; i < temp.length; i++){
			for(int j = 0; j < temp[0].length; j++){
				if(temp[i][j] == 2048){
					return true;
				}
				if(temp[i][j] == 0){
					return false;
				}
			}
		}
		
		//check if stuck for all sides (up,down,Right,Left)
		modelCopy1.doUserCommand(1);
		if(isEqual(modelCopy1.getData(), copyArrayModel1)){
			stuckUp = true;
		}
		modelCopy2.doUserCommand(2);
		if(isEqual(modelCopy2.getData(), copyArrayModel2)){
			stuckDown = true;
		}
		modelCopy3.doUserCommand(3);
		if(isEqual(modelCopy3.getData(), copyArrayModel3)){
			stuckRight = true;
		}
		modelCopy4.doUserCommand(4);
		if(isEqual(modelCopy4.getData(), copyArrayModel4)){
			stuckLeft = true;
		}
		
		return (stuckUp && stuckDown && stuckRight && stuckLeft);
	}