Paso 7: El código: Resumen
La carne del código es bastante simple. Tengo una matriz para cada tipo de rotor, entonces sólo necesitaba hacer un seguimiento de qué rotor estaba en qué ranura y posición del rotor estaba actualmente en. Probablemente la forma más fácil de averiguar lo que el código tiene que hacer es ir a través del ejemplo de esta máquina de papel de enigma. http://mckoss.com/Crypto/Paper%20Enigma.pdf . Básicamente debemos tomar el índice de entrada, ver qué letra es en ese punto, entonces averiguar qué ranura que debe asignar a (básicamente es el donde la letra termina en un arsenal de caracteres del alfabeto y el desplazamiento del rotor).El código también debe manejar los rotores en movimiento. El derecho de rotor más mueve un punto cada vez que se pulsa una tecla. El rotor medio se mueve cuando la derecha rotor más un determinado valor (por lo que se convertirá en 1/26 de los tiempos de que la gira). El rotor izquierdo gira 1/26 de los tiempos que da vuelta el rotor del centro. Para ello tengo un int que realiza un seguimiento de la posición actual del rotor y añadir uno a él cuando necesitan hacer. Cuando llegan a 26 los puse a 0 (fue todo el camino alrededor del rotor por lo que estamos empezando otra vez).
A intercambiar rotores simplemente strncpy las constantes del rotor el rotor en la posición.
Usted notará que utiliza mucho código de ejemplo en mi código para hacer cosas como reproducir tonos, obtener valores de teclado y dirección del LCD I2C. Yo soy un gran fan de las bibliotecas y código de ejemplo.