Vamos a programar #46 - Código Bacon (ver Java android)
Hola de nuevo a todos, el día de hoy vamos a ver un poco mas sobre el código Bacon y cómo implementar una aplicación en android que haga todo el trabajo sucio por nosotros.
En post anteriores vimos cómo hacer la misma aplicación para C# (escritorio) y Javascript (Web), en esta ocasión, todo el post será solo para mostrar la app, puesto que las funciones que se emplean son exactamente las mismas que la versión de C#. El código completo es el siguiente:
Cómo notarás, no hay ningún cambio significativo (y no lo habrá en unos días debido a que mi PC murió y no cuento con el tiempo cómo para arreglarlo). Por ahora dejo el código fuente y el APK ya compilado para que los descargues de mi dropbox. Las actualizaciones se harán juntas para las 3 versiones en alguno de los próximos post
Por ahora es todo, los leo luego.
En post anteriores vimos cómo hacer la misma aplicación para C# (escritorio) y Javascript (Web), en esta ocasión, todo el post será solo para mostrar la app, puesto que las funciones que se emplean son exactamente las mismas que la versión de C#. El código completo es el siguiente:
package com.mdev.baconiancipher; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; public class MainActivity extends Activity { EditText ETInput, ETInput2, ETPreResult, ETResult; Button BtnPreCipher, BtnCipher; String[] Values = new String[]{"AAAAA", "AAAAB", "AAABA", "AAABB", "AABAA", "AABAB", "AABBA", "AABBB", "ABAAA", "ABAAA", "ABAAB", "ABABA", "ABABB", "ABBAA", "ABBAB", "ABBBA", "ABBBB", "BAAAA", "BAAAB", "BAABA", "BAABB", "BAABB", "BABAA", "BABAB", "BABBA", "BABBB"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ETInput = findViewById(R.id.ETInput); ETInput2 = findViewById(R.id.ETInput2); ETPreResult = findViewById(R.id.ETPreResult); ETResult = findViewById(R.id.ETResult); BtnPreCipher = findViewById(R.id.BtnPreCipher); BtnCipher = findViewById(R.id.BtnCipher); BtnPreCipher.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ETPreResult.setText(CharToBaconianCode(ETInput.getText().toString())); } } ); BtnCipher.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ETResult.setText(FinalCipher(ETPreResult.getText().toString(),ETInput2.getText().toString())); } }); } private String CharToBaconianCode(String Input) { Input = Input.toUpperCase(); char[] Letras = Input.toCharArray(); String OutValue = ""; for (int X = 0; X < Letras.length; X++) { if ((byte)Letras[X] < 91 && (byte)Letras[X] > 64) { OutValue += Values[(byte)Letras[X] - 65];// + " "; } } return OutValue; } private boolean IsLower(byte Code) { if (Code > 96 && Code < 123) return true; else return false; } private String FinalCipher(String PreCipher, String Phrase) { if (PreCipher.length() != Phrase.length()) { ShowDialog("Error","Las longitudes del pre-cifrado y la frase para insertarlo no coinciden"); return "Error"; } char[] PreCipherChars = PreCipher.toCharArray(); char[] PhraseChars = Phrase.toCharArray(); String FinalResult = ""; for (int Y = 0; Y < PhraseChars.length; Y++) { if ((byte)PreCipherChars[Y] == 65) { if (IsLower((byte)PhraseChars[Y])) FinalResult += PhraseChars[Y]; else FinalResult += (char)(PhraseChars[Y] + 32); } else { if (!IsLower((byte)PhraseChars[Y])) FinalResult += PhraseChars[Y]; else FinalResult += (char)(PhraseChars[Y] - 32); } } return FinalResult; } //Mostrar dialog de manera sencilla private void ShowDialog(String Title, String Caption) { new AlertDialog.Builder(this) .setTitle(Title) .setMessage(Caption) .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { // algo } }) .setIcon(android.R.drawable.ic_dialog_alert) .show(); } }
Cómo notarás, no hay ningún cambio significativo (y no lo habrá en unos días debido a que mi PC murió y no cuento con el tiempo cómo para arreglarlo). Por ahora dejo el código fuente y el APK ya compilado para que los descargues de mi dropbox. Las actualizaciones se harán juntas para las 3 versiones en alguno de los próximos post
Por ahora es todo, los leo luego.
No hay comentarios.